Example usage for org.apache.pdfbox.pdmodel.common PDRectangle getHeight

List of usage examples for org.apache.pdfbox.pdmodel.common PDRectangle getHeight

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel.common PDRectangle getHeight.

Prototype

public float getHeight() 

Source Link

Document

This will get the height of this rectangle as calculated by upperRightY - lowerLeftY.

Usage

From source file:com.fileOperations.EmailBodyToPDF.java

/**
 * Places the text of the email into the PDF
 *
 * @param eml EmailBodyPDF/*from   w w w.j  av  a 2s.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  ww  w .  ja  va 2  s  .co m
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}/*  w  w  w  .j  a  v a2  s  . c  o  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.PDRectangleUtil.java

License:Apache License

/**
 * Do 2 {@link PDRectangle} intersect./* ww w  . j a v a 2 s. co  m*/
 * @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.TextSearchAreaFilterDefault.java

License:Apache License

/**
 * Calculate Horziontal Matching Rectangle by field type.
 *
 * @param page {@link PDPage}//from  ww  w  . j av a 2 s. c  om
 * @param field {@link PDField}
 * @param w {@link PDAnnotationWidget}
 * @return {@link PDRectangle}
 */
private PDRectangle getHorizontalRectangle(final PDPage page, final PDField field, final PDAnnotationWidget w) {

    PDRectangle wrect = w.getRectangle();
    PDRectangle rect = new PDRectangle(0, wrect.getLowerLeftY(), wrect.getWidth() + wrect.getLowerLeftX(),
            wrect.getHeight());

    if (field instanceof PDCheckBox) {
        rect = new PDRectangle(0, wrect.getLowerLeftY(), page.getMediaBox().getWidth(), wrect.getHeight());
    }

    return rect;
}

From source file:com.formkiq.core.service.generator.pdfbox.TextSearchAreaFilterDefault.java

License:Apache License

/**
 * Calculate Vertical Matching Rectangle by field type.
 *
 * @param field {@link PDField}//from  w w  w .  j a  va  2 s.c  om
 * @param w {@link PDAnnotationWidget}
 * @return {@link PDRectangle}
 */
private PDRectangle getVerticalRectangle(final PDField field, final PDAnnotationWidget w) {

    PDRectangle rect = null;

    if (!(field instanceof PDCheckBox)) {

        PDRectangle wrect = w.getRectangle();
        float addition = 2 * wrect.getHeight();

        rect = new PDRectangle(wrect.getLowerLeftX() - addition, wrect.getLowerLeftY(),
                wrect.getWidth() + addition, wrect.getHeight() + addition);
    }

    return rect;
}

From source file:com.helger.pdflayout.spec.SizeSpec.java

License:Apache License

@Nonnull
public static SizeSpec create(@Nonnull final PDRectangle aRect) {
    return new SizeSpec(aRect.getWidth(), aRect.getHeight());
}

From source file:com.jaeksoft.searchlib.util.pdfbox.PDFBoxHighlighter.java

License:Open Source License

@Override
protected void startPage(PDPage page) throws IOException {
    super.startPage(page);
    PDRectangle rect = page.findCropBox();
    xFactor = imageDimension.width / rect.getWidth();
    yFactor = imageDimension.height / rect.getHeight();
}

From source file:com.PDF.Resume.java

