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:controller.CCInstance.java

License:Open Source License

public final int getNumberOfSignatures(final String pdfPath) {
    final KeyStore keystore = KeyStoreUtil.loadCacertsKeyStore();
    try {/*w w w  .  j a v a2  s.  co m*/
        keystore.load(null, null);
        final PdfReader reader = new PdfReader(pdfPath);
        final int numSigs = reader.getAcroFields().getSignatureNames().size();
        reader.close();
        return numSigs;
    } catch (IOException ex) {
        controller.Logger.getLogger().addEntry(ex);
    } catch (NoSuchAlgorithmException ex) {
        controller.Logger.getLogger().addEntry(ex);
    } catch (CertificateException ex) {
        controller.Logger.getLogger().addEntry(ex);
    }
    return -1;
}

From source file:controller.CCInstance.java

License:Open Source License

public final ArrayList<SignatureValidation> validatePDF(final String file, final ValidationListener vl)
        throws IOException, DocumentException, GeneralSecurityException {
    this.validating = true;

    final PdfReader reader = new PdfReader(file);
    final AcroFields af = reader.getAcroFields();
    final ArrayList names = af.getSignatureNames();
    final ArrayList<SignatureValidation> validateList = new ArrayList<>();
    X509Certificate x509c = null;

    Security.setProperty("ocsp.enable", "true");
    System.setProperty("com.sun.security.enableCRLDP", "true");

    boolean nextValid = true;

    for (Object o : names) {
        if (!validating) {
            return null;
        }//from   w  w w  .  j ava  2 s .c  om

        final String name = (String) o;
        final PdfPKCS7 pk = af.verifySignature(name, "BC");
        final Certificate pkc[] = pk.getCertificates();
        x509c = (X509Certificate) pkc[pkc.length - 1];

        final Certificate[] aL = pkc;//getCompleteCertificateChain(x509c);

        if (null == aL || 0 == aL.length) {
            return null;
        }

        CertificateStatus ocspCertificateStatus = CertificateStatus.UNCHECKED;

        BasicOCSPResp ocspResp = pk.getOcsp();
        if (null != ocspResp && pk.isRevocationValid()) {
            for (SingleResp singleResp : ocspResp.getResponses()) {
                if (null == singleResp.getCertStatus()) {
                    ocspCertificateStatus = CertificateStatus.OK;
                } else if (singleResp.getCertStatus() instanceof RevokedStatus) {
                    if (ocspResp.getProducedAt()
                            .before(((RevokedStatus) singleResp.getCertStatus()).getRevocationTime())) {
                        ocspCertificateStatus = CertificateStatus.OK;
                    } else {
                        ocspCertificateStatus = CertificateStatus.REVOKED;
                    }
                } else if (singleResp.getCertStatus() instanceof UnknownStatus) {
                    ocspCertificateStatus = CertificateStatus.UNKNOWN;
                }
            }
        }

        CertificateStatus crlCertificateStatus = CertificateStatus.UNCHECKED;
        Collection<CRL> crlResp = pk.getCRLs();
        if (null != crlResp) {
            boolean revoked = false;
            for (CRL crl : crlResp) {
                if (crl.isRevoked(x509c)) {
                    revoked = true;
                }
            }
            crlCertificateStatus = revoked ? CertificateStatus.REVOKED : CertificateStatus.OK;
        }

        if (ocspCertificateStatus.equals(CertificateStatus.UNCHECKED)
                && crlCertificateStatus.equals(CertificateStatus.UNCHECKED)) {
            if (pkc.length == 1) {
                Certificate[] completeChain = getCompleteTrustedCertificateChain(x509c);
                if (completeChain.length == 1) {
                    ocspCertificateStatus = CertificateStatus.UNCHAINED;
                } else {
                    ocspCertificateStatus = CertificateStatus.CHAINED_LOCALLY;
                }
            }
        }

        final TimeStampToken tst = pk.getTimeStampToken();
        boolean validTimestamp = false;
        if (null != tst) {
            final boolean hasTimestamp = pk.verifyTimestampImprint();
            validTimestamp = hasTimestamp && CertificateVerification.verifyTimestampCertificates(tst, ks, null);
        }

        PdfDictionary pdfDic = reader.getAcroFields().getSignatureDictionary(name);
        SignaturePermissions sp = new SignaturePermissions(pdfDic, null);

        boolean isValid;
        if (nextValid) {
            isValid = pk.verify();
        } else {
            isValid = false;
        }

        List<AcroFields.FieldPosition> posList = af.getFieldPositions(name);
        final SignatureValidation signature = new SignatureValidation(file, name, pk, !pk.verify(),
                af.signatureCoversWholeDocument(name), af.getRevision(name), af.getTotalRevisions(),
                reader.getCertificationLevel(), ocspCertificateStatus, crlCertificateStatus, validTimestamp,
                posList, sp, isValid);
        validateList.add(signature);

        if (null != vl) {
            vl.onValidationComplete(signature);
        }
        if (!sp.isFillInAllowed()) {
            nextValid = false;
        }
    }
    return validateList;
}

