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

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

Introduction

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

Prototype

public int getNumberOfPages() 

Source Link

Document

This will return the total page count of the PDF document.

Usage

From source file:Reports.MgmtNoticesDataReader.java

public void singlePdfGenerator(String pdfFileNameBase, List<String> cycles)
        throws IOException, COSVisitorException {
    GlobalVar.dirMake(new File(pdfFileNameBase)); //create a folder with the same name                          
    int rowCount = 0;
    int pageCount = 1;
    PDDocument pdf = new PDDocument();
    PDPage page; //default size PAGE_SIZE_A4
    PDPageContentStream stream;/*w  ww .  jav a 2s .co m*/
    //page.setRotation(90); //counterclock wise rotate 90 degree  ////left hand rule

    //        stream.setFont(PDType1Font.COURIER, FONT_SIZE);
    String lastUpdate = null;
    String lastTrans = null;
    System.out.println("MGNT_DATA keyset:" + MGNT_DATA.keySet());
    //        System.out.println("Cycles empty? " + cycles.isEmpty() + cycles.size());
    //        System.out.println(cycles);
    String pdfFileName = pdfFileNameBase + "\\MGMT NTC UPDT";
    for (String updateDate : MGNT_DATA.keySet()) {
        Map<String, List<String>> thisDTData = MGNT_DATA.get(updateDate);
        lastUpdate = updateDate;
        System.out.println("thisDT_DATA keyset:" + thisDTData.keySet());
        pdfFileName = pdfFileName + " " + updateDate;
        for (String trans : thisDTData.keySet()) {
            if (cycles.isEmpty() || cycles.contains(trans)) {
                //PDDocument pdf = new PDDocument();    
                lastTrans = trans;
                List<String> thisCycle = thisDTData.get(trans);
                pageCount = 1; // new cycle, restart page num
                page = new PDPage(); //page break
                stream = new PDPageContentStream(pdf, page, true, false);
                stream.beginText();
                page.setRotation(PAGE_ROT_DEGREE);
                //stream.setFont(PDType1Font.COURIER, FONT_SIZE);
                addBigFontUpdateNumberAndCycle(updateDate, trans, stream);
                stream.setFont(PDType1Font.COURIER, FONT_SIZE);
                // stream.setFont(PDType1Font.
                int thisCycleRowCount = 0;
                for (String row : thisCycle) {
                    if (thisCycleRowCount > MAX_NUM_TRANS) {
                        //close the current page
                        setupFootNote(stream, pageCount, trans, updateDate);
                        pageCount++;
                        stream.endText();
                        stream.close();
                        pdf.addPage(page);

                        // start a new page
                        page = new PDPage();
                        stream = new PDPageContentStream(pdf, page, true, false);
                        page.setRotation(PAGE_ROT_DEGREE);
                        stream.beginText();
                        stream.setFont(PDType1Font.COURIER, FONT_SIZE);
                        thisCycleRowCount = 0;
                    }
                    stream.setTextRotation(TEXT_ROT_RAD, TRANS_X + thisCycleRowCount * INVERVAL_X, TRANS_Y);
                    stream.drawString(row);
                    thisCycleRowCount++;
                }
                setupFootNote(stream, pageCount, lastTrans, lastUpdate);
                stream.endText();
                stream.close();
                pdf.addPage(page);

            }
        }
    }
    if (pdf.getNumberOfPages() > 0) {
        pdfFileName = pdfFileName + ".pdf";
        pdf.save(pdfFileName);
    }
    pdf.close();
}

From source file:richtercloud.document.scanner.it.ImageStorageIT.java

License:Open Source License

