Example usage for org.apache.pdfbox.pdmodel PDDocument addPage

List of usage examples for org.apache.pdfbox.pdmodel PDDocument addPage

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel PDDocument addPage.

Prototype

public void addPage(PDPage page) 

Source Link

Document

This will add a page to the document.

Usage

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);

    // 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();//from   w  ww. j  a  v a  2 s  .  c  o m
    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.projectlaver.util.VoucherService.java

License:Open Source License

File generateVoucherPdf(String pdfFilename, File barcodeImageFile, VoucherDTO dto) {

    // the result 
    File pdfFile = null;/*from   w  ww.  jav  a2  s .c o m*/

    // the document
    PDDocument doc = null;
    try {
        // Create a new document and add a page to it
        doc = new PDDocument();
        PDPage page = new PDPage();
        doc.addPage(page);

        float pageWidth = page.getMediaBox().getWidth();
        float pageHeight = page.getMediaBox().getHeight();

        // For some reason this may need to happen after reading the image
        PDPageContentStream contentStream = new PDPageContentStream(doc, page);

        /**
         * Read & draw the client logo
         */
        this.drawImageWithMaxEdge(contentStream, 15f, 629, 150,
                this.readImage(new URL(dto.getClientLogoUrl()), doc));

        /**
         *  Read & draw the barcode image
         */

        BufferedImage bim = ImageIO.read(barcodeImageFile);
        PDXObjectImage barcodeImage = new PDPixelMap(doc, bim);

        // inspired by http://stackoverflow.com/a/22318681/535646
        float barcodeScale = 1f; // reduce this value if the image is too large

        this.drawImage(contentStream, 206f, 315f, barcodeImage, barcodeScale);

        /** 
         * Read & draw the social eq logo image
         */

        float logoScale = 0.15f; // reduce this value if the image is too large
        this.drawImage(contentStream, 246f, 265f, this.readImage(new URL(this.socialEqLogoUrl), doc),
                logoScale);

        /**
         * Read & draw the client image
         */
        this.drawImageWithMaxEdge(contentStream, 0f, 145, 612,
                this.readImage(new URL(dto.getClientCampaignImageUrl()), doc));

        /**
         * Add some rectangles to the page to set off the sections
         */

        contentStream.setNonStrokingColor(new Color(0.82f, 0.82f, 0.82f, 0.6f)); // light grey

        /**
         *  around the merchant logo / title
         */

        contentStream.fillRect(0, pageHeight - 10, pageWidth, 10); // top edge
        contentStream.fillRect(0, pageHeight - 175, pageWidth, 10); // bottom edge
        contentStream.fillRect(0, pageHeight - 175, 10, 175); // left edge
        contentStream.fillRect(170, pageHeight - 175, 10, 175); // right of the logo
        contentStream.fillRect(pageWidth - 10, pageHeight - 175, 10, 175); // right edge

        // behind the terms and conditions
        contentStream.fillRect(0f, 0f, pageWidth, 145f);

        /**
         *  Handle the text
         */

        // text color is black
        contentStream.setNonStrokingColor(Color.BLACK);

        // merchant name
        this.printNoWrap(page, contentStream, 195, 712, dto.getMerchantName(), 48);

        // listing title
        this.printNoWrap(page, contentStream, 195, 662, dto.getVoucherTitle(), 24);

        // Long description
        this.printNoWrap(page, contentStream, 30, 582, "Details:", 14);

        PdfParagraph ld = new PdfParagraph(30, 562, dto.getVoucherDetails(), 14);
        this.printLeftAlignedWithWrap(contentStream, ld);

        // Terms and conditions
        this.printNoWrap(page, contentStream, 30, 115, "Terms & Conditions:", 12);

        PdfParagraph toc = new PdfParagraph(30, 100, dto.getVoucherTerms(), 10);
        this.printLeftAlignedWithWrap(contentStream, toc);

        // Make sure that the content stream is closed:
        contentStream.close();

        String pdfPath = System.getProperty("java.io.tmpdir") + pdfFilename;
        doc.save(pdfPath);

        pdfFile = new File(pdfPath);

    } catch (Exception e) {

        throw new RuntimeException("Could not create the PDF File.", e);

    } finally {
        if (doc != null) {

            try {
                doc.close();
            } catch (IOException e) {
                throw new RuntimeException("Could not close the PDF Document.", e);
            }
        }
    }

    return pdfFile;
}

