List of usage examples for com.itextpdf.text.pdf PdfReader close
public void close()
From source file:org.mortagne.budget.internal.transaction.io.lcl.pdf.LCLPDFTransactionReader.java
License:Open Source License
public void open() throws IOException { close();/* w ww .ja va2s . c o m*/ List<DefaultTransaction> transactions = new ArrayList<DefaultTransaction>(); // Parse transactions PdfReader reader = new PdfReader(this.transationStream); int nb = reader.getNumberOfPages(); double currentTotal; try { LCLLocationTextExtractionStrategy strategy = parsePage(reader, 1, transactions, null); currentTotal = strategy.getPreviousTotal(); for (int i = 2; i <= nb; ++i) { strategy = parsePage(reader, i, transactions, strategy.getLastType()); } } finally { reader.close(); } // Order transactions Collections.sort(transactions, new Comparator<DefaultTransaction>() { public int compare(DefaultTransaction t1, DefaultTransaction t2) { return t1.getRealDate().compareTo(t2.getRealDate()); } }); // Set total Date currentDate = null; for (DefaultTransaction transaction : transactions) { // total currentTotal += transaction.getValue(); transaction.setTotal(currentTotal); // date if (!transaction.getRealDate().equals(currentDate)) { currentDate = transaction.getDate(); } } // Iterator this.it = transactions.iterator(); }
From source file:org.opencps.pki.PdfSigner.java
License:Open Source License
/** * Compute digest hash//from ww w.j a va 2 s .co m */ protected byte[] computeDigest(float llx, float lly, float urx, float ury) throws SignatureException { byte digestHash[] = null; int contentEstimated = 8192; try { PdfReader reader = new PdfReader(getOriginFilePath()); FileOutputStream os = new FileOutputStream(getTempFilePath()); PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0'); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); signatureFieldName = appearance.getNewSigName(); TSAClient tsaClient = null; appearance.setCertificate(getCertificate()); String tsaUrl = CertificateUtil.getTSAURL(getCertificate()); if (tsaUrl != null) { tsaClient = new TSAClientBouncyCastle(tsaUrl); } if (tsaClient != null) { LtvTimestamp.timestamp(appearance, tsaClient, signatureFieldName); contentEstimated += 4096; } appearance.setSignDate(signDate); CertificateInfo certInfo = new CertificateInfo(getCertificate()); appearance.setLocation(certInfo.getOrganizationUnit()); appearance.setReason("Document is signed by " + certInfo.getCommonName()); appearance.setContact(certInfo.getCommonName()); if (!isVisible) { appearance.setVisibleSignature(new Rectangle(0, 0, 0, 0), 1, signatureFieldName); } else { if (signatureImage != null) { appearance.setSignatureGraphic(signatureImage.getImage()); appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC); } else { appearance.setLayer2Text(certInfo.getCommonName()); } appearance.setVisibleSignature(new Rectangle(llx, lly, urx, ury), 1, signatureFieldName); } ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED); MakeSignature.signExternalContainer(appearance, external, contentEstimated); digestHash = DigestAlgorithms.digest(appearance.getRangeStream(), digest.getMessageDigest(getHashAlgorithm().toString())); reader.close(); os.close(); } catch (Exception e) { throw new SignatureException(e.getMessage(), e); } return digestHash; }
From source file:org.opencps.pki.PdfSigner.java
License:Open Source License
/** * Sign document with external signature container *//*from ww w .j av a 2 s. c o m*/ protected Boolean signExternal(ExternalSignatureContainer container, String filePath) throws SignatureException { if (signatureFieldName == null || signatureFieldName.length() == 0) { throw new SignatureException("You must set signature field name before sign the document"); } Boolean signed = false; try { OutputStream os = new FileOutputStream(getSignedFilePath()); PdfReader reader = new PdfReader(filePath); if (!reader.isEncrypted()) { MakeSignature.signDeferred(reader, signatureFieldName, os, container); reader.close(); os.close(); signed = true; } } catch (Exception e) { throw new SignatureException(e.getMessage(), e); } return signed; }
From source file:org.opencps.pki.PdfVerifier.java
License:Open Source License
/** * (non-Javadoc)// w w w.j av a 2 s . c o m * @throws SignatureException * @see org.opencps.pki.Verifier#verifySignature() */ public Boolean verifySignature(InputStream inputStream, KeyStore ks) throws SignatureException { Boolean verified = false; try { PdfReader reader = new PdfReader(inputStream); AcroFields fields = reader.getAcroFields(); ArrayList<String> names = fields.getSignatureNames(); for (String name : names) { PdfPKCS7 pkcs7 = fields.verifySignature(name); if (pkcs7.verify()) { Certificate[] certs = pkcs7.getSignCertificateChain(); Calendar cal = pkcs7.getSignDate(); List<VerificationException> errors = CertificateVerification.verifyCertificates(certs, ks, cal); if (errors.size() == 0) { X509Certificate signCert = (X509Certificate) certs[0]; X509Certificate issuerCert = (certs.length > 1 ? (X509Certificate) certs[1] : null); verified = checkSignatureRevocation(pkcs7, signCert, issuerCert, cal.getTime()) && checkSignatureRevocation(pkcs7, signCert, issuerCert, new Date()); } } } reader.close(); } catch (Exception e) { throw new SignatureException(e.getMessage(), e); } return verified; }
From source file:org.roda.common.certification.PDFSignatureUtils.java
public static String runDigitalSignatureVerify(Path input) throws IOException, GeneralSecurityException { Security.addProvider(new BouncyCastleProvider()); PdfReader reader = new PdfReader(input.toString()); AcroFields fields = reader.getAcroFields(); ArrayList<String> names = fields.getSignatureNames(); String result = "Passed"; for (int i = 0; i < names.size(); i++) { String name = names.get(i); try {//from ww w . j a v a 2 s . c o m PdfPKCS7 pk = fields.verifySignature(name); X509Certificate certificate = pk.getSigningCertificate(); certificate.checkValidity(); if (!SignatureUtils.isCertificateSelfSigned(certificate)) { Set<Certificate> trustedRootCerts = new HashSet<Certificate>(); Set<Certificate> intermediateCerts = new HashSet<Certificate>(); for (Certificate c : pk.getSignCertificateChain()) { X509Certificate cert = (X509Certificate) c; cert.checkValidity(); if (SignatureUtils.isCertificateSelfSigned(c)) trustedRootCerts.add(c); else intermediateCerts.add(c); } SignatureUtils.verifyCertificateChain(trustedRootCerts, intermediateCerts, certificate); if (pk.getCRLs() != null) { for (CRL crl : pk.getCRLs()) { if (crl.isRevoked(certificate)) { result = "Signing certificate is included on a Certificate Revocation List"; } } } } } catch (NoSuchFieldError e) { result = "Missing signature timestamp field"; } catch (CertificateExpiredException e) { result = "Contains expired certificates"; } catch (CertificateNotYetValidException e) { result = "Contains certificates not yet valid"; } } reader.close(); return result; }
From source file:org.roda.common.certification.PDFSignatureUtils.java
public static List<Path> runDigitalSignatureExtract(Path input) throws SignatureException, IOException { Security.addProvider(new BouncyCastleProvider()); List<Path> paths = new ArrayList<Path>(); Path output = Files.createTempFile("extraction", ".xml"); Path outputContents = Files.createTempFile("contents", ".pkcs7"); PdfReader reader = new PdfReader(input.toString()); AcroFields fields = reader.getAcroFields(); ArrayList<?> names = fields.getSignatureNames(); String filename = input.getFileName().toString(); filename = filename.substring(0, filename.lastIndexOf('.')); if (names.isEmpty()) return paths; StringBuilder sb = getExtractionInformation(fields, names, outputContents, filename); FileOutputStream fos = new FileOutputStream(output.toString()); OutputStreamWriter osw = new OutputStreamWriter(fos); PrintWriter out = new PrintWriter(osw, true); out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); out.println("<signatures>"); out.println(sb.toString());//from ww w . j av a2s.c o m out.println("</signatures>"); IOUtils.closeQuietly(out); IOUtils.closeQuietly(osw); IOUtils.closeQuietly(fos); reader.close(); paths.add(output); paths.add(outputContents); return paths; }
From source file:org.roda.common.certification.PDFSignatureUtils.java
public static void runDigitalSignatureStrip(Path input, Path output) throws IOException, DocumentException { PdfReader reader = new PdfReader(input.toString()); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(output.toString())); stamper.setFormFlattening(true);/* w w w .ja va 2 s . c o m*/ stamper.close(); reader.close(); }
From source file:org.roda.common.certification.PDFSignatureUtils.java
public static Path runDigitalSignatureSign(Path input, String keystore, String alias, String password, String reason, String location, String contact) throws IOException, GeneralSecurityException, DocumentException { Security.addProvider(new BouncyCastleProvider()); Path signedPDF = Files.createTempFile("signed", ".pdf"); KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); InputStream is = new FileInputStream(keystore); ks.load(is, password.toCharArray()); PrivateKey pk = (PrivateKey) ks.getKey(alias, password.toCharArray()); Certificate[] chain = ks.getCertificateChain(alias); IOUtils.closeQuietly(is);//from w w w . ja v a 2 s . c o m PdfReader reader = new PdfReader(input.toString()); FileOutputStream os = new FileOutputStream(signedPDF.toFile()); PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0'); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); appearance.setReason(reason); appearance.setLocation(location); appearance.setContact(contact); appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, "RODASignature"); ExternalDigest digest = new BouncyCastleDigest(); ExternalSignature signature = new PrivateKeySignature(pk, DigestAlgorithms.SHA256, "BC"); MakeSignature.signDetached(appearance, digest, signature, chain, null, null, null, 0, null); IOUtils.closeQuietly(os); reader.close(); return signedPDF; }
From source file:org.roda.core.plugins.plugins.characterization.PDFSignatureUtils.java
public static String runDigitalSignatureVerify(Path input) throws IOException, GeneralSecurityException { Security.addProvider(new BouncyCastleProvider()); PdfReader reader = new PdfReader(input.toString()); AcroFields fields = reader.getAcroFields(); ArrayList<String> names = fields.getSignatureNames(); String result = "Passed"; for (int i = 0; i < names.size(); i++) { String name = names.get(i); try {/*from w ww. j av a2 s . co m*/ PdfPKCS7 pk = fields.verifySignature(name); X509Certificate certificate = pk.getSigningCertificate(); certificate.checkValidity(); if (!SignatureUtils.isCertificateSelfSigned(certificate)) { Set<Certificate> trustedRootCerts = new HashSet<>(); Set<Certificate> intermediateCerts = new HashSet<>(); for (Certificate c : pk.getSignCertificateChain()) { X509Certificate cert = (X509Certificate) c; cert.checkValidity(); if (SignatureUtils.isCertificateSelfSigned(c)) trustedRootCerts.add(c); else intermediateCerts.add(c); } SignatureUtils.verifyCertificateChain(trustedRootCerts, intermediateCerts, certificate); if (pk.getCRLs() != null) { for (CRL crl : pk.getCRLs()) { if (crl.isRevoked(certificate)) { result = "Signing certificate is included on a Certificate Revocation List"; } } } } } catch (NoSuchFieldError e) { result = "Missing signature timestamp field"; } catch (CertificateExpiredException e) { result = "Contains expired certificates"; } catch (CertificateNotYetValidException e) { result = "Contains certificates not yet valid"; } } reader.close(); return result; }
From source file:org.roda.core.plugins.plugins.characterization.PDFSignatureUtils.java
public static List<Path> runDigitalSignatureExtract(Path input) throws SignatureException, IOException { Security.addProvider(new BouncyCastleProvider()); List<Path> paths = new ArrayList<>(); Path output = Files.createTempFile("extraction", ".xml"); Path outputContents = Files.createTempFile("contents", ".pkcs7"); PdfReader reader = new PdfReader(input.toString()); AcroFields fields = reader.getAcroFields(); ArrayList<?> names = fields.getSignatureNames(); String filename = input.getFileName().toString(); filename = filename.substring(0, filename.lastIndexOf('.')); if (names.isEmpty()) return paths; StringBuilder sb = getExtractionInformation(fields, names, outputContents, filename); FileOutputStream fos = new FileOutputStream(output.toString()); OutputStreamWriter osw = new OutputStreamWriter(fos); try (PrintWriter out = new PrintWriter(osw, true)) { out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); out.println("<signatures>"); out.println(sb.toString());/*from ww w. j a v a 2 s . co m*/ out.println("</signatures>"); } reader.close(); paths.add(output); paths.add(outputContents); return paths; }