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

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

Introduction

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

Prototype

public PdfReader(final PdfReader reader) 

Source Link

Document

Creates an independent duplicate.

Usage

From source file:cz.muni.pdfjbim.PdfImageExtractor.java

License:Apache License

/**
 * Extracts JBIG2Images from Input stream even if they are stored together with global dictionary in separate PDF object
 * doesn't work yet, its in development stage
 * @param is//w  ww  .j a v  a  2  s  .  c  om
 * @throws PdfRecompressionException 
 * @deprecated 
 */
public void extractJbig2Images(InputStream is) throws PdfRecompressionException {
    if (is == null) {
        throw new IllegalArgumentException("InputStream not given");
    }

    PdfReader pdfReader = null;
    try {
        pdfReader = new PdfReader(is);

        for (int i = 0; i <= pdfReader.getNumberOfPages(); i++) {
            PdfDictionary d = pdfReader.getPageN(i);
            PdfIndirectReference ir = d.getAsIndirectObject(PdfName.CONTENTS);
            PdfObject o = pdfReader.getPdfObject(ir.getNumber());
            PdfStream stream = (PdfStream) o;
            PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
            if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
                byte[] img = PdfReader.getStreamBytesRaw((PRStream) stream);
                OutputStream out = new FileOutputStream(
                        new File("pdfRecompressor", String.format("%1$05d", i) + ".jpg"));
                out.write(img);
                out.flush();
                out.close();
            }

        }

    } catch (IOException ex) {
        log.error("IOException caught while trying to extract jbig2 images from PDF", ex);
        throw new PdfRecompressionException("IOException caught while trying to extract jbig2 images from PDF",
                ex);
    } finally {
        if (pdfReader != null) {
            pdfReader.close();
        }
    }

}

From source file:cz.muni.pdfjbim.PdfImageProcessor.java

License:Apache License

/**
 * replace images by they recompressed version according to JBIG2 standard
 * positions and image data given in imagesData
 * @param pdfName represents name of original PDF file
 * @param os represents output stream for writing changed PDF file
 * @param imagesData contains compressed images according to JBIG2 standard and informations about them
 * @throws PdfRecompressionException if version of PDF is lower than 1.4 or was catch DocumentException or IOException
 */// ww w  .jav a  2  s .c om
public void replaceImageUsingIText(String pdfName, OutputStream os, Jbig2ForPdf imagesData)
        throws PdfRecompressionException {
    if (pdfName == null) {
        throw new NullPointerException("pdfName");
    }

    if (os == null) {
        throw new NullPointerException("os");
    }

    if (imagesData == null) {
        throw new NullPointerException("imagesData is null => nothing to recompress");
    }

    Map<PdfObjId, PdfImage> jbig2Images = imagesData.getMapOfJbig2Images();

    PdfReader pdf;
    PdfStamper stp = null;
    try {
        pdf = new PdfReader(pdfName);
        stp = new PdfStamper(pdf, os);
        PdfWriter writer = stp.getWriter();

        int version;
        if ((version = Integer.parseInt(String.valueOf(pdf.getPdfVersion()))) < 4) {
            writer.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
        }

        Iterator itImages = jbig2Images.values().iterator();
        String key;
        if (itImages.hasNext()) {
            PdfImage myImg = (PdfImage) itImages.next();
            key = myImg.getPdfImageInformation().getKey();
        } else {
            key = "im0";
        }

        for (int pageNum = 1; pageNum <= pdf.getNumberOfPages(); pageNum++) {

            PdfDictionary pg = pdf.getPageN(pageNum);
            PdfDictionary resPg = (PdfDictionary) PdfReader.getPdfObject(pg.get(PdfName.RESOURCES));

            PdfDictionary xobjResPg = (PdfDictionary) PdfReader.getPdfObject(resPg.get(PdfName.XOBJECT));

            PdfObject obj = null;
            if (xobjResPg != null) {
                for (Iterator it = xobjResPg.getKeys().iterator(); it.hasNext();) {
                    PdfObject pdfObjIndirect = xobjResPg.get((PdfName) it.next());
                    if (pdfObjIndirect.isIndirect()) {
                        PdfDictionary pdfObj2 = (PdfDictionary) PdfReader.getPdfObject(pdfObjIndirect);
                        PdfDictionary xobj2Res = (PdfDictionary) PdfReader
                                .getPdfObject(pdfObj2.get(PdfName.RESOURCES));
                        if (xobj2Res != null) {
                            for (Iterator it2 = xobj2Res.getKeys().iterator(); it2.hasNext();) {
                                PdfObject resObj = xobj2Res.get((PdfName) it2.next());
                            }
                            PdfDictionary xobj = (PdfDictionary) PdfReader
                                    .getPdfObject(xobj2Res.get(PdfName.XOBJECT));
                            if (xobj == null) {
                                continue;
                            }
                            obj = xobj.get(new PdfName(key));
                        } else {
                            obj = xobjResPg.get(new PdfName(key));
                            if (obj == null) {
                                obj = pdfObjIndirect;
                            }
                        }
                    }
                }
            }

            if ((obj != null) && (obj.isIndirect())) {

                PdfDictionary tg = (PdfDictionary) PdfReader.getPdfObject(obj);
                if (tg == null) {
                    continue;
                }
                PdfName type = (PdfName) PdfReader.getPdfObject(tg.get(PdfName.SUBTYPE));
                if (PdfName.IMAGE.equals(type)) {
                    PRIndirectReference ref = (PRIndirectReference) obj;
                    PdfObjId imId = new PdfObjId(ref.getNumber(), ref.getGeneration());
                    PdfImage jbImage = jbig2Images.get(imId);
                    if (jbImage == null) {
                        continue;
                    }
                    PdfImageInformation jbImageInfo = jbImage.getPdfImageInformation();
                    Image img = Image.getInstance(jbImageInfo.getWidth(), jbImageInfo.getHeight(),
                            jbImage.getImageData(), imagesData.getGlobalData());

                    PdfReader.killIndirect(obj);
                    Image maskImage = img.getImageMask();

                    if (maskImage != null) {
                        writer.addDirectImageSimple(maskImage);
                    }
                    writer.addDirectImageSimple(img, (PRIndirectReference) obj);
                }
            }
        }
        stp.close();
    } catch (IOException ioEx) {
        throw new PdfRecompressionException(ioEx);
    } catch (DocumentException dEx) {
        throw new PdfRecompressionException(dEx);
    } finally {
        Tools.deleteFilesFromList(imagesData.getJbFiles().toArray(new File[0]));
    }
}