public ByteArrayOutputStream createResume() throws ParseException, IOException, COSVisitorException {
    System.out.println(imagePath);

    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page1 = new PDPage(PDPage.PAGE_SIZE_A4);
    // PDPage.PAGE_SIZE_LETTER is also possible
    PDRectangle rect = page1.getMediaBox();
    // rect can be used to get the page width and height
    document.addPage(page1);/*w  ww. ja  v  a  2s . co m*/

    // Create a new font object selecting one of the PDF base fonts
    PDFont fontPlain = PDType1Font.HELVETICA;

    // Start a new content stream which will "hold" the to be created content
    PDPageContentStream cos = new PDPageContentStream(document, page1);

    int line = 0;

    // Define a text content stream using the selected font, move the cursor and draw some text
    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line));
    cos.drawString("Pagina " + ++pagenumber);
    cos.endText();
    line--;

    cos.beginText();
    cos.setFont(fontPlain, 24);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line));
    cos.drawString("Curriculum Vitae");
    cos.endText();

    if (user != null) {
        cos.beginText();
        cos.setFont(fontPlain, 24);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line));
        cos.drawString(user.getSurname() + "");
        cos.endText();
    }

    // add an image
    try {
        BufferedImage awtImage = ImageIO.read(new File(
                "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png"));
        PDXObjectImage ximage = new PDPixelMap(document, awtImage);
        float scale = 1f; // alter this value to set the image size
        cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale);
    } catch (FileNotFoundException fnfex) {
        System.out.println("No image for you");
    }
    // Make sure that the content stream is closed:
    cos.close();

    //second page
    line = 0;
    PDPage page2 = new PDPage(PDPage.PAGE_SIZE_A4);
    document.addPage(page2);
    cos = new PDPageContentStream(document, page2);

    try {
        BufferedImage awtImage = ImageIO.read(new File(
                "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png"));
        PDXObjectImage ximage = new PDPixelMap(document, awtImage);
        float scale = 1f; // alter this value to set the image size
        cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale);
    } catch (FileNotFoundException fnfex) {
        System.out.println("No image for you");
    }

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line));
    cos.drawString("Pagina " + ++pagenumber);
    cos.endText();

    line--;

    cos.beginText();
    cos.setFont(fontPlain, 18);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line));
    cos.drawString("Personalia");
    cos.endText();
    line += 4;

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Naam:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getSurname() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Geslacht:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getGender() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Telefoonnummer:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getPersonalPhone() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Emailadres:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getPersonalEmail() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Adres:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getAddress() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Postcode:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getZipCode() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Stad:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getCity() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Provincie:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getRegion() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Functie:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getFunction() + "");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
    cos.drawString("Business Unit:");
    cos.endText();

    cos.beginText();
    cos.setFont(fontPlain, 12);
    cos.setNonStrokingColor(0, 120, 201);
    cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
    cos.drawString(user.getBusinessUnitAsString() + "");
    cos.endText();

    if (!educationList.isEmpty()) {
        line++;
        cos.beginText();
        cos.setFont(fontPlain, 18);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
        cos.drawString("Opleidingen");
        cos.endText();
        for (EmployeeHasEducation e : educationList) {
            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("School:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(e.getEducation().getSchool() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Richting:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(e.getEducation().getDegree() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Niveau:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(e.getEducation().getGrade() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Begindatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(e.getStartDate().substring(0, 10) + "");

            cos.endText();
            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Einddatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(e.getEndDate().substring(0, 10) + "");
            cos.endText();

        }
    }
    if (!certificateList.isEmpty()) {
        line++;
        cos.beginText();
        cos.setFont(fontPlain, 18);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
        cos.drawString("Certificaten");
        cos.endText();
        for (Certificate c : certificateList) {
            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Certificaat naam:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(c.getName() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Certificaat plaats:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(c.getCertificationAuthority() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Licentienummer:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(c.getLicenseNumber() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Startdatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(c.getStartDate().substring(0, 10) + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Einddatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(c.getExpirationDate().substring(0, 10) + "");
            cos.endText();
            line++;
        }
        line++;
    }

    cos.close();
    if (!preceedings.isEmpty()) {
        line = 0;
        PDPage page3 = new PDPage(PDPage.PAGE_SIZE_A4);
        document.addPage(page3);
        cos = new PDPageContentStream(document, page3);

        try {
            BufferedImage awtImage = ImageIO.read(new File(
                    "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png"));
            PDXObjectImage ximage = new PDPixelMap(document, awtImage);
            float scale = 1f; // alter this value to set the image size
            cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale);
        } catch (FileNotFoundException fnfex) {
            System.out.println("No image for you");
        }

        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line));
        cos.drawString("Pagina " + ++pagenumber);
        cos.endText();

        line--;

        cos.beginText();
        cos.setFont(fontPlain, 18);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 100 * (++line));
        cos.drawString("Projecten");
        line += 4;
        cos.endText();

        for (Preceeding p : preceedings) {
            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Projectnaam:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(p.getProject().getName() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Bedrijfsnaam:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(p.getProject().getCompany().getName() + " ");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Project rol:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(p.getDescription() + "");
            cos.endText();
            //    }

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Startdatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(p.getProject().getStartDate() + "");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
            cos.drawString("Einddatum:");
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line));
            cos.drawString(p.getProject().getEndDate() + "");
            cos.endText();

            line++;
        }
    }
    cos.close();
    //Skills of the user
    if (!skillList.isEmpty()) {

        line = 0;
        PDPage page3 = new PDPage(PDPage.PAGE_SIZE_A4);
        document.addPage(page3);
        cos = new PDPageContentStream(document, page3);

        try {
            BufferedImage awtImage = ImageIO.read(new File(
                    "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png"));
            PDXObjectImage ximage = new PDPixelMap(document, awtImage);
            float scale = 1f; // alter this value to set the image size
            cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale);
        } catch (FileNotFoundException fnfex) {
            System.out.println("No image for you");
        }

        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line));
        cos.drawString("Pagina " + ++pagenumber);
        cos.endText();

        line--;

        cos.beginText();
        cos.setFont(fontPlain, 18);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 100 * (++line));
        cos.drawString("Skills");
        cos.endText();
        line += 4;

        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
        cos.drawString("Skill & Rating:");
        cos.endText();
        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.setNonStrokingColor(0, 120, 201);
        cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line));
        cos.drawString("Jaren ervaring:");
        cos.endText();
        line -= 2;
        for (SkillRating s : skillList) {

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (++line));
            cos.drawString(s.getSkill().getName() + " niveau " + s.getRating());
            cos.endText();

            cos.beginText();
            cos.setFont(fontPlain, 12);
            cos.setNonStrokingColor(0, 120, 201);
            cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (++line));
            cos.drawString("" + s.getExpYears());
            cos.endText();
            line++;
        }
    }

    cos.close();
    ByteArrayOutputStream output = new ByteArrayOutputStream();

    document.save(output);

    document.close();

    return output;
}

From source file:com.przemo.pdfmanipulate.PDFBuilder.java

private static void renderForm(Formularz form, PDDocument doc) throws IOException {
    int i = 0;/*w ww  .  jav  a2  s . c  om*/
    PDFont f = PDType1Font.HELVETICA;
    float fontSize = 17.0f;
    for (FormPage page : form.getPages()) {
        PDPage pag = doc.getPage(i);
        PDRectangle pageSize = pag.getMediaBox();
        try (PDPageContentStream contentStream = new PDPageContentStream(doc, pag,
                PDPageContentStream.AppendMode.APPEND, false)) {
            contentStream.setFont(f, fontSize);
            contentStream.beginText();
            contentStream.setNonStrokingColor(Color.black);
            for (Pole p : page.getPola()) {
                int x = p.getPozycjaX();
                if (p.isRightAlign()) {
                    x -= f.getStringWidth(p.getWartosc()) / 1000 * fontSize;
                }
                contentStream
                        .setTextMatrix(Matrix.getTranslateInstance(x, pageSize.getHeight() - p.getPozycjaY()));
                contentStream.showText(p.getWartosc());
            }
            contentStream.endText();
        }
        i++;
    }

}