From source file:com.truckzoo.test.pdf.SuperimposePage.java

License:Apache License

public static void main(String[] args) throws IOException {
    /*if (args.length != 2)
    {// w  ww  .j ava  2 s .c  o  m
    System.err.println("usage: " + SuperimposePage.class.getName() +
            " <source-pdf> <dest-pdf>");
    System.exit(1);
    }*/
    String sourcePath = args[0];
    String destPath = args[1];

    PDDocument sourceDoc = null;
    try {
        // load the source PDF
        sourceDoc = PDDocument.load(new File(sourcePath));
        int sourcePage = 1;

        // create a new PDF and add a blank page
        PDDocument doc = new PDDocument();
        PDPage page = new PDPage();
        doc.addPage(page);

        // write some sample text to the new page
        PDPageContentStream contents = new PDPageContentStream(doc, page);
        contents.beginText();
        contents.setFont(PDType1Font.HELVETICA_BOLD, 12);
        contents.newLineAtOffset(2, PDRectangle.LETTER.getHeight() - 12);
        contents.showText("Sample text");
        contents.endText();

        // Create a Form XObject from the source document using LayerUtility
        LayerUtility layerUtility = new LayerUtility(doc);
        PDFormXObject form = layerUtility.importPageAsForm(sourceDoc, sourcePage - 1);

        // draw the full form
        contents.drawForm(form);

        // draw a scaled form
        contents.saveGraphicsState();
        Matrix matrix = Matrix.getScaleInstance(0.5f, 0.5f);
        contents.transform(matrix);
        contents.drawForm(form);
        contents.restoreGraphicsState();

        // draw a scaled and rotated form
        contents.saveGraphicsState();
        matrix.rotate(1.8 * Math.PI); // radians
        contents.transform(matrix);
        contents.drawForm(form);
        contents.restoreGraphicsState();

        contents.close();
        doc.save(destPath);
        doc.close();
    } finally {
        if (sourceDoc != null) {
            sourceDoc.close();
        }
    }
}

From source file:controladores3.controladorGenerarLiquidaciones.java

