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:org.nuxeo.pdf.test.PDFWatermarkingTest.java

License:Open Source License

protected void checkHasWatermarkOnAllPages(Blob inBlob, String inWatermark) throws Exception {

    PDDocument doc = PDDocument.load(inBlob.getStream());
    utils.track(doc);//from   w  w w  . j  a va  2 s . c  om

    int count = doc.getNumberOfPages();
    for (int i = 1; i <= count; i++) {
        String txt = utils.extractText(doc, i, i);
        int pos = txt.indexOf(inWatermark);
        assertTrue("for page " + i + ", found pos is " + pos, pos > -1);
    }

    doc.close();
    utils.untrack(doc);
}

From source file:org.nuxeo.webpage.archiver.test.Utils.java

License:Open Source License

public static boolean hasText(Blob inBlob, String inText) throws IOException {

    boolean hasIt = false;
    PDDocument pdfDoc = null;

    try {//  w  w w . j  a va  2  s  .c  o m
        pdfDoc = PDDocument.load(inBlob.getFile());
        PDFTextStripper stripper = new PDFTextStripper();
        String txt;
        int max = pdfDoc.getNumberOfPages();
        for (int i = 1; i <= max; ++i) {
            stripper.setStartPage(i);
            stripper.setEndPage(i);
            txt = stripper.getText(pdfDoc);
            if (txt.indexOf(inText) > -1) {
                hasIt = true;
                break;
            }
        }
    } finally {
        if (pdfDoc != null) {
            pdfDoc.close();
        }
    }

    return hasIt;
}

From source file:org.nuxeo.webpage.archiver.WebpageToBlob.java

License:Apache License

protected boolean pdfLooksValid(File inPdf) {

    boolean valid = false;

    if (inPdf.exists() && inPdf.length() > 0) {
        PDDocument pdfDoc = null;
        try {/*from   w w w.j av a2 s  .c  o m*/
            pdfDoc = PDDocument.load(inPdf);
            if (pdfDoc.getNumberOfPages() > 0) {
                valid = true;
            }
        } catch (IOException e) {
            // Nothing
        } finally {
            if (pdfDoc != null) {
                try {
                    pdfDoc.close();
                } catch (IOException e) {
                    // Ignore
                }
            }
        }
    }

    return valid;
}

From source file:org.opensingular.lib.commons.pdf.TestPDFUtil.java

License:Apache License

