Example usage for com.itextpdf.text.pdf PdfReader close

List of usage examples for com.itextpdf.text.pdf PdfReader close

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfReader close.

Prototype

public void close() 

Source Link

Document

Closes the reader, and any underlying stream or data source used to create the reader

Usage

From source file:at.laborg.briss.CropManager.java

License:Open Source License

public static CropJob createCropJob(File source) throws IOException {
    CropJob result = null;/*from   www  .j  a v  a 2s  . co  m*/
    if (source != null && source.exists()) {
        PdfReader reader = new PdfReader(source.getAbsolutePath());
        result = new CropJob(source, reader.getNumberOfPages(), reader.getInfo(),
                SimpleBookmark.getBookmark(reader));
        reader.close();
        return result;
    }
    return result;
}

From source file:at.laborg.briss.CropManager.java

License:Open Source License

private static File copyToMultiplePages(CropJob cropJob) throws IOException, DocumentException {

    PdfReader reader = new PdfReader(cropJob.getSource().getAbsolutePath());
    Document document = new Document();

    File resultFile = File.createTempFile("cropped", ".pdf");
    PdfSmartCopy pdfCopy = new PdfSmartCopy(document, new FileOutputStream(resultFile));
    document.open();/*from  w w w  . jav  a2  s .  com*/
    PdfImportedPage page;

    for (int pageNumber = 1; pageNumber <= cropJob.getSourcePageCount(); pageNumber++) {
        SingleCluster currentCluster = cropJob.getClusterCollection().getSingleCluster(pageNumber);
        page = pdfCopy.getImportedPage(reader, pageNumber);
        pdfCopy.addPage(page);
        for (int j = 1; j < currentCluster.getRatiosList().size(); j++) {
            pdfCopy.addPage(page);
        }
    }
    document.close();
    pdfCopy.close();
    reader.close();
    return resultFile;
}

From source file:at.laborg.briss.CropManager.java

License:Open Source License

private static void cropMultipliedFile(File source, CropJob cropJob)
        throws FileNotFoundException, DocumentException, IOException {

    PdfReader reader = new PdfReader(source.getAbsolutePath());
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(cropJob.getDestinationFile()));
    stamper.setMoreInfo(cropJob.getSourceMetaInfo());

    PdfDictionary pageDict;//  w  w w  .j  ava2s . co m
    int newPageNumber = 1;
    for (int origPageNumber = 1; origPageNumber <= cropJob.getSourcePageCount(); origPageNumber++) {
        SingleCluster cluster = cropJob.getClusterCollection().getSingleCluster(origPageNumber);

        // if no crop was selected do nothing
        if (cluster.getRatiosList().size() == 0) {
            newPageNumber++;
            continue;
        }

        for (Float[] ratios : cluster.getRatiosList()) {

            pageDict = reader.getPageN(newPageNumber);

            List<Rectangle> boxes = new ArrayList<Rectangle>();
            boxes.add(reader.getBoxSize(newPageNumber, "media"));
            boxes.add(reader.getBoxSize(newPageNumber, "crop"));
            int rotation = reader.getPageRotation(newPageNumber);

            Rectangle scaledBox = calculateScaledRectangle(boxes, ratios, rotation);

            PdfArray scaleBoxArray = new PdfArray();
            scaleBoxArray.add(new PdfNumber(scaledBox.getLeft()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getBottom()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getRight()));
            scaleBoxArray.add(new PdfNumber(scaledBox.getTop()));

            pageDict.put(PdfName.CROPBOX, scaleBoxArray);
            pageDict.put(PdfName.MEDIABOX, scaleBoxArray);
            // increment the pagenumber
            newPageNumber++;
        }
        int[] range = new int[2];
        range[0] = newPageNumber - 1;
        range[1] = cropJob.getSourcePageCount() + (newPageNumber - origPageNumber);
        SimpleBookmark.shiftPageNumbers(cropJob.getSourceBookmarks(), cluster.getRatiosList().size() - 1,
                range);
    }
    stamper.setOutlines(cropJob.getSourceBookmarks());
    stamper.close();
    reader.close();
}

From source file:at.laborg.briss.utils.ClusterCreator.java

License:Open Source License

