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:SettingUp.ImageExtraction.java

public void extractImages() throws IOException, DocumentException {
    PdfReader reader = new PdfReader(filename.toString());
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    ImageRenderListener listener = new ImageRenderListener(imgpath);
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        parser.processContent(i, listener);
    }//from www .j  av a  2  s.  co  m
    reader.close();
}

From source file:signpdfitext5.SignPdfItext5.java

public static void signPdf() throws IOException, DocumentException, KeyStoreException, NoSuchAlgorithmException,
        CertificateException, UnrecoverableKeyException, GeneralSecurityException {

    //Se agrega bouncyCastle al provider de java, si no se realiza, arroja un error
    Provider p = new BouncyCastleProvider();
    Security.addProvider(p);//from  ww w .j  a v  a  2 s.c  om

    //Se instancia un keystore de tipo pkcs12 para leer el contenedor p12 o pfx
    KeyStore ks = KeyStore.getInstance("pkcs12");
    //Se entrega la ruta y la clave del p12 o pfx
    ks.load(new FileInputStream(fContenedorp12.getAbsolutePath()), Contenedorp12clave.toCharArray());

    //Se obtiene el nombre del certificado
    String alias = (String) ks.aliases().nextElement();
    //Se obtiene la llave privada
    PrivateKey pk = (PrivateKey) ks.getKey(alias, Contenedorp12clave.toCharArray());
    //Se obtiene la cadena de certificados en base al nombre del certificado
    Certificate[] chain = ks.getCertificateChain(alias);
    //Se indica el origen del pdf a firmar
    PdfReader reader = new PdfReader(fpdfOrigen.getAbsolutePath());
    //Se indica el destino del pdf firmado
    PdfStamper stamper = PdfStamper.createSignature(reader, new FileOutputStream(fpdfDestino.getAbsolutePath()),
            '\0');
    //Se indican alguno detalles de la forma en que se firmara
    PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
    appearance.setReason("It's personal.");
    appearance.setLocation("Foobar");

    // Se entrega la llave privada del certificado, el algoritmo de firma y el provider usado (bouncycastle)
    ExternalSignature es = new PrivateKeySignature(pk, "SHA-256", "BC");
    ExternalDigest digest = new BouncyCastleDigest();

    //Se genera la firma y se almacena el pdf como se indico en las lineas anteriores
    MakeSignature.signDetached(appearance, digest, es, chain, null, null, null, 0, CryptoStandard.CMS);

    //Se cierran las instancias para liberar espacio
    stamper.close();
    reader.close();
}

From source file:spntoolsdata.pdf.util.RemoveBlankPageFromPDF.java

public static void removeBlankPdfPages(String source, String destination)
        throws IOException, DocumentException {
    PdfReader r = null;
    RandomAccessSourceFactory rasf = null;
    RandomAccessFileOrArray raf = null;// ww w.j ava  2 s .c o  m
    Document document = null;
    PdfCopy writer = null;

    try {
        r = new PdfReader(source);
        // deprecated
        //    RandomAccessFileOrArray raf
        //           = new RandomAccessFileOrArray(pdfSourceFile);
        // itext 5.4.1
        rasf = new RandomAccessSourceFactory();
        raf = new RandomAccessFileOrArray(rasf.createBestSource(source));
        document = new Document(r.getPageSizeWithRotation(1));
        writer = new PdfCopy(document, new FileOutputStream(destination));
        document.open();
        PdfImportedPage page = null;

        for (int i = 1; i <= r.getNumberOfPages(); i++) {
            // first check, examine the resource dictionary for /Font or
            // /XObject keys.  If either are present -> not blank.
            PdfDictionary pageDict = r.getPageN(i);
            PdfDictionary resDict = (PdfDictionary) pageDict.get(PdfName.RESOURCES);
            boolean noFontsOrImages = true;
            if (resDict != null) {
                noFontsOrImages = resDict.get(PdfName.FONT) == null && resDict.get(PdfName.XOBJECT) == null;
            }

            if (!noFontsOrImages) {
                byte bContent[] = r.getPageContent(i, raf);
                ByteArrayOutputStream bs = new ByteArrayOutputStream();
                bs.write(bContent);

                if (bs.size() > BLANK_THRESHOLD) {
                    page = writer.getImportedPage(r, i);
                    writer.addPage(page);
                }
            }
        }
    } finally {
        if (document != null)
            document.close();
        if (writer != null)
            writer.close();
        if (raf != null)
            raf.close();
        if (r != null)
            r.close();
    }
}