@Test
public void testImageStorage() throws IOException, StorageException, SQLException, InterruptedException,
        StorageConfValidationException, StorageCreationException, OSNotRecognizedException,
        ArchitectureNotRecognizedException, ExtractionException, MissingSystemBinary, BuildFailureException,
        ModuleBuildFailureException, FieldOrderValidationException, ImageWrapperException {
    LOGGER.info("testImageStorage");
    try {/*from w  w w.j  a v  a  2  s.  c o  m*/
        new JFXPanel();
        //- necessary in order to avoid
        //`java.lang.IllegalStateException: Toolkit not initialized`
        //- should be run here in order to be catchable at a useful
        //location; figure out how to do this if there's more than this
        //one test
        File databaseDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile();
        FileUtils.forceDelete(databaseDir);
        //databaseDir mustn't exist for Apache Derby
        LOGGER.debug(String.format("database directory is %s", databaseDir.getAbsolutePath()));
        File schemeChecksumFile = File.createTempFile(ImageStorageIT.class.getSimpleName(), "scheme-checksum");
        LOGGER.debug(String.format("scheme checksum file is %s", schemeChecksumFile.getAbsolutePath()));
        File imageStorageDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile();
        LOGGER.debug(String.format("image storage directory is %s", imageStorageDir.getAbsolutePath()));
        Connection connection = DriverManager
                .getConnection(String.format("jdbc:derby:%s;create=true", databaseDir.getAbsolutePath()));
        connection.close();
        Set<Class<?>> entityClasses = new HashSet<Class<?>>(
                Arrays.asList(EntityByteArray.class, EntityImageIcon.class));
        //        DerbyNetworkPersistenceStorageConf storageConf = new DerbyNetworkPersistenceStorageConf(entityClasses,
        //                "localhost",
        //                schemeChecksumFile);
        //        storageConf.setDatabaseDir(databaseDir);
        //        storageConf.setPassword("sa");
        //        PersistenceStorage storage = new DerbyNetworkPersistenceStorage(storageConf,
        //                "richtercloud_document-scanner-it_jar_1.0-SNAPSHOTPU");
        DerbyEmbeddedPersistenceStorageConf storageConf = new DerbyEmbeddedPersistenceStorageConf(entityClasses,
                databaseDir.getAbsolutePath(), schemeChecksumFile);
        String persistenceUnitName = "document-scanner-it";
        FieldRetriever fieldRetriever = new JPAOrderedCachedFieldRetriever(
                Constants.QUERYABLE_AND_EMBEDDABLE_CLASSES);
        final PersistenceStorage<Long> derbyEmbeddedStorage1 = new DerbyEmbeddedPersistenceStorage(storageConf,
                persistenceUnitName, 1, //parallelQueryCount
                fieldRetriever);
        derbyEmbeddedStorage1.start();
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            LOGGER.info("shutting down storage");
            derbyEmbeddedStorage1.shutdown();
            LOGGER.info("storage shut down");
            try {
                FileUtils.deleteDirectory(databaseDir);
                LOGGER.info(String.format("database directory '%s' deleted", databaseDir.getAbsolutePath()));
            } catch (IOException ex) {
                LOGGER.info(String.format(
                        "deletion of database directory '%s' failed, see nested exception for details",
                        databaseDir.getAbsolutePath()), ex);
            }
            try {
                FileUtils.deleteDirectory(imageStorageDir);
            } catch (IOException ex) {
                java.util.logging.Logger.getLogger(ImageStorageIT.class.getName()).log(Level.SEVERE, null, ex);
            }
        }, String.format("%s shutdown hook", ImageStorageIT.class.getSimpleName())));
        List<ImageIcon> imageIcons = new LinkedList<>();
        InputStream pdfInputStream = ImageStorageIT.class.getResourceAsStream("/image_data.pdf");
        assert pdfInputStream != null;
        PDDocument document = PDDocument.load(pdfInputStream);
        @SuppressWarnings("unchecked")
        List<OCRSelectPanel> oCRSelectPanels = new LinkedList<>();
        List<ImageWrapper> imageWrappers = new LinkedList<>();
        byte[] data;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        PDFRenderer pdfRenderer = new PDFRenderer(document);
        IssueHandler issueHandler = new LoggerIssueHandler(LOGGER);
        for (int page = 0; page < document.getNumberOfPages(); page++) {
            BufferedImage image = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
            ImageWrapper imageWrapper = new CachingImageWrapper(databaseDir, image, issueHandler);
            OCRSelectPanel oCRSelectPanel = new DefaultOCRSelectPanel(imageWrapper,
                    DocumentScannerConf.PREFERRED_SCAN_RESULT_PANEL_WIDTH_DEFAULT, issueHandler);
            oCRSelectPanels.add(oCRSelectPanel);
            ImageIcon imageIcon = new ImageIcon(image);
            objectOutputStream.writeObject(imageIcon);
            imageIcons.add(imageIcon);
            imageWrappers.add(new CachingImageWrapper(imageStorageDir, image, issueHandler));
        }
        document.close();
        data = outputStream.toByteArray();

        EntityByteArray entityA = new EntityByteArray(1L, data);
        EntityByteArray entityA2 = new EntityByteArray(3L, data);
        EntityImageIcon entityB = new EntityImageIcon(2L, imageIcons);
        EntityImageIcon entityB2 = new EntityImageIcon(4L, imageIcons);
        EntityImageWrapper entityC1 = new EntityImageWrapper(imageWrappers);
        EntityImageWrapper entityC2 = new EntityImageWrapper(imageWrappers);
        long time0 = System.currentTimeMillis();
        entityA.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA));
        derbyEmbeddedStorage1.store(entityA);
        long time1 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA: %d ms", time1 - time0));
        entityB.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityB));
        derbyEmbeddedStorage1.store(entityB);
        long time2 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityB: %d ms", time2 - time1));
        //store another time in order to figure out caching effects
        entityA2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA2));
        derbyEmbeddedStorage1.store(entityA2);
        long time3 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA2: %d ms", time3 - time2));
        entityB2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityB2));
        derbyEmbeddedStorage1.store(entityB2);
        long time4 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityB2: %d ms", time4 - time3));
        entityC1.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityC1));
        derbyEmbeddedStorage1.store(entityC1);
        long time5 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityC1: %d ms", time5 - time4));
        entityC2.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityC2));
        derbyEmbeddedStorage1.store(entityC2);
        long time6 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityC2: %d ms", time6 - time5));
        LOGGER.info(String.format("size of entityA's data: %d KiB", entityA.getData().length / 1024));

        long randomSeed = System.currentTimeMillis();
        LOGGER.info(String.format("random seed is: %d", randomSeed));
        Random random = new Random(randomSeed);
        byte[] referenceBytes = new byte[data.length];
        random.nextBytes(referenceBytes);
        EntityByteArray entityA3 = new EntityByteArray(5L, referenceBytes);
        EntityByteArray entityA4 = new EntityByteArray(6L, referenceBytes);
        long time7 = System.currentTimeMillis();
        entityA3.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA3));
        derbyEmbeddedStorage1.store(entityA3);
        long time8 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA3: %d ms", time8 - time7));
        entityA4.setId(MemorySequentialIdGenerator.getInstance().getNextId(entityA4));
        derbyEmbeddedStorage1.store(entityA4);
        long time9 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA4: %d ms", time9 - time8));
        derbyEmbeddedStorage1.shutdown();

        //test whether EntityImagerWrapper is deserializable
        PersistenceStorage<Long> derbyEmbeddedStorage2 = new DerbyEmbeddedPersistenceStorage(storageConf,
                persistenceUnitName, 1, //parallelQueryCount
                fieldRetriever);
        derbyEmbeddedStorage2.start();
        List<EntityImageWrapper> queryResults = derbyEmbeddedStorage2.runQueryAll(EntityImageWrapper.class);
        assert queryResults.size() == 2;
        EntityImageWrapper queryResult0 = queryResults.get(0);
        List<ImageWrapper> queryResult0Data = queryResult0.getData();
        for (ImageWrapper queryResult0Datum : queryResult0Data) {
            LOGGER.info(String.format("inspect image wrapper file %s ms", queryResult0Datum.getStorageFile()));
        }
        derbyEmbeddedStorage2.shutdown();

        //test PostgreSQL
        File databaseDirPostgresql = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile();
        FileUtils.forceDelete(databaseDirPostgresql);
        //an inexisting database directory triggers creation of database
        //with initdb
        LOGGER.debug(
                String.format("PostgreSQL database directory is %s", databaseDirPostgresql.getAbsolutePath()));
        //build PostgreSQL
        File postgresqlInstallationPrefixDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName())
                .toFile();
        LOGGER.debug(String.format("using '%s' as PostgreSQL installation prefix",
                postgresqlInstallationPrefixDir.getAbsolutePath()));
        File downloadDir = Files.createTempDirectory(ImageStorageIT.class.getSimpleName()).toFile();
        //SystemUtils.getUserHome() causes trouble
        //($HOME/jhbuild/checkout might be jhbuilds default extraction
        //directory)
        LOGGER.debug(String.format("using '%s' as JHBuild Java wrapper download directory", downloadDir));
        JHBuildJavaWrapper jHBuildJavaWrapper = new JHBuildJavaWrapper(postgresqlInstallationPrefixDir, //installationPrefixDir
                downloadDir, //downloadDir
                ActionOnMissingBinary.DOWNLOAD, ActionOnMissingBinary.DOWNLOAD, new AutoDownloader(), //downloader
                false, true, //silenceStdout
                true, //silenceStderr
                issueHandler);
        String moduleName = "postgresql-9.6.3";
        LOGGER.info(
                String.format("building module %s from JHBuild Java wrapper's default moduleset", moduleName));
        jHBuildJavaWrapper.installModuleset(moduleName);
        //moduleset shipped with jhbuild-java-wrapper
        String initdb = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "initdb"))
                .getAbsolutePath();
        String postgres = new File(postgresqlInstallationPrefixDir,
                String.join(File.separator, "bin", "postgres")).getAbsolutePath();
        String createdb = new File(postgresqlInstallationPrefixDir,
                String.join(File.separator, "bin", "createdb")).getAbsolutePath();
        String pgCtl = new File(postgresqlInstallationPrefixDir, String.join(File.separator, "bin", "pg_ctl"))
                .getAbsolutePath();
        String databaseName = "image-storage-it";
        String username = "docu";
        String password = "docu";
        PostgresqlAutoPersistenceStorageConf postgresqlPersistenceStorageConf = new PostgresqlAutoPersistenceStorageConf(
                entityClasses, "localhost", //hostname
                username, //username
                password, databaseName, schemeChecksumFile, databaseDirPostgresql.getAbsolutePath(), //databaseDir
                initdb, postgres, createdb, pgCtl);
        PersistenceStorage<Long> postgresqlStorage = new PostgresqlAutoPersistenceStorage(
                postgresqlPersistenceStorageConf, persistenceUnitName, 1, //parallelQueryCount
                fieldRetriever, issueHandler);
        postgresqlStorage.start();
        time0 = System.currentTimeMillis();
        postgresqlStorage.store(entityA);
        time1 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA: %d ms", time1 - time0));
        postgresqlStorage.store(entityB);
        time2 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityB: %d ms", time2 - time1));
        //store another time in order to figure out caching effects
        postgresqlStorage.store(entityA2);
        time3 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA2: %d ms", time3 - time2));
        postgresqlStorage.store(entityB2);
        time4 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityB2: %d ms", time4 - time3));
        LOGGER.info(String.format("size of entityA's data: %d KiB", entityA.getData().length / 1024));

        time9 = System.currentTimeMillis();
        postgresqlStorage.store(entityA3);
        time8 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA3: %d ms", time8 - time9));
        postgresqlStorage.store(entityA4);
        time9 = System.currentTimeMillis();
        LOGGER.info(String.format("time for storing entityA4: %d ms", time9 - time8));
        postgresqlStorage.shutdown();
        Caching.getCachingProvider().close();
    } catch (UnsupportedOperationException ex) {
        //`new JFXPanel()` for JavaFX toolkit initialization causes
        //`java.lang.UnsupportedOperationException: Unable to open DISPLAY`
        //instead of HeadlessException (which is a subclass of
        //UnsupportedOperationException
        LOGGER.warn(
                "UnsupportedOperationException indicates that the test is run on a headless machine, e.g. a CI service",
                ex);
    }
}