public boolean generarLiquidaciones()
        throws FileNotFoundException, TransformerException, IOException, FOPException {

    Thread runnable = new Thread() {
        public void run() {
            try {
                modeloFacturas rutas = new modeloFacturas();
                dfs.setCurrencySymbol("$ ");
                dfs.setGroupingSeparator('.');
                dfs.setMonetaryDecimalSeparator('.');
                ((DecimalFormat) FORMAT).setDecimalFormatSymbols(dfs);
                controladores.controladorPrincipal miControlador = new controladorPrincipal();
                modelos.modeloEmpleados liquidaciones = new modeloEmpleados();
                modelos3.modeloRemuneraciones remuneraciones = new modeloRemuneraciones();
                String[][] data = liquidaciones.obtenerRemuneraciones2(getMes(), getYear());
                String[][] imp2cat = remuneraciones.obtenerTablaImpuesto();
                //                    float uf = remuneraciones.obtenerUF() / 100;
                double uf = remuneraciones.obtenerUF();
                int numEmp = data.length;
                String path = "Liquidaciones " + per;
                File dir = new File(path);
                dir.mkdir();/*from   w  w  w  .j  ava 2s  .c  om*/
                //                    int bono300 = miControlador.obtenerBono300();
                for (int i = 0; i < numEmp; i++) {
                    String fileName = path + "/" + data[i][0] + ".pdf"; // name of our file
                    try {
                        PDDocument doc = new PDDocument(); // creating instance of pdfDoc
                        PDPage page = new PDPage();
                        doc.addPage(page); // adding page in pdf doc file
                        int base = Integer.parseInt(data[i][2]) * Integer.parseInt(data[i][28]) / 30;
                        //GRATIFICACION
                        int grat = (int) (base * 0.25);
                        //BONO ANTIGUEDAD
                        int bonoAnt = miControlador.obtenerBonoAnt(data[i][5]);
                        //BONO 300
                        //                            int totalBon300 = bono300 * Integer.parseInt(data[i][9]);
                        int totalBon300 = Integer.parseInt(data[i][27]);
                        //BONO ADICIONAL
                        int bonoAd = Integer.parseInt(data[i][11]);
                        //BONO RESPONSABILIDAD
                        int bonoResp = 0;
                        //BONO ADICIONAL
                        double bonoCol1 = Double.parseDouble(data[i][8]);
                        double bonoCol30 = Double.parseDouble(data[i][9]);
                        double bonoCol = bonoCol1 + bonoCol30 / 2;
                        int totalBonCol = (int) Math.round(((double) base * 0.0077777) * bonoCol);
                        //HORAS EXTRA
                        double horasExNor = Double.parseDouble(data[i][12]);
                        double horasExFes = Double.parseDouble(data[i][13]);
                        double horasEx = 0;
                        double bonoHor = 0;
                        double cantHorEx = 0;
                        //total de horas extras normales = 1; festivas = 2
                        double totalHorex = 0;
                        double resHorEx = 0;
                        if (horasExNor > 45) {
                            cantHorEx = 45;
                            totalHorex = 45;
                            resHorEx = horasExNor - 45;
                        } else {
                            cantHorEx = horasExNor;
                            totalHorex = cantHorEx;
                        }
                        if (cantHorEx + horasExFes > 45) {
                            resHorEx = resHorEx + (horasExFes - 45 + cantHorEx) * 2;
                            totalHorex = 45 - cantHorEx;
                            cantHorEx = 45;
                        } else {
                            cantHorEx += horasExFes;
                            totalHorex += horasExFes * 2;
                        }

                        //BONO ASIGNACION VOLUNTARIA
                        double totalBonoAV = base * 0.0077777 * resHorEx;
                        double valorHorEx = (int) ((double) base * 0.0077777 * totalHorex);
                        //TOTAL IMPONIBLE
                        double totImp = base + grat + bonoAnt + bonoAd + bonoResp + totalBonoAV + totalBonCol
                                + totalBon300 + valorHorEx;
                        //DESCUENTO AFP
                        int descAFP = Integer.parseInt(data[i][21]);
                        int totalAFP = (int) (totImp * ((double) descAFP / 10000));
                        int sis = (int) (totImp * 0.0141);
                        //DESCUENTO SALUD
                        double descSalud = 0, totalSalud = 0;
                        String salud;
                        if (data[i][4].toLowerCase().compareTo("fonasa") == 0) {
                            salud = "FONASA";
                            descSalud = Integer.parseInt(data[i][22]);
                            totalSalud = (int) (totImp * ((double) descSalud / 10000));
                        } else {
                            if (data[i][23].compareTo("") == 0) {
                                salud = data[i][4];
                            } else {
                                salud = data[i][23];
                            }
                            descSalud = ((double) Integer.parseInt(data[i][24]) / 1000) * uf;
                            totalSalud = descSalud;
                        }
                        //DESCUENTO CESANTIA
                        int ces = (int) (totImp * 0.006);
                        int cesEmp = (int) (totImp * 0.024);
                        //DESCUENTOS LEGALES
                        double descLegales = ces + totalSalud + totalAFP;
                        //TOTAL TRIBUTABLE
                        double totTrib = totImp - totalAFP - totalSalud - ces;
                        int descRenta = 0;
                        double totAux = 0;
                        for (String[] imp2cat1 : imp2cat) {
                            if (totTrib > Float.parseFloat(imp2cat1[0]) / 10
                                    && totTrib <= Float.parseFloat(imp2cat1[1]) / 10) {
                                descRenta = (int) (totTrib * Float.parseFloat(imp2cat1[2]) / 1000
                                        - Float.parseFloat(imp2cat1[3]) / 100);
                                totAux = totTrib - descRenta;
                                break;
                            }
                        }
                        //CAJA COMPENSACION
                        int caja = Integer.parseInt(data[i][15]);
                        //ASIGNACION FAMILIAR
                        int af = Integer.parseInt(data[i][16]);
                        //LIQ ALCANZADO
                        double liqAl = totAux - caja;
                        //COLACION 
                        int col = Integer.parseInt(data[i][6]);
                        //TRANSPORTE
                        int trans = Integer.parseInt(data[i][7]);
                        //TOTAL NO IMPONIBLE
                        int noImp = trans + col + af;
                        //ANTICIPO ADELANTO PRESTAMOS
                        int antic = Integer.parseInt(data[i][17]);
                        int adel = Integer.parseInt(data[i][18]);
                        int pres = Integer.parseInt(data[i][19]);
                        int cuo = Integer.parseInt(data[i][20]);
                        int cuoPres = 0;
                        int cuores = Math.max(0, Integer.parseInt(data[i][26]) - 1);
                        if (cuo != 0) {
                            cuoPres = pres / cuo;
                        }
                        //DESCUENTOS MENSUALES
                        int descMensuales = caja + antic + adel + cuoPres + descRenta;
                        //TOTAL HABERES
                        double totalHaberes = noImp + totImp;
                        //TOTAL DESCUENTOS
                        int totDesc = antic + adel + cuoPres + caja;
                        //LIQUIDO
                        double liq = liqAl + col + trans + af - antic - adel - cuoPres;

                        PDPageContentStream content = new PDPageContentStream(doc, page);

                        //HEADER

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 10);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(50, 770);
                        content.showText("GRUAS SANTA TERESITA LTDA.");
                        content.newLineAtOffset(200, 0);
                        content.showText("LIQUIDACIN TRABAJADOR");
                        content.newLineAtOffset(200, 0);
                        content.showText(per);
                        content.newLineAtOffset(-400, 0);
                        content.newLine();
                        content.showText("77.037.960-1");
                        content.newLine();
                        content.newLine();
                        content.showText("Nombre: " + data[i][1]);
                        content.newLineAtOffset(400, 0);
                        content.showText("Contrato: " + data[i][25]);
                        content.newLineAtOffset(-400, 0);
                        content.newLine();
                        content.showText("Rut: " + data[i][0]);
                        content.endText();
                        content.drawLine(30, 700, 600, 700);

                        //LEFT SIDE

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 9);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(120, 650);
                        content.showText("HABERES");
                        content.endText();
                        content.drawLine(45, 645, 245, 645);

                        content.beginText();
                        content.moveTextPositionByAmount(50, 635);
                        content.showText("Sueldo base proporcional");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(base));
                        content.newLineAtOffset(-150, -15);
                        double horex = Double.parseDouble(data[i][13]);
                        if (horex > 45) {
                            horex = 45;
                        }
                        content.showText("Horas extra ( " + cantHorEx + " horas )");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(valorHorEx));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Gratificacin:");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(grat));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono aos trabajados");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(bonoAnt));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono horas");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBon300));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono asignacin voluntaria");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBonoAV));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono adicional");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBonCol));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Otros bonos");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(bonoAd));
                        content.endText();

                        content.drawLine(45, 515, 245, 515);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 500);
                        content.showText("Imponible");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totImp));
                        content.newLineAtOffset(-150, -15);
                        content.endText();
                        content.drawLine(45, 493, 245, 493);

                        content.beginText();
                        content.moveTextPositionByAmount(50, 470);
                        content.showText("Colacin");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(col));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Transporte");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(trans));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Asignacin familiar");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(af));
                        content.endText();

                        content.drawLine(45, 425, 245, 425);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 410);
                        content.showText("No imponible");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(noImp));
                        content.endText();
                        content.drawLine(45, 403, 245, 403);

                        content.drawLine(45, 380, 245, 380);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 365);
                        content.showText("Total haberes");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalHaberes));
                        content.endText();

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 9);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(65, 280);
                        content.showText("APORTES LEGALES EMPLEADOR");
                        content.endText();
                        content.drawLine(45, 275, 245, 275);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 265);
                        content.showText("SIS");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(sis));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Seguro de cesanta empleador");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(cesEmp));
                        content.endText();
                        content.drawLine(45, 243, 245, 243);

                        //RIGHT SIDE
                        content.beginText();
                        content.moveTextPositionByAmount(410, 650);
                        content.showText("DESCUENTOS");
                        content.endText();
                        content.drawLine(345, 645, 545, 645);

                        content.beginText();
                        content.moveTextPositionByAmount(350, 635);
                        content.showText("Descuento AFP");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalAFP));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Descuento salud");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalSalud));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Seguro de cesanta trabajador");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(ces));
                        content.endText();

                        content.drawLine(345, 585, 545, 585);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 570);
                        content.showText("Descuentos legales");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descLegales));
                        content.endText();
                        content.drawLine(345, 563, 545, 563);

                        content.beginText();
                        content.moveTextPositionByAmount(350, 545);
                        content.showText("Impuesto a la renta");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descRenta));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Caja de compensacin");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(caja));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Anticipo");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(antic));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Adelanto");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(adel));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Prstamo");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(cuoPres));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Cuotas restantes");
                        content.newLineAtOffset(150, 0);
                        content.showText(String.valueOf(cuores));
                        content.endText();

                        content.drawLine(345, 455, 545, 455);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 440);
                        content.showText("Descuentos mensuales");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descMensuales));
                        content.endText();
                        content.drawLine(345, 433, 545, 433);

                        content.drawLine(345, 400, 545, 400);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 385);
                        content.showText("Total descuentos");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descLegales + descMensuales));
                        content.endText();
                        content.drawLine(345, 378, 545, 378);

                        //CENTER
                        content.drawLine(180, 335, 400, 335);
                        content.beginText();
                        content.moveTextPositionByAmount(190, 320);
                        content.showText("Total a pago");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(liq));
                        content.endText();
                        content.drawLine(180, 313, 400, 313);

                        content.close();
                        doc.save(fileName); // saving as pdf file with name perm 
                        doc.close(); // cleaning memory       

                    } catch (IOException e) {
                        System.out.println(e.getMessage());
                    }
                }
                JOptionPane.showMessageDialog(null, "Liquidaciones de sueldo generadas con xito",
                        "Operacin exitosa", JOptionPane.INFORMATION_MESSAGE);
                //                    liquidaciones.limpiarRemuneraciones();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    //runnable.run();
    runnable.start();
    return true;
}