From source file:cz.muni.pdfjbim.PdfImageReplacer.java

License:Apache License

/**
 * replace images by they recompressed version according to JBIG2 standard positions and image
 * data given in imagesData//from w  ww  .j  a v  a2s  . c  om
 *
 * @param originalPdf represents name of original PDF file
 * @param os represents output stream for writing changed PDF file
 * @param imagesData contains compressed images according to JBIG2 standard and informations
 * about them
 * @throws PdfRecompressionException if version of PDF is lower than 1.4 or was catch
 * DocumentException or IOException
 */
public void replaceImageUsingIText(InputStream originalPdf, OutputStream os, List<Jbig2ForPdf> imagesDataList)
        throws PdfRecompressionException {
    if (originalPdf == null) {
        throw new NullPointerException("pdfName");
    }

    if (os == null) {
        throw new NullPointerException("os");
    }

    if (imagesDataList == null) {
        throw new NullPointerException("imagesData is null => nothing to recompress");
    }

    log.info("Replacing old images in PDF with their equivalent encoded according to standard JBIG2");
    PdfReader pdf;
    PdfStamper stp = null;
    try {
        pdf = new PdfReader(originalPdf);
        stp = new PdfStamper(pdf, os);
        PdfWriter writer = stp.getWriter();

        int version;
        if ((version = Integer.parseInt(String.valueOf(pdf.getPdfVersion()))) < 4) {
            log.debug("PDF version of original PDF was {} => changing to PDF version 1.4", pdf.getPdfVersion());
            writer.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
        }

        for (Jbig2ForPdf imagesData : imagesDataList) {

            Map<PdfObjId, PdfImage> jbig2Images = imagesData.getMapOfJbig2Images();

            Iterator itImages = jbig2Images.values().iterator();
            String key;
            if (itImages.hasNext()) {
                PdfImage myImg = (PdfImage) itImages.next();
                key = myImg.getPdfImageInformation().getKey();
            } else {
                key = "im0";
            }

            for (int pageNum = 1; pageNum <= pdf.getNumberOfPages(); pageNum++) {

                PdfDictionary pg = pdf.getPageN(pageNum);
                PdfDictionary resPg = (PdfDictionary) PdfReader.getPdfObject(pg.get(PdfName.RESOURCES));

                PdfDictionary xobjResPg = (PdfDictionary) PdfReader.getPdfObject(resPg.get(PdfName.XOBJECT));

                PdfObject obj = null;
                if (xobjResPg != null) {
                    for (Iterator it = xobjResPg.getKeys().iterator(); it.hasNext();) {
                        PdfObject pdfObjIndirect = xobjResPg.get((PdfName) it.next());
                        if (pdfObjIndirect.isIndirect()) {
                            PdfDictionary pdfObj2 = (PdfDictionary) PdfReader.getPdfObject(pdfObjIndirect);
                            PdfDictionary xobj2Res = (PdfDictionary) PdfReader
                                    .getPdfObject(pdfObj2.get(PdfName.RESOURCES));
                            if (xobj2Res != null) {
                                for (Iterator it2 = xobj2Res.getKeys().iterator(); it2.hasNext();) {
                                    PdfObject resObj = xobj2Res.get((PdfName) it2.next());
                                }
                                PdfDictionary xobj = (PdfDictionary) PdfReader
                                        .getPdfObject(xobj2Res.get(PdfName.XOBJECT));
                                if (xobj == null) {
                                    continue;
                                }
                                obj = xobj.get(new PdfName(key));
                            } else {
                                obj = xobjResPg.get(new PdfName(key));
                                if (obj == null) {
                                    obj = pdfObjIndirect;
                                }
                            }
                        }
                    }
                }

                if ((obj != null) && (obj.isIndirect())) {

                    PdfDictionary tg = (PdfDictionary) PdfReader.getPdfObject(obj);
                    if (tg == null) {
                        continue;
                    }
                    PdfName type = (PdfName) PdfReader.getPdfObject(tg.get(PdfName.SUBTYPE));
                    if (PdfName.IMAGE.equals(type)) {
                        PRIndirectReference ref = (PRIndirectReference) obj;
                        PdfObjId imId = new PdfObjId(ref.getNumber(), ref.getGeneration());
                        PdfImage jbImage = jbig2Images.get(imId);
                        if (jbImage == null) {
                            continue;
                        }

                        log.debug("Replacing image {}", jbImage);
                        PdfImageInformation jbImageInfo = jbImage.getPdfImageInformation();
                        Image img = Image.getInstance(jbImageInfo.getWidth(), jbImageInfo.getHeight(),
                                jbImage.getImageData(), imagesData.getGlobalData());

                        PdfReader.killIndirect(obj);
                        Image maskImage = img.getImageMask();

                        if (maskImage != null) {
                            writer.addDirectImageSimple(maskImage);
                        }
                        writer.addDirectImageSimple(img, (PRIndirectReference) obj);
                    }
                }
            }
        }
    } catch (IOException ioEx) {
        throw new PdfRecompressionException(ioEx);
    } catch (DocumentException dEx) {
        throw new PdfRecompressionException(dEx);
    } finally {
        log.debug("Deleting temporary files created during process of PDF recompression");
        for (Jbig2ForPdf imagesData : imagesDataList) {
            Tools.deleteFilesFromList(imagesData.getJbFiles().toArray(new File[0]));
        }
        try {
            if (stp != null) {
                stp.close();
            }
        } catch (DocumentException ex) {
            log.error("Exception thrown while closing stream", ex);
        } catch (IOException ex) {
            log.error("Exception thrown while closing stream", ex);
        }
    }

}