From source file:controller.CCInstance.java

License:Open Source License

public File extractRevision(final String filePath, final String revision)
        throws IOException, RevisionExtractionException {
    final PdfReader reader = new PdfReader(filePath);
    final AcroFields af = reader.getAcroFields();
    final File fout = File.createTempFile("temp",
            " - " + WordUtils.capitalize(Bundle.getBundle().getString("revision")) + ": " + revision + ".pdf");
    final FileOutputStream os = new FileOutputStream(fout);
    final byte bb[] = new byte[1028];
    final InputStream ip = af.extractRevision(revision);
    if (null == ip) {
        throw new RevisionExtractionException();
    }//from   w  w  w .ja  va  2s.  c o m
    int n = 0;
    while ((n = ip.read(bb)) > 0) {
        os.write(bb, 0, n);
    }
    os.close();
    ip.close();
    return fout;
}

From source file:controller.CCInstance.java

License:Open Source License

public final int getCertificationLevel(final String filename) throws IOException {
    final PdfReader reader = new PdfReader(filename);
    final int certLevel = reader.getCertificationLevel();
    reader.close();//from   w ww .jav  a  2 s . co  m
    return certLevel;
}

From source file:controller.DownloadCVServlet.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
 *
 * @param request servlet request/* www.  j  a  v  a2 s.com*/
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //protect servlet
    HttpSession session = request.getSession();
    Admin loggedInAdmin = (Admin) session.getAttribute("admin");

    //check if admin is logged in
    if (loggedInAdmin == null) {
        response.sendRedirect("login.jsp");
        return;
    }

    String[] appIDs = request.getParameterValues("download");

    ServletOutputStream sOut = response.getOutputStream();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ZipOutputStream zos = new ZipOutputStream(baos);

    //prepare fonts
    Font font = FontFactory.getFont("Arial", 10);

    for (String appIDStr : appIDs) {
        int appID = Integer.parseInt(appIDStr);
        Application application = ApplicationDAO.retrieveByAppID(appID);
        Job job = JobDAO.retrieveJobById(application.getJobID());

        ZipEntry entry = new ZipEntry(application.getFullname() + "_CV.pdf");
        zos.putNextEntry(entry);

        String path = System.getenv("OPENSHIFT_DATA_DIR");

        if (path == null) {
            path = getServletContext().getRealPath("/templates/Personal_Particulars_Form.pdf");
        } else {
            path += "Personal_Particulars_Form.pdf";
        }

        try {
            //Prepare PdfStamper
            PdfReader reader = new PdfReader(path);
            PdfStamper stamper = new PdfStamper(reader, zos);
            stamper.setRotateContents(false);
            stamper.getWriter().setCloseStream(false);

            //Get first page
            PdfContentByte canvas = stamper.getOverContent(1);

            //Application ID
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getAppID() + "", font), 110, 555, 0);

            //Date Applied
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getDateApplied(), font), 110, 526, 0);

            //Position Applied
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(job.getPostingTitle(), font), 36,
                    442, 0);

            //Job ID
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getJobID() + "", font), 405, 442, 0);

            //Name
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getFullname(), font),
                    36, 350, 0);

            //Street
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getBlkStreetUnit(), font), 36, 305, 0);

            //Postal Code
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getPostalCode(), font), 377, 305, 0);

            //Nationality
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getNricType(), font),
                    36, 260, 0);

            //NRIC
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getNric(), font), 289,
                    260, 0);

            //DOB
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getDob(), font), 36,
                    215, 0);

            //Gender
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getGender(), font),
                    379, 215, 0);

            //Contact Number
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(application.getContactNo(), font),
                    36, 170, 0);

            //Email Address
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
                    new Phrase(application.getEmailAddress(), font), 36, 125, 0);

            //Declaration
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase("X", font), 50, 80, 0);

            //Generated on
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
            dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
            Date date = new Date();
            String today = dateFormat.format(date);
            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(today, font), 437, 15, 0);

            stamper.close();
            reader.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    zos.close();
    response.setContentType("application/zip");
    response.addHeader("Content-Disposition", "attachment; filename=CVs.zip");

    sOut.write(baos.toByteArray());
    sOut.close();
}

