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

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

Introduction

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

Prototype

public PDDocumentCatalog getDocumentCatalog() 

Source Link

Document

This will get the document CATALOG.

Usage

From source file:fixture.pdfboxeg.CreateSignatureBase.java

License:Apache License

/**
 * Get the access permissions granted for this document in the DocMDP transform parameters
 * dictionary. Details are described in the table "Entries in the DocMDP transform parameters
 * dictionary" in the PDF specification.
 *
 * @param doc document.//from  ww w.  ja  va 2  s .  co m
 * @return the permission value. 0 means no DocMDP transform parameters dictionary exists. Other
 * return values are 1, 2 or 3. 2 is also returned if the DocMDP transform parameters dictionary
 * is found but did not contain a /P entry, or if the value is outside the valid range.
 */
public int getMDPPermission(PDDocument doc) {
    COSBase base = doc.getDocumentCatalog().getCOSObject().getDictionaryObject(COSName.PERMS);
    if (base instanceof COSDictionary) {
        COSDictionary permsDict = (COSDictionary) base;
        base = permsDict.getDictionaryObject(COSName.DOCMDP);
        if (base instanceof COSDictionary) {
            COSDictionary signatureDict = (COSDictionary) base;
            base = signatureDict.getDictionaryObject("Reference");
            if (base instanceof COSArray) {
                COSArray refArray = (COSArray) base;
                for (int i = 0; i < refArray.size(); ++i) {
                    base = refArray.getObject(i);
                    if (base instanceof COSDictionary) {
                        COSDictionary sigRefDict = (COSDictionary) base;
                        if (COSName.DOCMDP.equals(sigRefDict.getDictionaryObject("TransformMethod"))) {
                            base = sigRefDict.getDictionaryObject("TransformParams");
                            if (base instanceof COSDictionary) {
                                COSDictionary transformDict = (COSDictionary) base;
                                int accessPermissions = transformDict.getInt(COSName.P, 2);
                                if (accessPermissions < 1 || accessPermissions > 3) {
                                    accessPermissions = 2;
                                }
                                return accessPermissions;
                            }
                        }
                    }
                }
            }
        }
    }
    return 0;
}

From source file:fixture.pdfboxeg.CreateSignatureBase.java

License:Apache License

public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions) {
    COSDictionary sigDict = signature.getCOSObject();

    // DocMDP specific stuff
    COSDictionary transformParameters = new COSDictionary();
    transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams"));
    transformParameters.setInt(COSName.P, accessPermissions);
    transformParameters.setName(COSName.V, "1.2");
    transformParameters.setNeedToBeUpdated(true);

    COSDictionary referenceDict = new COSDictionary();
    referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef"));
    referenceDict.setItem("TransformMethod", COSName.getPDFName("DocMDP"));
    referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1"));
    referenceDict.setItem("TransformParams", transformParameters);
    referenceDict.setNeedToBeUpdated(true);

    COSArray referenceArray = new COSArray();
    referenceArray.add(referenceDict);//w  w  w. ja  v a 2s .  c  o  m
    sigDict.setItem("Reference", referenceArray);
    referenceArray.setNeedToBeUpdated(true);

    // Catalog
    COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject();
    COSDictionary permsDict = new COSDictionary();
    catalogDict.setItem(COSName.PERMS, permsDict);
    permsDict.setItem(COSName.DOCMDP, signature);
    catalogDict.setNeedToBeUpdated(true);
    permsDict.setNeedToBeUpdated(true);
}

From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java

License:Open Source License

/**
 * @param PDDocument//w  w w.j a  v  a  2  s . com
 *            Extracts each page in a PDF and saves it into a PNG image (PDF
 *            passed as PDDocument)
 */
protected void pdf2png_PDFbox(PDDocument document) throws IOException {
    pages = document.getDocumentCatalog().getAllPages();
    System.out.println(PDFname + ": Total pages: " + pages.size());
    int pageCounter = 0;

    Iterator iter = pages.iterator();
    while (iter.hasNext()) {
        // get next page
        PDPage page = (PDPage) iter.next();
        ++pageCounter;

        BufferedImage bImg = null;
        // generate an image from the page
        try {
            bImg = page.convertToImage();
        } catch (NullPointerException e) {
            System.err.println("Cannot convert Page to Img");
        }

        // draw into wallImg
        addOnWallImg(bImg, page);
    }
}