From source file:ru.ksu.niimm.cll.mocassin.crawl.parser.pdf.PdflatexWrapperTest.java

License:Open Source License

private static void checkIfPDFGenerated(String collectionId, int expectedNumberOfPages)
        throws FileNotFoundException, IOException {
    File pdfFile = new File("/opt/mocassin/aux-pdf/" + StringUtil.arxivid2filename(collectionId, "pdf"));
    Assert.assertTrue(String.format("The PDF file='%s' hasn't been generated.", pdfFile.getName()),
            pdfFile.exists());/* w w  w  .j  a  v a 2 s.com*/
    PDDocument pdfDoc = PDDocument.load(new FileInputStream(pdfFile));
    try {
        Assert.assertEquals("Number of pages in the generated document does not equal to the expected one",
                expectedNumberOfPages, pdfDoc.getNumberOfPages());
    } finally {
        pdfDoc.close();
    }
}

From source file:serock.pdfpagerestorer.PdfPageRestorer.java

License:Open Source License

private static void removePages(final PDDocument pdDoc) {
    final int numberOfPages = pdDoc.getNumberOfPages();
    for (int i = numberOfPages - 1; i >= 0; i--) {
        pdDoc.removePage(i);/*w w  w.  j  a  v  a  2s  . c o m*/
    }
}