From source file:conversorpdf.Conversor.Conversor.java

/**
 * Parses a PDF to a plain text file.// www .j av a  2  s . com
 * @param pdf the original PDF
 * @param txt the resulting text
 * @throws IOException
 */
public boolean parsePdf(String pdf, String txt, boolean removerAcento) throws IOException {
    PdfReader reader = new PdfReader(pdf);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    PrintWriter out = new PrintWriter(new FileOutputStream(txt));
    TextExtractionStrategy strategy;
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {

        strategy = parser.processContent(i, new SimpleTextExtractionStrategy());

        if (removerAcento == false) {
            out.println(strategy.getResultantText());
        } else {
            out.println(this.removeAcentos(strategy.getResultantText()));
        }

    }
    out.flush();
    out.close();

    return true;
}

From source file:coviam.pdf.PdfParser.java

public void getText() {

    String pdf = "/home/amit/NetBeansProjects/ResumeParser/data/resumes/ejd1.pdf";
    String text = "/home/amit/NetBeansProjects/ResumeParser/data/resumes/edj1.txt";
    StringBuffer textBuffer = new StringBuffer();
    String resultText = "";
    PdfReader reader;//from   w w  w . j  ava2 s  . c  om
    try {
        reader = new PdfReader(pdf);
        PdfReaderContentParser contentParser = new PdfReaderContentParser(reader);
        PrintWriter printWriter = new PrintWriter(new FileOutputStream(text));
        TextExtractionStrategy strategy;
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            strategy = contentParser.processContent(i, new SimpleTextExtractionStrategy());
            textBuffer.append(strategy.getResultantText());
        }
        resultText = textBuffer.toString();
        resultText = resultText.replaceAll("-\n", "");
        System.out.println("-->" + resultText);

        StringTokenizer stringTokenizer = new StringTokenizer(resultText, "\n");
        PrintWriter lineWriter = new PrintWriter(
                new FileOutputStream("/home/amit/NetBeansProjects/ResumeParser/data/resumes/edj1.txt"));
        while (stringTokenizer.hasMoreTokens()) {
            String curToken = stringTokenizer.nextToken();
            lineWriter.println("line-->" + curToken);
        }
        lineWriter.flush();
        lineWriter.close();
        System.out.flush();
        System.out.close();
    } catch (IOException ioe) {

    }

}

From source file:cz.hobrasoft.pdfmu.operation.args.InPdfArgs.java

License:Open Source License

public PdfReader open() throws OperationException {
    assert file != null;
    assert is == null;
    assert pdfReader == null;

    logger.info(String.format("Input file: %s", file));

    // Open the input stream
    try {/*from   w  w  w .  ja  va  2s  .c o m*/
        is = new FileInputStream(file);
    } catch (FileNotFoundException ex) {
        throw new OperationException(INPUT_NOT_FOUND, ex,
                PdfmuUtils.sortedMap(new String[] { "file" }, new Object[] { file }));
    }

    // Open the PDF reader
    try {
        pdfReader = new PdfReader(is);
    } catch (IOException ex) {
        throw new OperationException(INPUT_NOT_VALID_PDF, ex,
                PdfmuUtils.sortedMap(new String[] { "file" }, new Object[] { file }));
    }

    return pdfReader;
}

From source file:cz.hobrasoft.pdfmu.operation.OperationInspect.java

License:Open Source License

public Inspect execute(File file) throws OperationException, IOException {
    assert file != null;
    Inspect result;// w w  w  .j  av  a  2  s .co  m
    try (InputStream is = new FileInputStream(file)) {
        PdfReader pdfReader = new PdfReader(is);
        try {
            result = execute(pdfReader);
        } finally {
            pdfReader.close();
        }
    }
    return result;
}

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

License:Apache License

/**
 * Parses a PDF and extracts all the images.
 * @param filename /*  ww w.  jav  a  2  s . c o m*/
 * @throws IOException
 * @throws DocumentException  
 */
public static void extractImages(String filename) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(filename);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    MyImageRenderListener listener = new MyImageRenderListener("Img%s.%s");
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        parser.processContent(i, listener);
    }
}