private int countPages(File file) {
    try (RandomAccessBufferedFileInputStream in = new RandomAccessBufferedFileInputStream(file)) {
        PDFParser parser = new PDFParser(in);
        parser.parse();//  w ww.  ja va  2 s  .com
        PDDocument doc = parser.getPDDocument();
        int pages = doc.getNumberOfPages();
        doc.close();
        return pages;
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

From source file:org.oscarehr.document.web.SplitDocumentAction.java

License:Open Source License

public ActionForward split(ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    String docNum = request.getParameter("document");
    String[] commands = request.getParameterValues("page[]");

    Document doc = documentDAO.getDocument(docNum);

    //      String docdownload = oscar.OscarProperties.getInstance().getProperty("DOCUMENT_DIR");
    //      new File(docdownload);
    String docdownload = EDocUtil.getDocumentDir(doc.getDocfilename());

    String newFilename = doc.getDocfilename();
    String dbPrefix = EDocUtil.getDocumentPrefix(doc.getDocfilename());

    //      FileInputStream input = new FileInputStream(docdownload + doc.getDocfilename());
    FileInputStream input = new FileInputStream(EDocUtil.getDocumentPath(newFilename));
    PDFParser parser = new PDFParser(input);
    parser.parse();/*  w ww.ja  va 2s  .  c  o m*/
    PDDocument pdf = parser.getPDDocument();

    PDDocument newPdf = new PDDocument();

    List pages = pdf.getDocumentCatalog().getAllPages();

    if (commands != null) {
        for (String c : commands) {
            String[] command = c.split(",");
            int pageNum = Integer.parseInt(command[0]);
            int rotation = Integer.parseInt(command[1]);

            PDPage p = (PDPage) pages.get(pageNum - 1);
            p.setRotation(rotation);

            newPdf.addPage(p);
        }

    }

    //newPdf.save(docdownload + newFilename);

    if (newPdf.getNumberOfPages() > 0) {
        LoggedInInfo loggedInInfo = LoggedInInfo.loggedInInfo.get();

        //         EDoc newDoc = new EDoc("","", newFilename, "", loggedInInfo.loggedInProvider.getProviderNo(), doc.getDoccreator(), "", 'A', oscar.util.UtilDateUtilities.getToday("yyyy-MM-dd"), "", "", "demographic", "-1",0);
        EDoc newDoc = new EDoc("", "", EDocUtil.getDocumentFileName(newFilename), "",
                loggedInInfo.loggedInProvider.getProviderNo(), doc.getDoccreator(), "", 'A',
                oscar.util.UtilDateUtilities.getToday("yyyy-MM-dd"), "", "", "demographic", "-1", 0);
        newDoc.setFileName(dbPrefix + '.' + newDoc.getFileName());
        newDoc.setDocPublic("0");
        newDoc.setContentType("application/pdf");
        newDoc.setNumberOfPages(newPdf.getNumberOfPages());

        String newDocNo = EDocUtil.addDocumentSQL(newDoc);

        //         //newPdf.save(docdownload + newDoc.getFileName());
        System.gc(); //avoid Windows lock on channel
        newPdf.save(docdownload + EDocUtil.getDocumentFileName(newDoc.getFileName()));
        newPdf.close();

        WebApplicationContext ctx = WebApplicationContextUtils
                .getRequiredWebApplicationContext(request.getSession().getServletContext());
        ProviderInboxRoutingDao providerInboxRoutingDao = (ProviderInboxRoutingDao) ctx
                .getBean("providerInboxRoutingDAO");
        providerInboxRoutingDao.addToProviderInbox("0", newDocNo, "DOC");

        List<ProviderInboxItem> routeList = providerInboxRoutingDao.getProvidersWithRoutingForDocument("DOC",
                docNum);
        for (ProviderInboxItem i : routeList) {
            providerInboxRoutingDao.addToProviderInbox(i.getProviderNo(), newDocNo, "DOC");
        }

        providerInboxRoutingDao.addToProviderInbox(loggedInInfo.loggedInProvider.getProviderNo(), newDocNo,
                "DOC");

        QueueDocumentLinkDao queueDocumentLinkDAO = (QueueDocumentLinkDao) ctx.getBean("queueDocumentLinkDAO");
        Integer qid = 1;
        Integer did = Integer.parseInt(newDocNo.trim());
        queueDocumentLinkDAO.addToQueueDocumentLink(qid, did);

        ProviderLabRoutingDao providerLabRoutingDao = (ProviderLabRoutingDao) SpringUtils
                .getBean("providerLabRoutingDao");

        List<ProviderLabRoutingModel> result = providerLabRoutingDao.getProviderLabRoutingDocuments(docNum);
        if (!result.isEmpty()) {
            new ProviderLabRouting().route(newDocNo, result.get(0).getProviderNo(), "DOC");
        }

        PatientLabRoutingDao patientLabRoutingDao = (PatientLabRoutingDao) SpringUtils
                .getBean("patientLabRoutingDao");
        List<PatientLabRouting> result2 = patientLabRoutingDao.findDocByDemographic(docNum);

        if (!result2.isEmpty()) {
            PatientLabRouting newPatientRoute = new PatientLabRouting();

            newPatientRoute.setDemographicNo(result2.get(0).getDemographicNo());
            newPatientRoute.setLabNo(Integer.parseInt(newDocNo));
            newPatientRoute.setLabType("DOC");

            patientLabRoutingDao.persist(newPatientRoute);
        }

        DocumentDAO documentDao = (DocumentDAO) SpringUtils.getBean("documentDAO");
        CtlDocument result3 = documentDao.getCtrlDocument(Integer.parseInt(docNum));

        if (result3 != null) {
            CtlDocumentPK ctlDocumentPK = new CtlDocumentPK(Integer.parseInt(newDocNo), "demographic");
            CtlDocument newCtlDocument = new CtlDocument(ctlDocumentPK, result3.getModuleId());
            newCtlDocument.setStatus(result3.getStatus());
            documentDao.saveCtlDocument(newCtlDocument);
        }

    }

    pdf.close();
    input.close();

    return mapping.findForward("success");
}

From source file:org.oscarehr.document.web.SplitDocumentAction.java

License:Open Source License

public ActionForward removeFirstPage(ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    Document doc = documentDAO.getDocument(request.getParameter("document"));

    //      String docdownload = oscar.OscarProperties.getInstance().getProperty("DOCUMENT_DIR");
    String docdownload = EDocUtil.getDocumentPath(doc.getDocfilename());

    //      FileInputStream input = new FileInputStream(docdownload + doc.getDocfilename());
    FileInputStream input = new FileInputStream(docdownload);
    PDFParser parser = new PDFParser(input);
    parser.parse();// ww  w.j a va2s.  co m
    PDDocument pdf = parser.getPDDocument();

    // Documents must have at least 2 pages, for the first page to be removed.
    if (pdf.getNumberOfPages() <= 1) {
        return null;
    }

    int x = 1;
    for (Object p : pdf.getDocumentCatalog().getAllPages()) {
        ManageDocumentAction.deleteCacheVersion(doc, x);
        x++;
    }

    pdf.removePage(0);

    EDocUtil.subtractOnePage(request.getParameter("document"));

    //      pdf.save(docdownload + doc.getDocfilename());
    System.gc(); //avoid Win channel lock problem
    pdf.save(docdownload);
    pdf.close();

    input.close();

    return null;
}

From source file:org.pdfgal.pdfgal.pdfgal.PDFGalTest.java

License:Open Source License

@Test
public void merge() {

    final String inputUri1 = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\IMergeTest_1.pdf";
    final String inputUri2 = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\IMergeTest_2.pdf";
    final String inputUri3 = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\IMergeTest_3.pdf";
    final String inputUri4 = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\IMergeTest_4.pdf";
    final String inputUri5 = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\IMergeTest_5.pdf";
    final String outputUri = System.getProperty("user.dir") + TEST_RESOURCES + "merge\\OMergeTest.pdf";

    final List<String> inputUris = new ArrayList<String>();
    inputUris.add(inputUri1);/*from   ww  w .ja va  2 s. co m*/
    inputUris.add(inputUri2);
    inputUris.add(inputUri3);
    inputUris.add(inputUri4);
    inputUris.add(inputUri5);

    try {
        this.pdfGal.merge(inputUris, outputUri);

        final PDDocument inputDoc1 = PDDocument.load(inputUri1);
        final PDDocument inputDoc2 = PDDocument.load(inputUri2);
        final PDDocument inputDoc3 = PDDocument.load(inputUri3);
        final PDDocument inputDoc4 = PDDocument.load(inputUri4);
        final PDDocument inputDoc5 = PDDocument.load(inputUri5);
        final PDDocument outputDoc = PDDocument.load(outputUri);

        final Integer inputDoc1Size = inputDoc1.getNumberOfPages();
        final Integer inputDoc2Size = inputDoc2.getNumberOfPages();
        final Integer inputDoc3Size = inputDoc3.getNumberOfPages();
        final Integer inputDoc4Size = inputDoc4.getNumberOfPages();
        final Integer inputDoc5Size = inputDoc5.getNumberOfPages();

        final Integer inputDocsPagesTotal = inputDoc1Size + inputDoc2Size + inputDoc3Size + inputDoc4Size
                + inputDoc5Size;
        assertEquals(new Integer(outputDoc.getNumberOfPages()), inputDocsPagesTotal);

        final PDFTextStripper pdfStripper = new PDFTextStripper();
        String inputText = null;
        String outputText = null;
        Integer lastOutputPage = null;

        /* Let's compare the first document */
        // Extraction of output text
        lastOutputPage = inputDoc1Size;
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(lastOutputPage);
        outputText = pdfStripper.getText(outputDoc);
        // Extraction of input text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(inputDoc1Size);
        inputText = pdfStripper.getText(inputDoc1);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the second document */
        // Extraction of output text
        pdfStripper.setStartPage(lastOutputPage + 1);
        lastOutputPage = lastOutputPage + inputDoc2Size;
        pdfStripper.setEndPage(lastOutputPage);
        outputText = pdfStripper.getText(outputDoc);
        // Extraction of input text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(inputDoc2Size);
        inputText = pdfStripper.getText(inputDoc2);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the third document */
        // Extraction of output text
        pdfStripper.setStartPage(lastOutputPage + 1);
        lastOutputPage = lastOutputPage + inputDoc3Size;
        pdfStripper.setEndPage(lastOutputPage);
        outputText = pdfStripper.getText(outputDoc);
        // Extraction of input text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(inputDoc3Size);
        inputText = pdfStripper.getText(inputDoc3);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the fourth document */
        // Extraction of output text
        pdfStripper.setStartPage(lastOutputPage + 1);
        lastOutputPage = lastOutputPage + inputDoc4Size;
        pdfStripper.setEndPage(lastOutputPage);
        outputText = pdfStripper.getText(outputDoc);
        // Extraction of input text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(inputDoc4Size);
        inputText = pdfStripper.getText(inputDoc4);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the fifth document */
        // Extraction of output text
        pdfStripper.setStartPage(lastOutputPage + 1);
        lastOutputPage = lastOutputPage + inputDoc5Size;
        pdfStripper.setEndPage(lastOutputPage);
        outputText = pdfStripper.getText(outputDoc);
        // Extraction of input text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(inputDoc5Size);
        inputText = pdfStripper.getText(inputDoc5);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        // Documents clossing
        inputDoc1.close();
        inputDoc2.close();
        inputDoc3.close();
        inputDoc4.close();
        inputDoc5.close();
        outputDoc.close();

    } catch (final Exception e) {
        assertFalse(true);
    }
}

From source file:org.pdfgal.pdfgal.pdfgal.PDFGalTest.java

License:Open Source License

/**
 * Test for method PDFGal.split(String inputUri, String outputUri,
 * List<Integer> pages) throws IOException, COSVisitorException;
 *///from   w ww .  ja  va 2 s. co m
@Test
public void splitSettingPageNumber() {

    final String inputUri = System.getProperty("user.dir") + TEST_RESOURCES + "splitlist\\ISplitListTest.pdf";
    final String outputUri = System.getProperty("user.dir") + TEST_RESOURCES + "splitlist\\OSplitListTest.pdf";
    final String outputUri1 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitlist\\OSplitListTest_1.pdf";
    final String outputUri2 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitlist\\OSplitListTest_2.pdf";
    final String outputUri3 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitlist\\OSplitListTest_3.pdf";
    final String outputUri4 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitlist\\OSplitListTest_4.pdf";

    final List<Integer> pages = new ArrayList<Integer>();
    pages.add(2);
    pages.add(5);
    pages.add(7);

    try {
        this.pdfGal.split(inputUri, outputUri, pages);

        final PDDocument outputDoc1 = PDDocument.load(outputUri1);
        final PDDocument outputDoc2 = PDDocument.load(outputUri2);
        final PDDocument outputDoc3 = PDDocument.load(outputUri3);
        final PDDocument outputDoc4 = PDDocument.load(outputUri4);
        final PDDocument inputDoc = PDDocument.load(inputUri);

        final Integer outputDoc1Size = outputDoc1.getNumberOfPages();
        final Integer outputDoc2Size = outputDoc2.getNumberOfPages();
        final Integer outputDoc3Size = outputDoc3.getNumberOfPages();
        final Integer outputDoc4Size = outputDoc4.getNumberOfPages();

        final Integer inputDocsPagesTotal = outputDoc1Size + outputDoc2Size + outputDoc3Size + outputDoc4Size;
        assertEquals(new Integer(inputDoc.getNumberOfPages()), inputDocsPagesTotal);

        final PDFTextStripper pdfStripper = new PDFTextStripper();
        String inputText = null;
        String outputText = null;
        Integer lastInputPage = null;

        /* Let's compare the first document */
        // Extraction of input text
        lastInputPage = outputDoc1Size;
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc1Size);
        outputText = pdfStripper.getText(outputDoc1);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the second document */
        // Extraction of input text
        pdfStripper.setStartPage(lastInputPage + 1);
        lastInputPage = lastInputPage + outputDoc2Size;
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc2Size);
        outputText = pdfStripper.getText(outputDoc2);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the third document */
        // Extraction of input text
        pdfStripper.setStartPage(lastInputPage + 1);
        lastInputPage = lastInputPage + outputDoc3Size;
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc3Size);
        outputText = pdfStripper.getText(outputDoc3);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the fourth document */
        // Extraction of input text
        pdfStripper.setStartPage(lastInputPage + 1);
        lastInputPage = lastInputPage + outputDoc4Size;
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc4Size);
        outputText = pdfStripper.getText(outputDoc4);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        // Closing documents
        outputDoc1.close();
        outputDoc2.close();
        outputDoc3.close();
        outputDoc4.close();
        inputDoc.close();

    } catch (final Exception e) {
        assertFalse(true);
    }
}