From source file:src.controller.DocumentController.java

/**
 * Supprime la page spcifie d'un document
 * @param document/*from w  ww.ja v  a2  s  . c  om*/
 * @param id 
 */
public void removePage(PDDocument document, int id) {
    if (document.getNumberOfPages() > 1) {
        document.removePage(id);
    } else {
        System.out.println(TRANSLATOR.getString("PAGE_DELETE_FAIL"));
    }
}

From source file:src.view.controller.MainController.java

public void testAddImage() {
    try {//www  .java2 s  . c  om
        ImageController imageController = new ImageController();

        // Chargement du document
        File file = new File(TEST_DOC_TITLE + ".pdf");
        PDDocument document = PDDocument.load(file);

        document.addPage(new PDPage());

        PDPageContentStream contentStream = new PDPageContentStream(document,
                document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true);

        // Ajout d'une image sur la deuxime page
        imageController.addImage(document, contentStream, TEST_IMG_NAME, 100, 400, 0.2f);

        contentStream.close();

        document.save(TEST_DOC_TITLE + ".pdf");
        document.close();

        System.out.println(TRANSLATOR.getString("TEST_IMAGE_ADDED"));
    } catch (IOException e) {
        System.out.println(e.toString());
    }
}

From source file:src.view.controller.MainController.java