From source file:de.aidger.utils.pdf.ActivityReportConverter.java

License:Open Source License

/**
 * Creates a new document.//from   ww  w  .  j  a  va 2s . com
 * 
 * @param file
 *            The file to create.
 */
private void makeNewDocument(File file) {
    try {
        File template = new File(
                Runtime.getInstance().getConfigPath() + "/templates/ActivityReportTemplate.pdf");
        URL templateURL = null;
        if (template.exists()) {
            templateURL = template.toURI().toURL();
        } else {
            templateURL = getClass().getResource("/de/aidger/res/pdf/ActivityReportTemplate.pdf");
        }
        if (templateURL == null) {
            throw new FileNotFoundException(_("The report template could not be loaded.") + " "
                    + _("Please make sure that a fitting template exists in the template folder."));
        }
        reader = new PdfReader(templateURL);
        stamper = new PdfStamper(reader, new FileOutputStream(file));
        fileCreated = true;
        contentByte = stamper.getOverContent(1);
    } catch (FileNotFoundException e1) {
        if (e1.getMessage() != null) {
            UI.displayError(e1.getMessage());
        } else {
            UI.displayError(_("File could not be created.") + " "
                    + _("Please close all processes that are using the file."));
        }
    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:de.aidger.utils.pdf.BalanceReportConverter.java

License:Open Source License

/**
 * Places the created document onto the template for this report.
 * // www  . ja v a 2 s  . co  m
 * @param file
 *            The file to which this report will be saved.
 * @param preTemplateFile
 *            The report to be used.
 */
private boolean applyTemplate(File file, File preTemplateFile) {
    FileOutputStream outStream = null;
    FileInputStream inStream = null;
    PdfContentByte contentByte = null;
    PdfReader reader = null, templateReader = null;
    try {
        /*
         * Use the template located in the configuration path first, if it
         * exists.
         */
        File template = new File(
                Runtime.getInstance().getConfigPath() + "/templates/BalanceReportTemplate.pdf");
        URL templateURL = null;
        if (template.exists()) {
            templateURL = template.toURI().toURL();
        } else {
            templateURL = getClass().getResource("/de/aidger/res/pdf/BalanceReportTemplate.pdf");
        }
        if (templateURL == null) {
            throw new FileNotFoundException(_("The report template could not be loaded.") + " "
                    + _("Please make sure that a fitting template exists in the template folder."));
        }
        Document document = new Document(PageSize.A4.rotate());
        outStream = new FileOutputStream(file.getPath());
        inStream = new FileInputStream(preTemplateFile);
        writer = PdfWriter.getInstance(document, outStream);
        document.open();
        contentByte = writer.getDirectContent();
        reader = new PdfReader(inStream);
        templateReader = new PdfReader(templateURL);
        /*
         * Add the template pdf to the document and place the finished
         * report on top of it.
         */
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            PdfImportedPage page = writer.getImportedPage(templateReader, 1);
            int rotation = templateReader.getPageRotation(1);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
            page = writer.getImportedPage(reader, i);
            rotation = reader.getPageRotation(i);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
        }
        document.close();
        return true;
    } catch (FileNotFoundException e) {
        if (e.getMessage() != null) {
            UI.displayError(e.getMessage());
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:de.aidger.utils.pdf.BudgetReportConverter.java

License:Open Source License

/**
 * Places the created document onto the template for this report.
 * //from w  w w. j  ava2s  . c om
 * @param file
 *            The file to which this report will be saved.
 * @param preTemplateFile
 *            The report to be used.
 */
private boolean applyTemplate(File file, File preTemplateFile) {
    FileOutputStream outStream = null;
    FileInputStream inStream = null;
    PdfContentByte contentByte = null;
    PdfReader reader = null, templateReader = null;
    try {
        /*
         * Use the template located in the configuration path first, if it
         * exists.
         */
        File template = new File(Runtime.getInstance().getConfigPath() + "/templates/BudgetReportTemplate.pdf");
        URL templateURL = null;
        if (template.exists()) {
            templateURL = template.toURI().toURL();
        } else {
            templateURL = getClass().getResource("/de/aidger/res/pdf/BudgetReportTemplate.pdf");
        }
        if (templateURL == null) {
            throw new FileNotFoundException(_("The report template could not be loaded.") + " "
                    + _("Please make sure that a fitting template exists in the template folder."));
        }
        Document document = new Document(PageSize.A4);
        outStream = new FileOutputStream(file.getPath());
        inStream = new FileInputStream(preTemplateFile);
        writer = PdfWriter.getInstance(document, outStream);
        document.open();
        contentByte = writer.getDirectContent();
        reader = new PdfReader(inStream);
        templateReader = new PdfReader(templateURL);
        /*
         * Add the template pdf to the document and place the finished
         * report on top of it.
         */
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            PdfImportedPage page = writer.getImportedPage(templateReader, 1);
            int rotation = templateReader.getPageRotation(1);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
            page = writer.getImportedPage(reader, i);
            rotation = reader.getPageRotation(i);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
        }
        document.close();
        return true;
    } catch (FileNotFoundException e) {
        if (e.getMessage() != null) {
            UI.displayError(e.getMessage());
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:de.aidger.utils.pdf.ControllingConverter.java

License:Open Source License

/**
 * Places the created document onto the template for this report.
 * /*from w ww. j  a v  a  2 s  .c o m*/
 * @param file
 *            The file to which this report will be saved.
 * @param preTemplateFile
 *            The report to be used.
 */
private boolean applyTemplate(File file, File preTemplateFile) {
    FileOutputStream outStream = null;
    FileInputStream inStream = null;
    PdfContentByte contentByte = null;
    PdfReader reader = null, templateReader = null;
    try {
        /*
         * Use the template located in the configuration path first, if it
         * exists.
         */
        File template = new File(Runtime.getInstance().getConfigPath() + "/templates/ControllingTemplate.pdf");
        URL templateURL = null;
        if (template.exists()) {
            templateURL = template.toURI().toURL();
        } else {
            templateURL = getClass().getResource("/de/aidger/res/pdf/ControllingTemplate.pdf");
        }
        if (templateURL == null) {
            throw new FileNotFoundException(_("The report template could not be loaded.") + " "
                    + _("Please make sure that a fitting template exists in the template folder."));
        }
        Document document = new Document(PageSize.A4);
        outStream = new FileOutputStream(file.getPath());
        inStream = new FileInputStream(preTemplateFile);
        writer = PdfWriter.getInstance(document, outStream);
        document.open();
        contentByte = writer.getDirectContent();
        reader = new PdfReader(inStream);
        templateReader = new PdfReader(templateURL);
        /*
         * Add the template pdf to the document and place the finished
         * report on top of it.
         */
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            PdfImportedPage page = writer.getImportedPage(templateReader, 1);
            int rotation = templateReader.getPageRotation(1);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
            page = writer.getImportedPage(reader, i);
            rotation = reader.getPageRotation(i);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
        }
        document.close();
        return true;
    } catch (FileNotFoundException e) {
        if (e.getMessage() != null) {
            UI.displayError(e.getMessage());
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:de.aidger.utils.pdf.ProtocolConverter.java

License:Open Source License

/**
 * Places the created document onto the template for this report.
 * //www .j  a  v a 2 s  . co  m
 * @param file
 *            The file to which this report will be saved.
 * @param preTemplateFile
 *            The report to be used.
 */
private boolean applyTemplate(File file, File preTemplateFile) {
    FileOutputStream outStream = null;
    FileInputStream inStream = null;
    PdfContentByte contentByte = null;
    PdfReader reader = null, templateReader = null;
    try {
        /*
         * Use the template located in the configuration path first, if it
         * exists.
         */
        File template = new File(Runtime.getInstance().getConfigPath() + "/templates/ProtocolTemplate.pdf");
        URL templateURL = null;
        if (template.exists()) {
            templateURL = template.toURI().toURL();
        } else {
            templateURL = getClass().getResource("/de/aidger/res/pdf/ProtocolTemplate.pdf");
        }
        if (templateURL == null) {
            throw new FileNotFoundException(_("The report template could not be loaded.") + " "
                    + _("Please make sure that a fitting template exists in the template folder."));
        }
        Document document = new Document(PageSize.A4.rotate());
        outStream = new FileOutputStream(file.getPath());
        inStream = new FileInputStream(preTemplateFile);
        writer = PdfWriter.getInstance(document, outStream);
        document.open();
        contentByte = writer.getDirectContent();
        reader = new PdfReader(inStream);
        templateReader = new PdfReader(templateURL);
        /*
         * Add the template pdf to the document and place the finished
         * report on top of it.
         */
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            PdfImportedPage page = writer.getImportedPage(templateReader, 1);
            int rotation = templateReader.getPageRotation(1);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
            page = writer.getImportedPage(reader, i);
            rotation = reader.getPageRotation(i);
            if (rotation == 90 || rotation == 270) {
                //landscape mode
                contentByte.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(1).getHeight());
            } else {
                //portrait mode
                contentByte.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
            }
        }
        document.close();
        return true;
    } catch (FileNotFoundException e) {
        if (e.getMessage() != null) {
            UI.displayError(e.getMessage());
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:de.codecentric.robot.pdf.PDFKeywords.java

License:Apache License

@RobotKeyword
public void parsePdf(String filename) throws IOException {
    reader = new PdfReader(filename);
    System.out.println("Reading file " + filename);

    pdfData = new HashMap<Integer, String>();
    int numberOfPages = reader.getNumberOfPages();
    for (int page = 1; page <= numberOfPages; page++) {
        System.out.println("Reading page " + page);
        String textFromPage = PdfTextExtractor.getTextFromPage(reader, page);
        pdfData.put(page, textFromPage);

    }//from   w  ww .jav a 2 s.  c o  m
}

From source file:de.drippinger.cytricHelper.CytricHelper.java

License:Open Source License

public void manipulatePdf(String sourceFile, String expenseID) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(sourceFile);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(getOutputName(sourceFile)));

    PdfContentByte over = stamper.getOverContent(1);
    Phrase p = new Phrase(String.format("Cytric ID: %s", expenseID));
    ColumnText.showTextAligned(over, Element.ALIGN_CENTER, p, 500, reader.getPageSize(1).getHeight() - 30, 0);
    over.saveState();/*w w w .j a  va  2  s  . c  o m*/

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