From source file:org.pdfgal.pdfgal.pdfgal.PDFGalTest.java

License:Open Source License

/**
 * Test for method PDFGal.split(String inputUri, String outputUri, Integer
 * pages) throws IOException, COSVisitorException;
 *//*from  w  w  w  . j  a v  a  2s.  co m*/
@Test
public void splitSettingNumberOfPages() {

    final String inputUri = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitinteger\\ISplitIntegerTest.pdf";
    final String outputUri = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitinteger\\OSplitIntegerTest.pdf";
    final String outputUri1 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitinteger\\OSplitIntegerTest_1.pdf";
    final String outputUri2 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitinteger\\OSplitIntegerTest_2.pdf";
    final String outputUri3 = System.getProperty("user.dir") + TEST_RESOURCES
            + "splitinteger\\OSplitIntegerTest_3.pdf";

    final Integer pages = 3;

    try {
        this.pdfGal.split(inputUri, outputUri, pages);

        final PDDocument outputDoc1 = PDDocument.load(outputUri1);
        final PDDocument outputDoc2 = PDDocument.load(outputUri2);
        final PDDocument outputDoc3 = PDDocument.load(outputUri3);
        final PDDocument inputDoc = PDDocument.load(inputUri);

        final Integer outputDoc1Size = outputDoc1.getNumberOfPages();
        final Integer outputDoc2Size = outputDoc2.getNumberOfPages();
        final Integer outputDoc3Size = outputDoc3.getNumberOfPages();

        final Integer inputDocsPagesTotal = outputDoc1Size + outputDoc2Size + outputDoc3Size;
        assertEquals(new Integer(inputDoc.getNumberOfPages()), inputDocsPagesTotal);

        final PDFTextStripper pdfStripper = new PDFTextStripper();
        String inputText = null;
        String outputText = null;
        Integer lastInputPage = null;

        /* Let's compare the first document */
        // Extraction of input text
        lastInputPage = outputDoc1Size;
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc1Size);
        outputText = pdfStripper.getText(outputDoc1);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the second document */
        // Extraction of input text
        pdfStripper.setStartPage(lastInputPage + 1);
        lastInputPage = lastInputPage + outputDoc2Size;
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc2Size);
        outputText = pdfStripper.getText(outputDoc2);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        /* Let's compare the third document */
        // Extraction of input text
        pdfStripper.setStartPage(lastInputPage + 1);
        lastInputPage = lastInputPage + outputDoc3Size;
        pdfStripper.setEndPage(lastInputPage);
        inputText = pdfStripper.getText(inputDoc);
        // Extraction of output text
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(outputDoc3Size);
        outputText = pdfStripper.getText(outputDoc3);
        // Comparison of output and input text
        assertEquals(outputText, inputText);

        // Closing documents
        outputDoc1.close();
        outputDoc2.close();
        outputDoc3.close();
        inputDoc.close();

    } catch (final Exception e) {
        assertFalse(true);
    }
}

From source file:org.pdfgal.pdfgal.utils.impl.PDFUtilsImpl.java

License:Open Source License

@Override
public Integer getPages(final String uri) throws IOException {
    if (StringUtils.isBlank(uri)) {
        throw new IOException();
    }//  w ww .  ja v a 2s.  c  om
    final PDDocument document = PDDocument.load(uri);
    final Integer numberOfPages = document.getNumberOfPages();
    document.close();
    return numberOfPages;
}