public static ClusterDefinition clusterPages(final File source, final PageExcludes pageExcludes)
        throws IOException {
    PdfReader reader = new PdfReader(source.getAbsolutePath());

    ClusterDefinition clusters = new ClusterDefinition();

    for (int page = 1; page <= reader.getNumberOfPages(); page++) {

        Rectangle layoutBox = getLayoutBox(reader, page);

        // create Cluster
        // if the pagenumber should be excluded then use it as a
        // discriminating parameter, else use default value

        boolean excluded = checkExclusionAndGetPageNumber(pageExcludes, page);

        PageCluster tmpCluster = new PageCluster(page % 2 == 0, (int) layoutBox.getWidth(),
                (int) layoutBox.getHeight(), excluded, page);

        clusters.addOrMergeCluster(tmpCluster);
    }/*  ww w  . j  av a2s. c om*/
    reader.close();
    clusters.selectAndSetPagesForMerging();
    return clusters;
}

From source file:at.laborg.briss.utils.DocumentCropper.java

License:Open Source License

private static File copyToMultiplePages(final CropDefinition cropDefinition,
        final PdfMetaInformation pdfMetaInformation) throws IOException, DocumentException {

    PdfReader reader = new PdfReader(cropDefinition.getSourceFile().getAbsolutePath());
    HashMap<String, String> map = SimpleNamedDestination.getNamedDestination(reader, false);
    Document document = new Document();

    File resultFile = File.createTempFile("cropped", ".pdf");
    PdfSmartCopy pdfCopy = new PdfSmartCopy(document, new FileOutputStream(resultFile));
    document.open();// www.  j a v  a 2  s .  c  o  m

    Map<Integer, List<String>> pageNrToDestinations = new HashMap<Integer, List<String>>();
    for (String single : map.keySet()) {
        StringTokenizer st = new StringTokenizer(map.get(single), " ");
        if (st.hasMoreElements()) {
            String pageNrString = (String) st.nextElement();
            int pageNr = Integer.parseInt(pageNrString);
            List<String> singleList = (pageNrToDestinations.get(pageNr));
            if (singleList == null) {
                singleList = new ArrayList<String>();
                singleList.add(single);
                pageNrToDestinations.put(pageNr, singleList);
            } else {
                singleList.add(single);
            }
        }
    }

    int outputPageNumber = 0;
    for (int pageNumber = 1; pageNumber <= pdfMetaInformation.getSourcePageCount(); pageNumber++) {

        PdfImportedPage pdfPage = pdfCopy.getImportedPage(reader, pageNumber);

        pdfCopy.addPage(pdfPage);
        outputPageNumber++;
        List<String> destinations = pageNrToDestinations.get(pageNumber);
        if (destinations != null) {
            for (String destination : destinations)
                pdfCopy.addNamedDestination(destination, outputPageNumber,
                        new PdfDestination(PdfDestination.FIT));
        }
        List<Float[]> rectangles = cropDefinition.getRectanglesForPage(pageNumber);
        for (int j = 1; j < rectangles.size(); j++) {
            pdfCopy.addPage(pdfPage);
            outputPageNumber++;
        }
    }
    document.close();
    pdfCopy.close();
    reader.close();
    return resultFile;
}

From source file:at.laborg.briss.utils.DocumentCropper.java

License:Open Source License

private static void cropMultipliedFile(final CropDefinition cropDefinition, final File multipliedDocument,
        final PdfMetaInformation pdfMetaInformation) throws DocumentException, IOException {

    PdfReader reader = new PdfReader(multipliedDocument.getAbsolutePath());

    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(cropDefinition.getDestinationFile()));
    stamper.setMoreInfo(pdfMetaInformation.getSourceMetaInfo());

    PdfDictionary pageDict;/*w w  w  .  j  a  v  a 2s  .  c om*/
    int newPageNumber = 1;

    for (int sourcePageNumber = 1; sourcePageNumber <= pdfMetaInformation
            .getSourcePageCount(); sourcePageNumber++) {

        List<Float[]> rectangleList = cropDefinition.getRectanglesForPage(sourcePageNumber);

        // if no crop was selected do nothing
        if (rectangleList.isEmpty()) {
            newPageNumber++;
            continue;
        }

        for (Float[] ratios : rectangleList) {

            pageDict = reader.getPageN(newPageNumber);

            List<Rectangle> boxes = new ArrayList<Rectangle>();
            boxes.add(reader.getBoxSize(newPageNumber, "media"));
            boxes.add(reader.getBoxSize(newPageNumber, "crop"));
            int rotation = reader.getPageRotation(newPageNumber);

            Rectangle scaledBox = RectangleHandler.calculateScaledRectangle(boxes, ratios, rotation);

            PdfArray scaleBoxArray = createScaledBoxArray(scaledBox);

            pageDict.put(PdfName.CROPBOX, scaleBoxArray);
            pageDict.put(PdfName.MEDIABOX, scaleBoxArray);
            // increment the pagenumber
            newPageNumber++;
        }
        int[] range = new int[2];
        range[0] = newPageNumber - 1;
        range[1] = pdfMetaInformation.getSourcePageCount() + (newPageNumber - sourcePageNumber);
        SimpleBookmark.shiftPageNumbers(pdfMetaInformation.getSourceBookmarks(), rectangleList.size() - 1,
                range);
    }
    stamper.setOutlines(pdfMetaInformation.getSourceBookmarks());
    stamper.close();
    reader.close();
}