From source file:controladores4.controladorReportes.java

public boolean generarInformeCobranza(final JTable tabla, final int[] rows) {
    DateFormat perDate = new SimpleDateFormat("MMMM-yyyy");
    DateFormat date = new SimpleDateFormat("dd-MM-yyyy");
    final String per = date.format(new Date());
    final NumberFormat FORMAT = NumberFormat.getCurrencyInstance();
    final DecimalFormatSymbols dfs = new DecimalFormatSymbols();
    Thread runnable = new Thread() {
        public void run() {
            try {
                dfs.setCurrencySymbol("$ ");
                dfs.setGroupingSeparator('.');
                dfs.setMonetaryDecimalSeparator('.');
                ((DecimalFormat) FORMAT).setDecimalFormatSymbols(dfs);
                String path = "Informes de cobranza/" + tabla.getValueAt(rows[0], 2);
                File dir = new File(path);
                dir.mkdirs();/*from w w  w  .  j av a 2s .  co m*/
                String fileName = path + "/" + per + ".pdf"; // name of our file
                PDDocument doc = new PDDocument();
                PDPage page = new PDPage();
                doc.addPage(page);
                PDPageContentStream content = new PDPageContentStream(doc, page);
                int total = 0;
                modeloClientes model = new modeloClientes();
                String[] data = model.obtenerRutContactoPorRazon(tabla.getValueAt(rows[0], 2).toString());
                try {
                    //HEADER
                    content.beginText();
                    content.setFont(PDType1Font.HELVETICA, 10);
                    content.setLeading(14.5f);
                    content.moveTextPositionByAmount(50, 770);
                    content.endText();

                    content.drawLine(30, 750, 600, 750);
                    File imagen = new File(("src/icono/Logo_Gruas.bmp"));
                    String imPath = imagen.getAbsolutePath();
                    System.out.println(imPath);
                    PDImageXObject image = PDImageXObject.createFromFile(imPath, doc);
                    content.drawImage(image, 50, 600);

                    content.beginText();
                    content.moveTextPositionByAmount(400, 680);
                    content.showText("INFORME COBRANZA");
                    content.newLine();
                    content.showText(per);
                    content.newLineAtOffset(-130, -80);
                    content.showText("CLIENTE");
                    content.newLine();
                    content.endText();

                    content.drawLine(30, 580, 600, 580);

                    content.beginText();
                    content.moveTextPositionByAmount(50, 560);
                    content.showText("Rut: ");
                    content.newLineAtOffset(100, 0);
                    content.showText(data[0]);
                    content.newLineAtOffset(-100, -15);
                    content.showText("Razn Social:");
                    content.newLineAtOffset(100, 0);
                    content.showText(data[1]);
                    content.newLineAtOffset(-100, -15);
                    content.showText("Contacto:");
                    content.newLineAtOffset(100, 0);

                    content.newLine();
                    content.endText();

                    content.drawLine(30, 510, 600, 510);

                    content.beginText();
                    content.moveTextPositionByAmount(50, 480);
                    content.showText(
                            "Estimado cliente, las facturas que se exponen a continuacin se encuentran pendientes");
                    content.newLine();
                    content.showText("de pago. Favor regularizar la situacin.");
                    content.endText();

                    content.drawLine(30, 440, 600, 440);

                    content.beginText();
                    content.moveTextPositionByAmount(70, 430);
                    content.showText("N Folio");
                    content.newLineAtOffset(70, 0);
                    content.showText("Fecha");
                    content.newLineAtOffset(70, 0);
                    content.showText("Das emisin");
                    content.newLineAtOffset(80, 0);
                    content.showText("Total factura");
                    content.newLineAtOffset(80, 0);
                    content.showText("Monto abono");
                    content.newLineAtOffset(80, 0);
                    content.showText("Saldo deuda");
                    content.newLineAtOffset(80, 0);
                    content.endText();

                    content.drawLine(30, 425, 600, 425);

                    content.beginText();
                    content.moveTextPositionByAmount(75, 390);
                    for (int row : rows) {
                        String folio = tabla.getValueAt(row, 0).toString();
                        String fecha = tabla.getValueAt(row, 3).toString();
                        String dias = tabla.getValueAt(row, 4).toString();
                        int monto = Integer.parseInt(tabla.getValueAt(row, 7).toString());
                        int abono = Integer.parseInt(tabla.getValueAt(row, 11).toString());
                        int saldo = Integer.parseInt(tabla.getValueAt(row, 12).toString());
                        total += saldo;

                        content.showText(folio);
                        content.newLineAtOffset(60, 0);
                        content.showText(fecha);
                        content.newLineAtOffset(90, 0);
                        content.showText(dias);
                        content.newLineAtOffset(70, 0);
                        content.showText(FORMAT.format(monto));
                        content.newLineAtOffset(80, 0);
                        content.showText(FORMAT.format(abono));
                        content.newLineAtOffset(80, 0);
                        content.showText(FORMAT.format(saldo));
                        content.newLineAtOffset(-380, -15);
                    }

                    content.newLineAtOffset(310, -45);
                    content.showText("Total deuda");
                    content.newLineAtOffset(70, 0);
                    content.showText(FORMAT.format(total));
                    content.endText();

                    content.close();
                    doc.save(fileName); // saving as pdf file with name perm 
                    doc.close(); // cleaning memory 

                } catch (Exception e) {
                    e.printStackTrace();
                }

                JOptionPane.showMessageDialog(null, "Informe de cobranza generado con xito",
                        "Operacin exitosa", JOptionPane.INFORMATION_MESSAGE);
                //                    liquidaciones.limpiarRemuneraciones();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    //runnable.run();
    runnable.start();
    return true;
}

From source file:controldeadministradores.Admin.java

public void crearPDF(String file, String body) throws Exception {
    String outputFileName = file + ".pdf";
    //        if (args.length > 0)
    //            outputFileName = args[0];

    // 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);

    // Create a new font object selecting one of the PDF base fonts
    PDFont fontPlain = PDType1Font.HELVETICA;
    PDFont fontBold = PDType1Font.HELVETICA_BOLD;
    PDFont fontItalic = PDType1Font.HELVETICA_OBLIQUE;
    PDFont fontMono = PDType1Font.COURIER;

    // 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();//from  w  w  w . j av a2  s  . c  om
    cos.setFont(fontPlain, 14);
    cos.moveTextPositionByAmount(100, rect.getHeight() - 50 * (++line));
    cos.drawString("Reporte de " + file);
    cos.endText();

    String[] txtLine = body.split("-");
    for (int k = 0; k < txtLine.length; k++) {
        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.moveTextPositionByAmount(100, rect.getHeight() - 50 * (++line));
        cos.drawString(txtLine[k]);
        cos.endText();
        cos.close();
    }

    // Make sure that the content stream is closed:

    // Save the results and ensure that the document is properly closed:
    document.save(outputFileName);
    document.close();
}

From source file:correccioncolorpdfs.CorrectorColorUI.java

private void transformarPDF() {
    try {/*from ww  w.  j  a va 2  s  .  c o  m*/
        //@see http://stackoverflow.com/questions/18189314/convert-a-pdf-file-to-image
        String rutaPDFOriginal = rutaPDF + nombrePDF; // Pdf files are read from this folder
        //String destinationDir = "D:\\Desarrollo\\pruebas\\reportes_negros\\imagenes\\"; // converted images from pdf document are saved here

        File pdfOriginal = new File(rutaPDFOriginal);
        //            File destinationFile = new File(destinationDir);
        //            if (!destinationFile.exists()) {
        //                destinationFile.mkdir();
        //                System.out.println("Folder Created -> " + destinationFile.getAbsolutePath());
        //            }
        if (pdfOriginal.exists()) {
            //System.out.println("Images copied to Folder: " + destinationFile.getName());
            PDDocument document = PDDocument.load(rutaPDFOriginal);

            //Documento Fondo Blanco
            PDDocument documentoCool = new PDDocument();

            List<PDPage> list = document.getDocumentCatalog().getAllPages();
            System.out.println("Total files to be converted -> " + list.size());

            String nombrePDFOriginal = pdfOriginal.getName().replace(".pdf", "");
            int pageNumber = 1;
            for (PDPage page : list) {
                BufferedImage image = page.convertToImage();

                //Inviertiendo colores
                //@see http://stackoverflow.com/questions/8662349/convert-negative-image-to-positive
                for (int x = 0; x < image.getWidth(); x++) {
                    for (int y = 0; y < image.getHeight(); y++) {
                        int rgba = image.getRGB(x, y);
                        //Hexa a reemplazar e9e9e1 R=233|G=233|B=225
                        Color col = new Color(rgba, true);
                        col = new Color(255 - col.getRed(), 255 - col.getGreen(), 255 - col.getBlue());

                        //Si color es igual al invertido - cambiarlo a blanco
                        if (col.getRGB() == -1447455) {
                            col = new Color(255, 255, 255);
                        }
                        //System.out.println("col.getR = " + col.getRGB());
                        image.setRGB(x, y, col.getRGB());
                    }
                }
                //                    File outputfile = new File(destinationDir + fileName + "_" + pageNumber + ".png");
                //                    System.out.println("Image Created -> " + outputfile.getName());
                //                    ImageIO.write(image, "png", outputfile);
                pageNumber++;

                //Crear pagina nueva para el PDF Convertido
                float width = image.getWidth();
                float height = image.getHeight();
                PDPage paginaSinFondo = new PDPage(new PDRectangle(width, height));
                documentoCool.addPage(paginaSinFondo);
                PDXObjectImage img = new PDJpeg(documentoCool, image);
                PDPageContentStream contentStream = new PDPageContentStream(documentoCool, paginaSinFondo);
                contentStream.drawImage(img, 0, 0);
                contentStream.close();

            }
            document.close();
            rutaPDFImprimible = rutaPDF + nombrePDFOriginal + "_imprimible.pdf";
            documentoCool.save(rutaPDFImprimible);
            documentoCool.close();

            estadoConversion(true);
        } else {
            JOptionPane.showMessageDialog(this,
                    "No se logr identificar la ruta del archivo, por favor verifique que el archivo si existe o no halla sido movido durante el proceso.",
                    "Ruta de archivo no encontrada", JOptionPane.WARNING_MESSAGE);
        }

    } catch (IOException | COSVisitorException | HeadlessException e) {
        estadoConversion(false);
        JOptionPane.showMessageDialog(this, e.getMessage(), "Error durante el proceso de conversin",
                JOptionPane.ERROR_MESSAGE);
    }
}

From source file:costumetrade.common.util.PdfUtils.java

License:Open Source License

public static PDDocument createImagePdf(File file) {

    PDPageContentStream contentStream = null;
    try {//from w  w w  . j  a v a 2s. c o m
        BufferedImage bimg = ImageIO.read(file);
        PDDocument document = new PDDocument();
        PDPage page = new PDPage(new PDRectangle(bimg.getWidth(), bimg.getHeight()));
        document.addPage(page);
        PDImageXObject image = PDImageXObject.createFromFileByExtension(file, document);
        contentStream = new PDPageContentStream(document, page);
        contentStream.drawImage(image, 0, 0);
        return document;
    } catch (IOException e) {
        throw new RuntimeException("?PDF", e);
    } finally {
        IOUtils.closeQuietly(contentStream);
    }

}

From source file:CTRL.ExportController.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from w w w  . ja v a  2s  . co m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    HttpSession session = request.getSession();

    LijstLesmomentenViewModel vmLesmomentenFinal = (LijstLesmomentenViewModel) session
            .getAttribute("vmLesmomentenFinal");

    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page = new PDPage();
    document.addPage(page);

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

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

    // Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World"
    contentStream.beginText();
    contentStream.setFont(font, 16);
    contentStream.moveTextPositionByAmount(60, 700);

    // Titel
    contentStream.drawString("Lessenrooster");

    contentStream.setFont(font, 10);
    contentStream.moveTextPositionByAmount(0, -20);

    int recordTeller = 0;
    for (Lesmoment l : vmLesmomentenFinal.getLesmomenten()) {

        Calendar c = Calendar.getInstance();
        c.setTime(l.getDatum());
        int dag = c.get(Calendar.DAY_OF_WEEK);

        String strDag = "";

        switch (dag) {
        case 0:
            strDag = "Zondag";
            break;
        case 1:
            strDag = "Maandag";
            break;
        case 2:
            strDag = "Dinsdag";
            break;
        case 3:
            strDag = "Woensdag";
            break;
        case 4:
            strDag = "Donderdag";
            break;
        case 5:
            strDag = "Vrijdag";
            break;
        case 6:
            strDag = "Zaterdag";
            break;
        }

        //Nieuwe page beginnen wanner 25 records werden weggeschreven
        if (recordTeller == 25) {
            recordTeller = 0;
            contentStream.endText();
            contentStream.close();

            page = new PDPage();
            document.addPage(page);
            contentStream = new PDPageContentStream(document, page);
            contentStream.beginText();
            contentStream.setFont(font, 10);
            contentStream.moveTextPositionByAmount(60, 700);
        } else {
            recordTeller++;
        }

        contentStream.drawString(l.getDatum().toString() + "     " + strDag + "     " + l.getBeginuur()
                + "     " + l.getEinduur() + "     " + l.getLokaal() + "     " + l.getModule().getCode()
                + "     " + l.getModule().getNaam());
        contentStream.moveTextPositionByAmount(0, -20);
    }

    contentStream.endText();

    // Make sure that the content stream is closed:
    contentStream.close();

    try {
        // Save the results and ensure that the document is properly closed:
        document.save("C:\\Temp\\test.pdf");
    } catch (COSVisitorException ex) {
        Logger.getLogger(ExportController.class.getName()).log(Level.SEVERE, null, ex);
    }
    document.close();

    //Teruggaan naar resultaat pagina
    RequestDispatcher dispatcher = request.getRequestDispatcher("Resultaat.jsp");
    dispatcher.forward(request, response);
}

From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java

License:Open Source License

public static PDDocument generateEmptyPdf() {
    PDDocument pdDocument = new PDDocument();
    pdDocument.addPage(new PDPage());
    return pdDocument;
}