From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java

License:Open Source License

/**
 * @param PDDocument/*from w  w  w .j av  a 2s.co m*/
 *            Extracts the PDF's structure (up to 2 levels) if available
 *            (PDF passed as PDDocument). Create an image of the structure
 *            for each of the 1st level titles
 */
protected void pdfGetStructure_PDFbox(PDDocument document) throws IOException {

    PDDocumentOutline root = document.getDocumentCatalog().getDocumentOutline();
    PDOutlineItem item;

    try {
        item = root.getFirstChild();
    } catch (NullPointerException e) {
        System.out.println("No structure for pdf " + PDFname);
        return;
    }

    // fill map with titles per page
    while (item != null) {
        int pageNumber = findPageNumber(document, item.findDestinationPage(document));

        String conc = item.getTitle();
        if (conc.length() > 13)
            conc = conc.subSequence(0, 10) + "...";

        System.out.println("Item:" + conc + " at page " + pageNumber);

        if (pageTitles.containsKey(item.findDestinationPage(document)))

            pageTitles.get(item.findDestinationPage(document)).add(conc);
        else {
            pageTitles.put(item.findDestinationPage(document), new ArrayList<String>());
            pageTitles.get(item.findDestinationPage(document)).add(conc);
        }

        // do nothing with 2nd level children
        PDOutlineItem child = item.getFirstChild();
        while (child != null) {
            System.out.println("    Child:" + child.getTitle());
            child = child.getNextSibling();
        }
        item = item.getNextSibling();
    }

    int pn = 0;
    if (!hybrid) {
        BufferedImage itemImage;
        for (PDPage key : pages) {
            // for (PDPage key : pageTitles.keySet()) {
            ++pn;

            int titlesInPage = 0;
            List<String> titles = null;
            if (pageTitles.containsKey(key)) {
                titles = pageTitles.get(key);
                titlesInPage = titles.size();
            }

            int w = (int) key.getArtBox().getWidth() - 200;
            int h = (int) key.getArtBox().getHeight() - 100;
            ;
            int x = (int) key.getArtBox().getLowerLeftX() + 50;
            int y = (int) key.getArtBox().getLowerLeftY() + 50;

            // calling createGraphics() to get the Graphics2D and setup for
            // drawing titles
            itemImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

            if (titles_on && clouds_on) {
                itemImage = printTitlesAndCloudInImage(key, pn, titles, itemFont);
            } else if (titles_on) {
                if (titles != null)
                    itemImage = printTitlesInImage(key, titles, itemFont);
            } else if (clouds_on) {
                itemImage = printCloudInImage(key, pn, titles, itemFont);
            }
        }

    }

}

From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java

License:Open Source License

private int findPageNumber(PDDocument doc, PDPage page) {
    int pageCounter = 0;

    Iterator iter = doc.getDocumentCatalog().getAllPages().iterator();
    while (iter.hasNext()) {
        // get next page
        PDPage current_page = (PDPage) iter.next();
        ++pageCounter;/*from www. j a v a2 s .c o  m*/

        if (current_page.equals(page))
            return pageCounter;
    }
    return -1;
}

From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java

License:Open Source License

/**
 * @param PDDocument//from   w  w w.  ja  v  a 2s  . c o  m
 *            Extracts images embedded in a PDF and saves them in PNG
 *            format, problem with embedded PDF images (PDF passed as
 *            PDDocument)
 */
protected void pdfGetImages_PDFbox(PDDocument document) throws IOException {
    List<PDPage> pages = document.getDocumentCatalog().getAllPages();

    int pageCounter = 0;
    for (PDPage page : pages) {
        ++pageCounter;

        // get pdf resources
        PDResources resources = page.getResources();
        Map<String, PDXObjectImage> imageResources = resources.getImages();
        resources.getGraphicsStates();

        System.out.println(resources.getImages().size() + " images to be extracted");

        // int imageCounter = 0;
        for (String key : imageResources.keySet()) {
            PDXObjectImage objectImage = imageResources.get(key);
            System.out.printf("image key '%s': %d x %d, type %s%n", key, objectImage.getHeight(),
                    objectImage.getWidth(), objectImage.getSuffix());
        }
    }
}

From source file:function.PrintImageLocations.java