public void testAddTable() {
    try {//ww w  . j  a  v a2 s.c  o  m
        TableController tableController = new TableController();

        // Chargement du document
        File file = new File(TEST_DOC_TITLE + ".pdf");
        PDDocument document = PDDocument.load(file);

        document.addPage(new PDPage());

        PDPageContentStream contentStream = new PDPageContentStream(document,
                document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true);

        // Instanciation d'un tableau
        Table table = new Table(100, 600, 200, 200);
        // Gnration du tableau
        table.generateTable(2, 7);
        table.addColumns(2);

        // Rcupration d'une cellule
        Cell cell = table.getCell(0);
        // Initialisation du contenu
        cell.setContent("TEST");
        // Affichage du contenu dans la cellule
        tableController.printCellContent(contentStream, cell, "center", "middle");

        // Ajout d'un tableau
        tableController.printTable(contentStream, table, false);

        contentStream.close();
        document.save(TEST_DOC_TITLE + ".pdf");

        System.out.println(TRANSLATOR.getString("TEST_TABLE_ADDED"));
    } catch (IOException e) {
        System.out.println(e.toString());
    }
}

From source file:summarizer.pdfReader.java

List<String> parsePdf(String filePath, int startPage, int endPage, boolean newLine) {
    PDDocument pd;
    BufferedWriter wr;/*from  w  ww.j av  a2s  .  c  om*/
    List<String> outputStrings = new ArrayList<String>();
    try {
        File input = new File(filePath); // The PDF file from where you would like to extract
        File output = new File("SampleText.txt"); // The text file where you are going to store the extracted data
        pd = PDDocument.load(input);
        System.out.println(pd.getNumberOfPages());
        if (pd.isEncrypted()) {
            System.out.println("Error PDF is encrypted, cannot Parse");
        }
        PDFTextStripper stripper = new PDFTextStripper();
        stripper.setStartPage(startPage); //Start extracting from page 14
        stripper.setEndPage(endPage); //Extract till page 16
        wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output)));
        stripper.writeText(pd, wr);
        if (pd != null) {
            pd.close();
        }
        wr.close();
        BufferedReader in = new BufferedReader(new FileReader("SampleText.txt"));
        String s;
        StringBuilder sb = new StringBuilder();
        while ((s = in.readLine()) != null) {
            sb.append(" ");
            sb.append(s);
        }
        s = sb.toString();
        String[] tokenizedStrings;
        if (newLine) {
            tokenizedStrings = s.split("\\r?\\n");
        } else {
            tokenizedStrings = s.split("\\.");
        }
        for (String x : tokenizedStrings) {
            if (x.compareTo("") != 0)
                outputStrings.add(x);
        }
        //System.out.println(s);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return outputStrings;
}

