List of usage examples for org.apache.pdfbox.pdmodel.common PDRectangle getLowerLeftX
public float getLowerLeftX()
From source file:com.fileOperations.EmailBodyToPDF.java
/** * Places the text of the email into the PDF * * @param eml EmailBodyPDF//from w w w . j ava2s . c o m */ private static void createEmailBody(EmailBodyPDF eml) { PDDocument doc = null; PDPageContentStream contentStream = null; //Fonts used PDFont bodyTitleFont = PDType1Font.TIMES_BOLD; PDFont bodyFont = PDType1Font.TIMES_ROMAN; //Font Sizes float emailHeaderFontSize = 7; float leadingEmailHeader = 1.5f * emailHeaderFontSize; float bodyFontSize = 12; float leadingBody = 1.5f * bodyFontSize; try { //Create Document, Page, Margins. doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); PDRectangle mediabox = page.getMediaBox(); float margin = 72; float width = mediabox.getWidth() - 2 * margin; float startX = mediabox.getLowerLeftX() + margin; float startY = mediabox.getUpperRightY() - margin; float textYlocation = margin; //Set Line Breaks List<String> sentDateContent = PDFBoxTools.setLineBreaks(eml.getSentDate(), width, emailHeaderFontSize, bodyFont); List<String> recievedDateContent = PDFBoxTools.setLineBreaks(eml.getReceiveDate(), width, emailHeaderFontSize, bodyFont); List<String> toContent = PDFBoxTools.setLineBreaks(eml.getTo(), width, emailHeaderFontSize, bodyFont); List<String> fromContent = PDFBoxTools.setLineBreaks(eml.getFrom(), width, emailHeaderFontSize, bodyFont); List<String> ccContent = PDFBoxTools.setLineBreaks(eml.getCc(), width, emailHeaderFontSize, bodyFont); List<String> bccContent = PDFBoxTools.setLineBreaks(eml.getBcc(), width, emailHeaderFontSize, bodyFont); List<String> attachmentContent = PDFBoxTools.setLineBreaks(eml.getAttachments(), width, emailHeaderFontSize, bodyFont); List<String> subjectContent = PDFBoxTools.setLineBreaks(eml.getSubject(), width, bodyFontSize, bodyFont); List<String> bodyContent = PDFBoxTools.setLineBreaks(eml.getBody(), width, bodyFontSize, bodyFont); //Set Email Header contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); //Set Date Sent if (!"".equals(eml.getSentDate())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("Date Sent: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : sentDateContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set Date Received if (!"".equals(eml.getReceiveDate().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("Date Received: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : recievedDateContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingBody; } } contentStream.newLineAtOffset(0, -leadingBody); //Set From if (!"".equals(eml.getFrom().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("From: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : fromContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set To if (!"".equals(eml.getTo().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("To: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : toContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set CC if (!"".equals(eml.getCc().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("CC: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : ccContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set BCC if (!"".equals(eml.getBcc().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("BCC: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : bccContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set AttachmentList if (!"".equals(eml.getAttachments().trim())) { contentStream.setFont(bodyTitleFont, emailHeaderFontSize); contentStream.showText("Attachments: "); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; for (String line : attachmentContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingEmailHeader); textYlocation += leadingEmailHeader; } } //Set Subject if (!"".equals(eml.getSubject().trim())) { contentStream.newLineAtOffset(0, -leadingBody); contentStream.newLineAtOffset(0, -leadingBody); contentStream.setFont(bodyTitleFont, bodyFontSize); contentStream.showText("Subject: "); contentStream.newLineAtOffset(0, -leadingBody); textYlocation += leadingBody; contentStream.setFont(bodyFont, bodyFontSize); for (String line : subjectContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingEmailHeader)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, emailHeaderFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingBody); textYlocation += leadingBody; } } if (!"".equals(eml.getBody().trim())) { // Set Email Body contentStream.newLineAtOffset(0, -leadingBody); contentStream.setFont(bodyTitleFont, bodyFontSize); contentStream.showText("Message: "); contentStream.setFont(bodyFont, bodyFontSize); contentStream.newLineAtOffset(0, -leadingBody); for (String line : bodyContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingBody)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, bodyFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } textYlocation += leadingBody; contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingBody); } contentStream.endText(); } contentStream.close(); doc.save(eml.getFilePath() + eml.getFileName()); } catch (IOException ex) { ExceptionHandler.Handle(ex); } finally { if (doc != null) { try { doc.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); } } } }
From source file:com.fileOperations.TXTtoPDF.java
/** * Takes the text from the string and insert it into the PDF file * * @param pdfFile String (path + filename) * @param text String (text from document) *//*from w w w .j av a 2 s .com*/ private static void makePDF(String pdfFile, String text) { PDDocument doc = null; PDPageContentStream contentStream = null; //Fonts used PDFont bodyFont = PDType1Font.TIMES_ROMAN; //Font Sizes float bodyFontSize = 12; float leadingBody = 1.5f * bodyFontSize; try { //Create Document, Page, Margins. doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, false); PDRectangle mediabox = page.getMediaBox(); float margin = 72; float width = mediabox.getWidth() - 2 * margin; float startX = mediabox.getLowerLeftX() + margin; float startY = mediabox.getUpperRightY() - margin; float textYlocation = margin; //Set Line Breaks text = text.replaceAll("[\\p{C}\\p{Z}]", System.getProperty("line.separator")); //strip ZERO WIDTH SPACE List<String> textContent = PDFBoxTools.setLineBreaks(text, width, bodyFontSize, bodyFont); contentStream.beginText(); contentStream.setFont(bodyFont, bodyFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); if (!"".equals(text)) { for (String line : textContent) { if (textYlocation > (mediabox.getHeight() - (margin * 2) - leadingBody)) { contentStream.endText(); contentStream.close(); textYlocation = 0; page = new PDPage(); doc.addPage(page); contentStream = new PDPageContentStream(doc, page, true, true, false); contentStream.beginText(); contentStream.setFont(bodyFont, bodyFontSize); contentStream.setNonStrokingColor(Color.BLACK); contentStream.newLineAtOffset(startX, startY); } textYlocation += leadingBody; contentStream.showText(line); contentStream.newLineAtOffset(0, -leadingBody); } contentStream.endText(); } contentStream.close(); doc.save(pdfFile); } catch (IOException ex) { ExceptionHandler.Handle(ex); } finally { if (doc != null) { try { doc.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); } } } }
From source file:com.formkiq.core.service.conversion.PdfToPngFormatConverter.java
License:Apache License
/** * Find {@link PDSignatureField} on the Image. * @param doc {@link PDDocument}/*from w w w .j ava 2s . co m*/ * @param result {@link ConversionResult} * @return {@link List} of {@link ConversionField} * @throws IOException IOException */ private List<ConversionField> findSigningButtons(final PDDocument doc, final ConversionResult result) throws IOException { List<ConversionField> fields = new ArrayList<>(); List<PDSignatureField> sigs = doc.getSignatureFields(); for (PDSignatureField s : sigs) { PDRectangle rect = PDRectangleUtil.calculateWidget(s.getWidgets()); PDAnnotationWidget widget = s.getWidgets().get(0); PDPage page = widget.getPage(); int pageNumber = doc.getPages().indexOf(page); float imagePageSize = result.getDataheight() / doc.getNumberOfPages(); float x = rect.getLowerLeftX(); float y = (imagePageSize - rect.getUpperRightY()) + (imagePageSize * pageNumber); ConversionField f = new ConversionField(); f.setDocumentfieldname(s.getFullyQualifiedName()); f.setX(x); f.setY(y); f.setHeight(rect.getHeight()); fields.add(f); } return fields; }
From source file:com.formkiq.core.service.generator.pdfbox.PdfTextFieldHorizontalGroupComparator.java
License:Apache License
@Override public int compare(final PdfTextField t1, final PdfTextField t2) { PDRectangle r1 = t1.getRectangle();/*from ww w . j av a 2 s .co m*/ PDRectangle r2 = t2.getRectangle(); int r = Float.compare(t1.getFontSize(), t2.getFontSize()); if (r == 0) { int v1 = Math.round(r1.getUpperRightY()); int v2 = Math.round(r2.getUpperRightY()); r = Integer.compare(v2, v1); } if (r == 0) { int d0 = round(abs(r1.getUpperRightX() - r2.getLowerLeftX())); int d1 = round(abs(r2.getUpperRightX() - r1.getLowerLeftX())); r = d0 < t1.getFontSize() || d1 < t1.getFontSize() ? 0 : -1; } return r; }
From source file:com.formkiq.core.service.generator.pdfbox.PdfTextFieldTextGroupComparator.java
License:Apache License
@Override public int compare(final PdfTextField o1, final PdfTextField o2) { PDRectangle r1 = o1.getRectangle(); PDRectangle r2 = o2.getRectangle();// w w w .j a v a2s. co m int v1 = Math.round(r1.getLowerLeftX()); int v2 = Math.round(r2.getLowerLeftX()); int r = Integer.compare(v1, v2); if (r == 0) { r = Float.compare(o1.getFontSize(), o2.getFontSize()); } if (r == 0) { r = o1.getFontName().compareTo(o2.getFontName()); } // check if lower position if within Y location + font size away from // text above if (r == 0) { float diff0 = Math.abs(r1.getLowerLeftY() - r2.getUpperRightY()); float diff1 = Math.abs(r1.getUpperRightY() - r2.getLowerLeftY()); r = diff0 <= o2.getFontSize() || diff1 <= o2.getFontSize() ? 0 : -1; } return r; }
From source file:com.formkiq.core.service.generator.pdfbox.PdfTextFieldTextXYComparator.java
License:Apache License
@Override public int compare(final PdfTextField o1, final PdfTextField o2) { PDRectangle r1 = o1.getRectangle(); PDRectangle r2 = o2.getRectangle();//from w w w. ja va2s. co m int v1 = Math.round(r1.getLowerLeftX()); int v2 = Math.round(r2.getLowerLeftX()); int r = Integer.compare(v1, v2); if (r == 0) { v1 = Math.round(r1.getLowerLeftY()); v2 = Math.round(r2.getLowerLeftY()); r = Integer.compare(v2, v1); } return r; }
From source file:com.formkiq.core.service.generator.pdfbox.PdfTextFieldTextYXComparator.java
License:Apache License
@Override public int compare(final PdfTextField o1, final PdfTextField o2) { PDRectangle r1 = o1.getRectangle(); PDRectangle r2 = o2.getRectangle();/*from w ww . j a v a 2 s . c om*/ int v1 = Math.round(r1.getLowerLeftY()); int v2 = Math.round(r2.getLowerLeftY()); int r = Integer.compare(v1, v2); if (r == 0) { v1 = Math.round(r1.getLowerLeftX()); v2 = Math.round(r2.getLowerLeftX()); r = Integer.compare(v2, v1); } return r; }
From source file:com.formkiq.core.service.generator.pdfbox.PDRectangleUtil.java
License:Apache License
/** * Calculate the Distance between two {@link PDRectangle}. * @param r1 {@link PDRectangle}//w ww. ja va 2 s. c om * @param r2 {@link PDRectangle} * @return float */ public static float getDistanceBetween(final PDRectangle r1, final PDRectangle r2) { float dx = min( min(abs(r1.getLowerLeftX() - r2.getLowerLeftX()), abs(r1.getUpperRightX() - r2.getUpperRightX())), min(abs(r1.getLowerLeftX() - r2.getUpperRightX()), abs(r1.getUpperRightX() - r2.getLowerLeftX()))); float dy = min( min(abs(r1.getLowerLeftY() - r2.getLowerLeftY()), abs(r1.getUpperRightY() - r2.getUpperRightY())), min(abs(r1.getLowerLeftY() - r2.getUpperRightY()), abs(r1.getUpperRightY() - r2.getLowerLeftY()))); return dx + dy; }
From source file:com.formkiq.core.service.generator.pdfbox.PDRectangleUtil.java
License:Apache License
/** * Do 2 {@link PDRectangle} intersect.//from w w w . j ava 2s . com * @param r1 {@link PDRectangle} * @param r2 {@link PDRectangle} * @return boolean */ public static boolean isIntersection(final PDRectangle r1, final PDRectangle r2) { return r1 != null && r2 != null && r1.getLowerLeftX() < r2.getLowerLeftX() + r2.getWidth() && r1.getLowerLeftX() + r1.getWidth() > r2.getLowerLeftX() && r1.getLowerLeftY() < r2.getLowerLeftY() + r2.getHeight() && r1.getLowerLeftY() + r1.getHeight() > r2.getLowerLeftY(); }
From source file:com.formkiq.core.service.generator.pdfbox.PDRectangleXComparator.java
License:Apache License
@Override public int compare(final PDRectangle r1, final PDRectangle r2) { return Float.compare(r1.getLowerLeftX(), r2.getLowerLeftX()); }