License:Apache License

/**
 * This will print the documents data./*w  w w .j  a v a  2s. c o  m*/
 *
 * @param args The command line arguments.
 *
 * @throws Exception If there is an error parsing the document.
 */
public static void main(String[] args) throws Exception {

    PDDocument document = null;
    try {
        document = PDDocument.load(new File("C:/Users/ATUL/Desktop/Page-layout/output1.pdf"));
        if (document.isEncrypted()) {
            document.decrypt("");
        }
        PrintImageLocations printer = new PrintImageLocations();
        List allPages = document.getDocumentCatalog().getAllPages();
        for (int i = 0; i < allPages.size(); i++) {
            System.out.println("\n***********************************************************");
            PDPage page = (PDPage) allPages.get(i);
            System.out.println("Processing page: " + (i + 1));
            printer.processStream(page, page.findResources(), page.getContents().getStream());
        }
    } finally {
        if (document != null) {
            document.close();
        }
    }

}

From source file:fys.BagagedatabaseController.java

private void sendToDatabase(int dr_id, int dr_personId, int dr_lafId, int tableFrom, int status, String airport,
        String frontname, String surname, String address, String shipaddress, String residence, String zipcode,
        String country, String phone, String mail, String labelnumber, String filePath, String flightnumber,
        String destination, int type, String brand, Integer color, String characteristics)
        throws IOException, SQLException {

    try {/*from ww w  .java 2s.  co m*/
        conn = fys.connectToDatabase(conn);
        stmt = conn.createStatement();

        //connectToDatabase(conn, stmt, "test", "root", "root");
        String sql_person = "UPDATE bagagedatabase.person SET first_name='" + frontname + "'," + "surname='"
                + surname + "', address='" + address + "'," + "residence='" + residence + "', zip_code='"
                + zipcode + "'," + "country='" + country + "', phone='" + phone + "'," + "mail='" + mail + "'"
                + "WHERE person_id='" + dr_personId + "'";
        stmt.executeUpdate(sql_person);

        String sql_lost = "";
        String sql_airport = "";
        String sql_status = "";
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date date = new Date();
        String dateTimeString = dateFormat.format(date);
        String[] tokens = dateTimeString.split(" ");
        if (tokens.length != 2) {
            throw new IllegalArgumentException();
        }
        String dateString = tokens[0];
        String timeString = tokens[1];

        if (tableFrom == 0) { //0 = bagagedatabase.lost
            sql_lost = "UPDATE bagagedatabase.lost SET status='" + status + "'," + "picture='" + filePath
                    + "', type='" + type + "', brand='" + brand + "'," + "color='" + color
                    + "', characteristics='" + characteristics + "'" + "WHERE id='" + dr_id + "'";

            //Registreer de status van een bagage.
            sql_status = "INSERT INTO luggage_status VALUES(" + dr_id + ", '" + dateString + "', '" + timeString
                    + "', '" + status + "', 0);";

            switch (status) {
            //case 0: Gaat van lost naar status Gevonden
            case 0:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_found='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            //case 3: Gaat van lost naar status Afgehandeld
            case 3:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_found='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            //default: Gaat van lost naar status Vermist, Vernietigd, Nooit Gevonden of Depot 
            default:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_lost='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            }
        } else if (tableFrom == 1) { //1 = bagagedatabase.found
            sql_lost = "UPDATE bagagedatabase.found SET status='" + status + "'," + "picture='" + filePath
                    + "', type='" + type + "', brand='" + brand + "'," + "color='" + color
                    + "', characteristics='" + characteristics + "'" + "WHERE id='" + dr_id + "'";

            //Registreer de status van een bagage.
            sql_status = "INSERT INTO luggage_status VALUES(" + dr_id + ", '" + dateString + "', '" + timeString
                    + "', '" + status + "', 1);";

            switch (status) {
            //case 1: Gaat van found naar status Vermist
            case 1:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_lost='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            //case 3: Gaat van found naar status Afgehandeld
            case 3:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_lost='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            //default: Gaat van found naar status Gevonden, Vernietigd, Nooit gevonden, Depot 
            default:
                sql_airport = "UPDATE bagagedatabase.airport SET airport_found='" + airport + "',"
                        + "label_number='" + labelnumber + "', flight_number='" + flightnumber + "',"
                        + "destination='" + destination + "'" + "WHERE lost_and_found_id='" + dr_lafId + "'";
                break;
            }
        }
        if (status != 6) {
            stmt.executeUpdate(sql_lost);
        }
        stmt.executeUpdate(sql_airport);
        if (status != fys.getStatusString(dr_status)) {
            stmt.executeUpdate(sql_status);
        }

        if (status != 3) {
            int pageid = 4;
            int type_email = 0;
            if (mailInput.getText() == null || !FYS.isValidEmailAddress(mailInput.getText())
                    || mailInput.getText().trim().isEmpty()) {

            } else {
                // Email bericht filteren op sommige woorden.
                String getmessage = fys.replaceEmail(
                        fys.replaceEmail_tF(
                                fys.Email_Message(type_email, fys.Email_Language(mailInput.getText()), pageid),
                                mailInput.getText(), Integer.parseInt(tableFromLabel.getText())),
                        mailInput.getText());
                // Email versturen
                fys.sendEmail(mailInput.getText(),
                        fys.Email_Subject(type_email, fys.Email_Language(mailInput.getText()), pageid),
                        getmessage, "Sent message successfully....");
            }
        }

        /*Indien de status wordt veranderd naar afgehandeld wordt er een DHL-
        formulier gemaakt. DISCLAIMER: Het DHL-formulier dat gemaakt wordt is
        gebaseerd op het officile DHL-emailshipment formulier dat is te vinden
        op 'http://www.dhl.com/en/express/resource_center/emailship.html'.
        Het formulier is gekopieerd en aangepast d.m.v. Adobe Acrobat DC en is 
        louter bedoeld voor demonstratieve doeleinden.
         */
        if (status == 3) { //Afgehandeld
            //Maak nieuwe PDF-document aan de hand van de template
            File pdfdoc = new File("src/fys/templates/dhltemplate.pdf");
            PDDocument document;
            document = PDDocument.load(pdfdoc);

            //Laad alle inputvelden op het formulier
            PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
            List<PDField> fields = acroForm.getFields();

            //Vul alle inputvelden in met de waardes uit de database
            for (PDField field : fields) {
                if (field.getFullyQualifiedName().equals("companyName_field")) {
                    field.setValue("Corendon");
                }
                if (field.getFullyQualifiedName().equals("country_field")) {
                    field.setValue(country);
                }
                if (field.getFullyQualifiedName().equals("address_field")) {
                    field.setValue(shipaddress);
                }
                if (field.getFullyQualifiedName().equals("city_field")) {
                    field.setValue(residence);
                }
                if (field.getFullyQualifiedName().equals("postcode_field")) {
                    field.setValue(zipcode);
                }
                if (field.getFullyQualifiedName().equals("contactPerson_field")) {
                    field.setValue(frontname + " " + surname);
                }
                if (field.getFullyQualifiedName().equals("phone_field")) {
                    field.setValue(phone);
                }
                if (field.getFullyQualifiedName().equals("type_field")) {
                    field.setValue("International NonDocument");
                }
                if (field.getFullyQualifiedName().equals("product_field")) {
                    field.setValue("Express WorldWide");
                }
                if (field.getFullyQualifiedName().equals("notification_field")) {
                    field.setValue("fysepsilon@gmail.com ");
                }
                if (field.getFullyQualifiedName().equals("content_field")) {
                    field.setValue(fys.getBaggageType(type));
                }
                if (field.getFullyQualifiedName().equals("date_field")) {
                    field.setValue(dateString);
                }
            }

            //Sla het document op
            document.save("src/fys/formulieren/dhlFormulier" + frontname + surname + dr_personId + ".pdf");
            document.close();

            int pageid = 5;
            int type_email = 0;

            if (mailInput.getText() == null || !FYS.isValidEmailAddress(mailInput.getText())
                    || mailInput.getText().trim().isEmpty()) {

            } else {
                // Email bericht filteren op sommige woorden.            
                String getmessage = fys.replaceEmail(
                        fys.replaceEmail_tF(
                                fys.Email_Message(type_email, fys.Email_Language(mailInput.getText()), pageid),
                                mailInput.getText(), Integer.parseInt(tableFromLabel.getText())),
                        mailInput.getText());
                // Email versturen
                fys.sendEmail(mailInput.getText(),
                        fys.Email_Subject(type_email, fys.Email_Language(mailInput.getText()), pageid),
                        getmessage, "Sent message successfully....");
            }
        }

        if (status == 4) { //Nooit gevonden
            int pageid = 6; //Pagina id
            int type_email = 3; //Onbekend
            int language_email = 1; //Nederlands ?!
            String email_paymentdepartment = "fysepsilon@gmail.com"; // Betalingsafdeling mail
            if (mailInput.getText() == null || !FYS.isValidEmailAddress(mailInput.getText())
                    || mailInput.getText().trim().isEmpty()) {

            } else {
                // Email bericht filteren op sommige woorden.            
                String getmessage = fys.replaceEmail(
                        fys.replaceEmail_tF(fys.Email_Message(type_email, language_email, pageid),
                                mailInput.getText(), Integer.parseInt(tableFromLabel.getText())),
                        mailInput.getText());
                // Email versturen
                fys.sendEmail(email_paymentdepartment, fys.Email_Subject(type_email, language_email, pageid),
                        getmessage, "Sent message successfully....");
            }
        }

        pictureButton.setText(taal[44]);
        fys.changeToAnotherFXML(taal[100], "bagagedatabase.fxml");
        conn.close();
    } catch (SQLException ex) {
        // handle any errors
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    }
}

From source file:fys.StatistiekenController.java

@FXML
private void handleExportToPDFAction(ActionEvent event) throws IOException {
    if ((dateFrom.getText() == null || dateFrom.getText().trim().isEmpty())
            || (dateTo.getText() == null || dateTo.getText().trim().isEmpty())) {
        ErrorLabel.setText(taal[93]);/*from ww w .  jav a2 s  .  c  om*/
        ErrorLabel.setVisible(true);
    } else {
        String dateFromInput = dateFrom.getText();
        String dateToInput = dateTo.getText();
        //Doe dit alleen wanneer er waardes zijn ingevuld.
        lineChart.setAnimated(false);
        pieChart.setAnimated(false);
        //PIECHART
        //Maak alle data en aantallen weer leeg.
        int luggage = 0, foundAmount = 0, lostAmount = 0, destroyAmount = 0, settleAmount = 0,
                neverFoundAmount = 0, depotAmount = 0;
        int jan = 0, feb = 0, mar = 0, apr = 0, mei = 0, jun = 0, jul = 0, aug = 0, sep = 0, okt = 0, nov = 0,
                dec = 0;
        total = 0;
        series.getData().clear();
        pieChartData = FXCollections.observableArrayList();

        //Krijg alle data voor de pietchart die tussen de periode van DateFrom en DateTo ligt.
        try {
            conn = fys.connectToDatabase(conn);
            stmt = conn.createStatement();
            //connectToDatabase(conn, stmt, "test", "root", "root"); 
            String sql = "SELECT status, date, COUNT(status) AS Count FROM bagagedatabase.luggage_status "
                    + "WHERE date >= \"" + fys.convertToDutchDate(dateFromInput) + "\" " + "AND date <= \""
                    + fys.convertToDutchDate(dateToInput) + "\" " + "GROUP BY status";
            //Voeg alle aantallen per status toe aan variabelen.
            try (ResultSet rs = stmt.executeQuery(sql)) {
                while (rs.next()) {
                    luggage++;
                    //Retrieve by column name
                    foundAmount = (rs.getInt("status") == 0 ? rs.getInt("Count") : foundAmount);
                    lostAmount = (rs.getInt("status") == 1 ? rs.getInt("Count") : lostAmount);
                    destroyAmount = (rs.getInt("status") == 2 ? rs.getInt("Count") : destroyAmount);
                    settleAmount = (rs.getInt("status") == 3 ? rs.getInt("Count") : settleAmount);
                    neverFoundAmount = (rs.getInt("status") == 4 ? rs.getInt("Count") : neverFoundAmount);
                    depotAmount = (rs.getInt("status") == 5 ? rs.getInt("Count") : depotAmount);
                }
            }
        } catch (SQLException ex) {
            // handle any errors
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }

        //Voeg de waardes toe aan de array.
        pieChartData = FXCollections.observableArrayList(new PieChart.Data(ExportToPdfTexts[15], foundAmount),
                new PieChart.Data(ExportToPdfTexts[16], lostAmount),
                new PieChart.Data(ExportToPdfTexts[17], destroyAmount),
                new PieChart.Data(ExportToPdfTexts[18], settleAmount),
                new PieChart.Data(ExportToPdfTexts[19], neverFoundAmount),
                new PieChart.Data(ExportToPdfTexts[20], depotAmount));

        //Update de titel
        pieChart.setTitle(ExportToPdfTexts[0]);

        //Update de piechart met de gevraagde gegevens.
        pieChart.setData(pieChartData);

        //Voor elke aantal tel ze met elkaar op en sla het op bij total.
        for (PieChart.Data d : pieChart.getData()) {
            total += d.getPieValue();
        }

        //Verander de tekst van elke piechartdata. naar: (aantal statusnaam: percentage).
        pieChartData.forEach(data -> data.nameProperty().bind(Bindings.concat((int) data.getPieValue(), " ",
                data.getName(), ": ",
                (total == 0 || (int) data.getPieValue() == 0) ? 0 : (int) (data.getPieValue() / total * 100),
                "%")));

        //LINECHART
        //Krijg alle data voor de linechart die tussen de periode van DateFrom en DateTo ligt.
        try {
            conn = fys.connectToDatabase(conn);
            stmt = conn.createStatement();
            String sql = "SELECT date, COUNT(date) as Count FROM bagagedatabase.luggage_status "
                    + "WHERE status = 6 AND date >= \"" + fys.convertToDutchDate(dateFromInput) + "\" "
                    + "AND date <= \"" + fys.convertToDutchDate(dateToInput) + "\" " + "GROUP BY date";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                //Retrieve by column name
                //Voeg alle aantallen per maand toe aan variabelen.
                if (rs.getString("date") != null) {
                    //Krijg van elke date record de maand eruit.
                    String str[] = rs.getString("date").split("-");
                    int month = Integer.parseInt(str[1]);
                    jan = (month == 1 ? jan += rs.getInt("Count") : jan);
                    feb = (month == 2 ? feb += rs.getInt("Count") : feb);
                    mar = (month == 3 ? mar += rs.getInt("Count") : mar);
                    apr = (month == 4 ? apr += rs.getInt("Count") : apr);
                    mei = (month == 5 ? jan += rs.getInt("Count") : mei);
                    jun = (month == 6 ? jun += rs.getInt("Count") : jun);
                    jul = (month == 7 ? jul += rs.getInt("Count") : jul);
                    aug = (month == 8 ? aug += rs.getInt("Count") : aug);
                    sep = (month == 9 ? sep += rs.getInt("Count") : sep);
                    okt = (month == 10 ? okt += rs.getInt("Count") : okt);
                    nov = (month == 11 ? nov += rs.getInt("Count") : nov);
                    dec = (month == 12 ? dec += rs.getInt("Count") : dec);
                }
            }
            rs.close();
            conn.close();
        } catch (SQLException ex) {
            // handle any errors
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }

        //Update de titel
        lineChart.setTitle(ExportToPdfTexts[1]);

        //Update de linechart naar de waardes die gewenst is.
        series.setName(ExportToPdfTexts[2]);
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[3], jan));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[4], feb));
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[5], mar));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[6], apr));
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[7], mei));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[8], jun));
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[9], jul));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[10], aug));
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[11], sep));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[12], okt));
        series.getData().add(new XYChart.Data<>(ExportToPdfTexts[13], nov));
        series.getData().add(new XYChart.Data(ExportToPdfTexts[14], dec));

        //Update de piechart en linechart voordat er een screenshot van genomen wordt.
        lineChart.applyCss();
        lineChart.layout();
        pieChart.applyCss();
        pieChart.layout();

        //Maak een screenshot van de piechart en linechart.
        savePieChartAsPng();
        saveLineChartAsPng();

        try {

            //Krijg de datum van vandaag voor pdf.
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Date date = new Date();
            String dateString = dateFormat.format(date);

            //Krijg de content van de template pdf en maake nieuw pdf aan.
            File pdfdoc = new File("src/fys/templates/statisticstemplate.pdf");
            PDDocument document = null;
            document = PDDocument.load(pdfdoc);
            PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
            List<PDField> fields = acroForm.getFields();

            // set the text in the form-field <-- does work
            //Verander voor elk veld de waardes.
            for (PDField field : fields) {
                if (field.getFullyQualifiedName().equals("found")) {
                    field.setValue(String.valueOf(foundAmount));
                }
                if (field.getFullyQualifiedName().equals("lost")) {
                    field.setValue(String.valueOf(lostAmount));
                }
                if (field.getFullyQualifiedName().equals("destroyed")) {
                    field.setValue(String.valueOf(destroyAmount));
                }
                if (field.getFullyQualifiedName().equals("completed")) {
                    field.setValue(String.valueOf(settleAmount));
                }
                if (field.getFullyQualifiedName().equals("neverfound")) {
                    field.setValue(String.valueOf(neverFoundAmount));
                }
                if (field.getFullyQualifiedName().equals("depot")) {
                    field.setValue(String.valueOf(depotAmount));
                }

                if (field.getFullyQualifiedName().equals("jan")) {
                    field.setValue(String.valueOf(jan));
                }
                if (field.getFullyQualifiedName().equals("feb")) {
                    field.setValue(String.valueOf(feb));
                }
                if (field.getFullyQualifiedName().equals("mar")) {
                    field.setValue(String.valueOf(mar));
                }
                if (field.getFullyQualifiedName().equals("apr")) {
                    field.setValue(String.valueOf(apr));
                }
                if (field.getFullyQualifiedName().equals("may")) {
                    field.setValue(String.valueOf(mei));
                }
                if (field.getFullyQualifiedName().equals("jun")) {
                    field.setValue(String.valueOf(jun));
                }
                if (field.getFullyQualifiedName().equals("jul")) {
                    field.setValue(String.valueOf(jul));
                }
                if (field.getFullyQualifiedName().equals("aug")) {
                    field.setValue(String.valueOf(aug));
                }
                if (field.getFullyQualifiedName().equals("sep")) {
                    field.setValue(String.valueOf(sep));
                }
                if (field.getFullyQualifiedName().equals("oct")) {
                    field.setValue(String.valueOf(okt));
                }
                if (field.getFullyQualifiedName().equals("nov")) {
                    field.setValue(String.valueOf(nov));
                }
                if (field.getFullyQualifiedName().equals("dec")) {
                    field.setValue(String.valueOf(dec));
                }
                if (field.getFullyQualifiedName().equals("date")) {
                    field.setValue(String.valueOf(dateString));
                }
                if (field.getFullyQualifiedName().equals("period")) {
                    field.setValue(String.valueOf(dateFromInput + " | " + dateToInput));
                }
            }

            //Retrieving the page
            PDPage page = document.getPage(0);

            //Creating PDImageXObject object
            loginController login = new loginController();
            PDImageXObject pieChartImage = PDImageXObject
                    .createFromFile("src/fys/statistieken/PieChart_" + login.getUsersName() + ".png", document);
            PDImageXObject lineChartImage = PDImageXObject.createFromFile(
                    "src/fys/statistieken/LineChart_" + login.getUsersName() + ".png", document);

            //creating the PDPageContentStream object
            PDPageContentStream contents = new PDPageContentStream(document, page, true, true, true);

            //Drawing the image in the PDF document
            contents.drawImage(pieChartImage, 75, 0, 350, 300);
            contents.drawImage(lineChartImage, 425, 0, 350, 300);

            //Closing the PDPageContentStream object
            contents.close();

            //Sla het docment op.
            document.save("src/fys/statistieken/statistics" + dateFromInput + dateToInput + ".pdf");
            document.close();

            //Verwijder de plaatjes die waren opgeslagen.
            savePieChartAsPng().delete();
            saveLineChartAsPng().delete();

            //Sluit de popup
            home_pane.setDisable(false);
            pdfPane.setVisible(false);
        } catch (IOException ex) {
            Logger.getLogger(StatistiekenController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

From source file:helper.ThumbnailGenerator.java

License:Open Source License

private static BufferedImage writeImageFirstPage(PDDocument document, int imageType, int size)
        throws IOException {
    PDDocumentCatalog dc = document.getDocumentCatalog();
    dc.setPageMode(PDDocumentCatalog.PAGE_MODE_USE_THUMBS);
    dc.setPageLayout(PDDocumentCatalog.PAGE_LAYOUT_SINGLE_PAGE);
    PDPage page = (PDPage) dc.getAllPages().get(0);
    BufferedImage image = page.convertToImage(imageType, size);
    return image;
}