From source file:textextractor.PDFManager.java

public void inspectPdf(String filename) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(filename);
    List<HashMap<String, Object>> list = SimpleBookmark.getBookmark(reader);
    if (list != null) {
        list.stream().forEach((list1) -> {
            showTitle(list1);// w w  w .ja v  a2  s.co m
        });
        //        SimpleBookmark.exportToXML(list,
        //                new FileOutputStream("Bookmark.txt"), "ISO8859-1", true);
    }
    reader.close();
}

From source file:tutorials.encryptpdf.encryptpdf.java

public static void main(String[] args) {
    try {//w w  w.  ja  v a2 s. co  m
        PdfReader reader = new PdfReader("test.pdf");
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("encrypted.pdf"));
        stamper.setEncryption(null, null, PdfWriter.ALLOW_PRINTING,
                PdfWriter.ENCRYPTION_AES_256 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
        stamper.close();
        reader.close();
    } catch (IOException | DocumentException ex) {
        ex.printStackTrace();
    }
}

From source file:tutorials.readpdf.readpdf.java

public static void main(String[] args) {

    try {//  ww w .  j av a 2  s.c o  m

        PdfReader reader = new PdfReader("test.pdf");
        System.out.println("This PDF has " + reader.getNumberOfPages() + " pages.");
        System.out.println("Is this document tampered: " + reader.isTampered());
        System.out.println("Is this document encrypted: " + reader.isEncrypted());
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            String page = PdfTextExtractor.getTextFromPage(reader, i);
            System.out.println("Page Content:\n\n" + page + "\n\n");
        }
        reader.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

From source file:uk.bl.dpt.qa.flint.wrappers.iTextWrapper.java

License:Apache License

/**
 * Extracts text from a PDF./*from w ww  .j ava 2s.c  om*/
 * @param pFile input file
 * @param pOutput output file
 * @param pOverwrite whether or not to overwrite an existing output file
 * @return true if converted ok, otherwise false
 */
public boolean extractTextFromPDF(File pFile, File pOutput, boolean pOverwrite) {
    if (pOutput.exists() & (!pOverwrite))
        return false;

    boolean ret = true;

    PrintWriter pw = null;
    PdfReader reader = null;

    try {
        pw = new PrintWriter(new FileWriter(pOutput));
        reader = new PdfReader(pFile.getAbsolutePath());
        PdfReaderContentParser parser = new PdfReaderContentParser(reader);
        TextExtractionStrategy strategy;
        for (int i = 0; i < reader.getNumberOfPages(); i++) {
            try {
                //page numbers start at 1
                strategy = parser.processContent((i + 1), new SimpleTextExtractionStrategy());
                //write text out to file
                pw.println(strategy.getResultantText());
            } catch (ExceptionConverter e) {
                e.printStackTrace();
                ret = false;
                pw.println("iText Exception: Page " + (i + 1) + ": " + e.getClass().getName() + ": "
                        + e.getMessage());
            }
        }
    } catch (IOException e) {
        ret = false;
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if (pw != null)
            pw.close();
        if (reader != null)
            reader.close();
    }

    return ret;
}

From source file:uk.bl.dpt.qa.flint.wrappers.iTextWrapper.java

License:Apache License

/**
 * Check if a PDF file is valid or not/*from   ww  w .ja va 2 s  .  c o m*/
 * @param pFile file to check
 * @return whether the file is valid or not
 */
public boolean isValid(File pFile) {

    boolean ret = false;

    PdfReader reader = null;
    try {
        reader = new PdfReader(pFile.getAbsolutePath());
        LOGGER.debug("validating through {} pages of {}", reader.getNumberOfPages(), pFile.getName());
        for (int i = 0; i < reader.getNumberOfPages(); i++) {
            //page numbers start at 1
            PdfTextExtractor.getTextFromPage(reader, (i + 1));
        }
        ret = true;
    } catch (BadPasswordException e) {
        //actually an error???
    } catch (InvalidPdfException e) {
        LOGGER.warn("InvalidPdfException leads to invalidity: {}", e);
    } catch (IOException e) {
        LOGGER.warn("IOException leads to invalidity: {}", e);
    } catch (Exception e) {
        LOGGER.warn("Exception leads to invalidity: {}", e);
    } finally {
        if (reader != null)
            reader.close();
    }

    return ret;
}

From source file:uk.bl.dpt.qa.flint.wrappers.iTextWrapper.java

License:Apache License

/**
 * Check if a PDF file has DRM or not/*from  ww w  .  j  av a2s . c om*/
 * @param pFile file to check
 * @return whether the file is had DRM or not
 */
public boolean hasDRM(File pFile) {

    boolean drm = false;

    PdfReader reader = null;
    try {
        reader = new PdfReader(pFile.getAbsolutePath());
        drm = reader.isEncrypted();
    } catch (BadPasswordException e) {
        //assume drm
        drm = true;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        //e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (reader != null)
            reader.close();
    }

    return drm;
}

From source file:valstreamtools.ValStrSplitPage.java

private void splitDocument(String[] args) throws IOException, DocumentException {
    /**/*from www .ja  v  a  2  s  . c o  m*/
     * int splitNo = 4; String inputFileName =
     * "C:\\tmp\\valuestream_export_input_2015-03-03-22-18-37.pdf"; String
     * outputFileName = "C:\\tmp\\valuestream_export_op_2015-03-03-22-18-37.pdf";*
     */
    int splitNo = Integer.parseInt(args[0]);
    String inputFileName = args[1];
    if (splitNo > 1) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
        String splitOutFileName = "/var/tmp/PDF_SPLIT_" + sdf.format(new Date()) + ".pdf";
        PdfReader reader = new PdfReader(inputFileName);
        Rectangle pagesize = reader.getPageSize(1);
        float pageHeight = pagesize.getHeight();
        float newpagewidth = (pagesize.getWidth() / splitNo);
        Rectangle newPapeSize = new Rectangle(0, 0, newpagewidth, pageHeight);
        Document document = new Document(newPapeSize);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(splitOutFileName));
        document.open();
        int pageNos = reader.getNumberOfPages();
        PdfContentByte content = writer.getDirectContent();
        for (int i = 1; i <= pageNos; i++) {
            PdfImportedPage page = writer.getImportedPage(reader, i);
            if (i > 1) {// In case of a new inpit page, need to create this.
                document.newPage();
            }
            for (int j = 0; j < splitNo; j++) {
                if (j == 0) {//This condition is used to skip the adding of new page.
                    content.addTemplate(page, 0, 0);
                } else {
                    document.newPage();
                    content.addTemplate(page, (-1 * j * newpagewidth), 0);
                }
            }
        }
        document.close();
        reader.close();
        createPageNo(splitOutFileName, args[2], pageHeight);
        File f = new File(splitOutFileName);
        if (f.exists()) {
            f.delete();
        }
    } else {
        PdfReader reader = new PdfReader(inputFileName);
        float pageHeight = reader.getPageSize(1).getHeight();
        reader.close();
        createPageNo(inputFileName, args[2], pageHeight);
    }
}