From source file:Tools.PostProcessing.java

private String generateProcessedAndRejectPDFs(String preProcPdfFileName)
        throws IOException, COSVisitorException {
    PDDocument pdf = PDDocument.load(preProcPdfFileName);
    PDDocument rejectPdf = new PDDocument();
    PDDocument cedmsPdf = new PDDocument();
    //String rejectPdfFileName = preProcPdfFileName.replace(".pdf", "_forReject.pdf");  
    //String cedmsPdfFileName = preProcPdfFileName.replace(".pdf", "_forCEDMS.pdf");  
    int pageNum = pdf.getNumberOfPages(); //total number of pages in the pdf file
    // add reject page into rejectPdf
    PDFTextStripper pdfStripper = new PDFTextStripper();
    int seqNumber = 1;
    boolean isLastReject = true; // last page status  
    for (int i = 0; i < pageNum; i++) {
        PDPage page = (PDPage) pdf.getDocumentCatalog().getAllPages().get(i);
        int pageIndex = i + 1;
        pdfStripper.setStartPage(pageIndex);
        pdfStripper.setEndPage(pageIndex);
        String res = pdfStripper.getText(pdf);
        // System.out.println(res);

        if (res.contains(GlobalVar.PRE_PROC_KEY_SYMBOL)) {
            String[] data = GlobalVar.getCtrlNumAndfullSSN(res);
            String ctrlNum = data[0];
            String fullSSN = data[1];
            // System.out.println("full ssn:" + fullSSN + ". ctrl num:" + ctrlNum);
            //                if(LEGIT_LV_MAP_FOR_COLOR_LV_LOG.containsKey(fullSSN)){
            //                   // System.out.println("ctrl num: " + LEGIT_LV_MAP.get(fullSSN));
            //                }
            if (LEGIT_LV_MAP_FOR_COLOR_LV_LOG.containsKey(fullSSN)
                    && LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).containsKey(ctrlNum)) {
                // System.out.println("Good leave");
                int thisSeqNumber = Integer.parseInt(LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).get(ctrlNum));
                if (thisSeqNumber == seqNumber) {
                    cedmsPdf.addPage(page);
                    //LEGIT_LV_MAP_FOR_COLOR_LV_LOG.get(fullSSN).remove(ctrlNum);  // remove 
                    isLastReject = false;
                    seqNumber++;/* w w  w . j av  a2  s  .  co  m*/
                } else {
                    String msg = "Order might be incorrect or there is a duplicate! ssn: " + fullSSN
                            + " ctrl num: " + ctrlNum + ". Seq number is: " + seqNumber;
                    //JOptionPane.showMessageDialog(null, msg);
                    System.out.println(msg);
                }
            } else {
                rejectPdf.addPage(page);
                drawComments(rejectPdf, page, fullSSN, ctrlNum);
                isLastReject = true;
            }
        } else { // add the supporting documents to the last pdf file
            if (isLastReject) {
                rejectPdf.addPage(page);
            } else {
                cedmsPdf.addPage(page);
            }
        }
    }

    String cedmsPdfFileName = null;
    String rejectPdfFileName = null;
    if (preProcPdfFileName.contains(".pdf")) {
        cedmsPdfFileName = preProcPdfFileName.replace(".pdf", GlobalVar.PRE_CEDMS_PDF);
        rejectPdfFileName = preProcPdfFileName.replace(".pdf", "_forReject.pdf");
    } else if (preProcPdfFileName.contains(".PDF")) {
        cedmsPdfFileName = preProcPdfFileName.replace(".PDF", GlobalVar.PRE_CEDMS_PDF);
        rejectPdfFileName = preProcPdfFileName.replace(".PDF", "_forReject.pdf");
    } else {
        JOptionPane.showMessageDialog(null, "Invalid pre-processing file.");
    }

    //        preProcPdfFileName.replace(".pdf", "_forReject.pdf"); 
    //        if (preProcPdfFileName.contains(".pdf")){
    //           cedmsPdfFileName = preProcPdfFileName.replace(".pdf", GlobalVar.PRE_CEDMS_PDF); 
    //        } else if (preProcPdfFileName.contains(".PDF")) {
    //           cedmsPdfFileName = preProcPdfFileName.replace(".PDF", GlobalVar.PRE_CEDMS_PDF);
    //        } else {
    //           JOptionPane.showMessageDialog(null, "Invalid pre-processing file."); 
    //        }
    //        
    if (rejectPdf.getNumberOfPages() > 0 && cedmsPdf.getNumberOfPages() > 0) {
        cedmsPdf.save(cedmsPdfFileName);
        rejectPdf.save(rejectPdfFileName);
        //            JOptionPane.showMessageDialog(null, "The ready-for-upload and the rejected "
        //                    + "leave forms are saved in *_forCEDMS.pdf and *_forReject.pdf, respectively.");
    } else if (rejectPdf.getNumberOfPages() > 0) {
        rejectPdf.save(rejectPdfFileName);
        cedmsPdfFileName = null; // no cedms file is generated.
        //            JOptionPane.showMessageDialog(null, "The rejected leave forms are saved in *_forReject.pdf.");
    } else if (cedmsPdf.getNumberOfPages() > 0) {
        cedmsPdf.save(cedmsPdfFileName);
        //            JOptionPane.showMessageDialog(null, "The ready-for-upload leave forms are saved in *_forCEDMS.pdf."); 
    }
    rejectPdf.close();
    cedmsPdf.close();
    pdf.close();
    return cedmsPdfFileName;
}

From source file:uk.ac.liverpool.thumbnails.PDFService.java

License:Open Source License

public BufferedImage generateThumb(URI u, File f, int w, int h, int pn) throws IOException {
    PDDocument document = getPages(u, f);
    List pages = document.getDocumentCatalog().getAllPages();
    int pagen = document.getNumberOfPages();
    int i = 0;/*w  w w  . ja  v a 2s.  c  om*/
    if (pn < pages.size())
        i = pn;
    PDPage page = (PDPage) pages.get(i);
    PDRectangle mBox = page.findMediaBox();
    float widthPt = mBox.getWidth();
    float heightPt = mBox.getHeight();
    float sx = widthPt / (float) w;
    float sy = heightPt / (float) h;
    BufferedImage bi = page.convertToImage(BufferedImage.TYPE_INT_ARGB, Math.round(72 / Math.max(sx, sy)));

    return bi;

}