From source file:at.laborg.briss.utils.DocumentCropper.java

License:Open Source License

private static boolean isPasswordRequired(final File file) throws IOException {
    PdfReader reader = new PdfReader(file.getAbsolutePath());
    boolean isEncrypted = reader.isEncrypted();
    reader.close();
    return isEncrypted;
}

From source file:be.redtree.beidsign.service.ScriptBeidSignService.java

License:Open Source License

/**
 * Gets the page count for a PDF document
 * /*from   w  w  w  .j  a v a  2s.c om*/
 * @param nodeRef
 * @return
 */
public int getPageCount(String nodeRef) {
    try {
        ContentReader reader = serviceRegistry.getContentService().getReader(new NodeRef(nodeRef),
                ContentModel.PROP_CONTENT);
        PdfReader pdfReader = new PdfReader(reader.getContentInputStream());
        int count = pdfReader.getNumberOfPages();
        pdfReader.close();
        return count;

    } catch (IOException ioex) {
        return -1;
    }
}

From source file:be.roots.taconic.pricingguide.service.PDFServiceImpl.java

License:Open Source License

private byte[] setDocumentProperties(Contact contact, byte[] guide) throws IOException, DocumentException {

    try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {

        final PdfReader reader = new PdfReader(guide);
        final PdfStamper stamper = new PdfStamper(reader, baos);

        final Map<String, String> info = reader.getInfo();

        info.put("Title", documentTitle);
        info.put("Subject", documentTitle);

        info.put("Keywords",
                "Created for " + contact.getFullName() + ". " + "Currency used : " + contact.getCurrency()
                        + ". " + "Mailed to " + contact.getEmail() + ". " + "Build on "
                        + gitService.getCommitId());

        info.put("Creator", "Roots Software - http://www.roots.be - info@roots.be");
        info.put("Author", "Taconic - http://www.taconic.com");

        stamper.setMoreInfo(info);/* ww  w .j av  a2s. co  m*/

        stamper.close();
        reader.close();

        return baos.toByteArray();

    }
}

From source file:be.roots.taconic.pricingguide.service.PDFServiceImpl.java

License:Open Source License

private byte[] fixBackground(byte[] pdf, Toc tableOfContents) throws IOException, DocumentException {

    try (final ByteArrayOutputStream bos = new ByteArrayOutputStream()) {

        final byte[] tocTemplate = templateRepository.findOne(pdfTemplate.getTocTemplate().getUrl());
        final byte[] modelPageTemplate = templateRepository.findOne(pdfTemplate.getModel().getUrl());

        final Image tocBackgroundImage = iTextUtil.getImageFromPdf(tocTemplate);
        tocBackgroundImage.setAbsolutePosition(0, 0);

        final Image modelPageBackgroundImage = iTextUtil.getImageFromPdf(modelPageTemplate);
        modelPageBackgroundImage.setAbsolutePosition(0, 0);

        final PdfReader reader = new PdfReader(pdf);
        final PdfStamper stamper = new PdfStamper(reader, bos);

        final PdfContentByte tocContent = stamper.getUnderContent(tableOfContents.getFirstPageOfToc());
        tocContent.addImage(tocBackgroundImage, 612, 0, 0, 792, 0, 0);

        for (int pageNumber = tableOfContents.getFirstPageOfToc() + 1; pageNumber <= tableOfContents
                .getLastPageNumberOfModelPages(); pageNumber++) {

            final PdfContentByte content = stamper.getUnderContent(pageNumber);
            content.addImage(modelPageBackgroundImage, 612, 0, 0, 792, 0, 0);

        }/*  www. j  a  va  2 s  . co m*/

        stamper.close();
        reader.close();

        return bos.toByteArray();
    }

}