List of usage examples for com.lowagie.text.pdf PdfWriter PDFA1B
int PDFA1B
To view the source code for com.lowagie.text.pdf PdfWriter PDFA1B.
Click Source Link
From source file:be.fedict.eid.tsl.Tsl2PdfExporter.java
License:Open Source License
/** * Produce a human readable export of the given tsl to the given file. * //from ww w . j ava 2s .com * @param tsl * the TrustServiceList to export * @param pdfFile * the file to generate * @return * @throws IOException */ public void humanReadableExport(final TrustServiceList tsl, final File pdfFile) { Document document = new Document(); OutputStream outputStream; try { outputStream = new FileOutputStream(pdfFile); } catch (FileNotFoundException e) { throw new RuntimeException("file not found: " + pdfFile.getAbsolutePath(), e); } try { final PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream); pdfWriter.setPDFXConformance(PdfWriter.PDFA1B); // title final EUCountry country = EUCountry.valueOf(tsl.getSchemeTerritory()); final String title = country.getShortSrcLangName() + " (" + country.getShortEnglishName() + "): Trusted List"; Phrase footerPhrase = new Phrase("PDF document generated on " + new Date().toString() + ", page ", headerFooterFont); HeaderFooter footer = new HeaderFooter(footerPhrase, true); document.setFooter(footer); Phrase headerPhrase = new Phrase(title, headerFooterFont); HeaderFooter header = new HeaderFooter(headerPhrase, false); document.setHeader(header); document.open(); addTitle(title, title0Font, Paragraph.ALIGN_CENTER, 0, 20, document); addLongItem("Scheme name", tsl.getSchemeName(), document); addLongItem("Legal Notice", tsl.getLegalNotice(), document); // information table PdfPTable informationTable = createInfoTable(); addItemRow("Scheme territory", tsl.getSchemeTerritory(), informationTable); addItemRow("Scheme status determination approach", substringAfter(tsl.getStatusDeterminationApproach(), "StatusDetn/"), informationTable); /* final List<String> schemeTypes = new ArrayList<String>(); for (final String schemeType : tsl.getSchemeTypes()) { schemeTypes.add(schemeType); } */ final List<String> schemeTypes = new ArrayList<String>(); List<NonEmptyMultiLangURIType> uris = tsl.getSchemeTypes(); for (NonEmptyMultiLangURIType uri : uris) { schemeTypes.add(uri.getValue()); } addItemRow("Scheme type community rules", schemeTypes, informationTable); addItemRow("Issue date", tsl.getListIssueDateTime().toString(), informationTable); addItemRow("Next update", tsl.getNextUpdate().toString(), informationTable); addItemRow("Historical information period", tsl.getHistoricalInformationPeriod().toString() + " days", informationTable); addItemRow("Sequence number", tsl.getSequenceNumber().toString(), informationTable); addItemRow("Scheme information URIs", tsl.getSchemeInformationUris(), informationTable); document.add(informationTable); addTitle("Scheme Operator", title1Font, Paragraph.ALIGN_CENTER, 0, 10, document); informationTable = createInfoTable(); addItemRow("Scheme operator name", tsl.getSchemeOperatorName(), informationTable); PostalAddressType schemeOperatorPostalAddress = tsl.getSchemeOperatorPostalAddress(Locale.ENGLISH); addItemRow("Scheme operator street address", schemeOperatorPostalAddress.getStreetAddress(), informationTable); addItemRow("Scheme operator postal code", schemeOperatorPostalAddress.getPostalCode(), informationTable); addItemRow("Scheme operator locality", schemeOperatorPostalAddress.getLocality(), informationTable); addItemRow("Scheme operator state", schemeOperatorPostalAddress.getStateOrProvince(), informationTable); addItemRow("Scheme operator country", schemeOperatorPostalAddress.getCountryName(), informationTable); List<String> schemeOperatorElectronicAddressess = tsl.getSchemeOperatorElectronicAddresses(); addItemRow("Scheme operator contact", schemeOperatorElectronicAddressess, informationTable); document.add(informationTable); addTitle("Trust Service Providers", title1Font, Paragraph.ALIGN_CENTER, 10, 2, document); List<TrustServiceProvider> trustServiceProviders = tsl.getTrustServiceProviders(); for (TrustServiceProvider trustServiceProvider : trustServiceProviders) { addTitle(trustServiceProvider.getName(), title1Font, Paragraph.ALIGN_LEFT, 10, 2, document); PdfPTable providerTable = createInfoTable(); addItemRow("Service provider trade name", trustServiceProvider.getTradeNames(), providerTable); addItemRow("Information URI", trustServiceProvider.getInformationUris(), providerTable); PostalAddressType postalAddress = trustServiceProvider.getPostalAddress(); addItemRow("Service provider street address", postalAddress.getStreetAddress(), providerTable); addItemRow("Service provider postal code", postalAddress.getPostalCode(), providerTable); addItemRow("Service provider locality", postalAddress.getLocality(), providerTable); addItemRow("Service provider state", postalAddress.getStateOrProvince(), providerTable); addItemRow("Service provider country", postalAddress.getCountryName(), providerTable); document.add(providerTable); List<TrustService> trustServices = trustServiceProvider.getTrustServices(); for (TrustService trustService : trustServices) { addTitle(trustService.getName(), title2Font, Paragraph.ALIGN_LEFT, 10, 2, document); PdfPTable serviceTable = createInfoTable(); addItemRow("Type", substringAfter(trustService.getType(), "Svctype/"), serviceTable); addItemRow("Status", substringAfter(trustService.getStatus(), "Svcstatus/"), serviceTable); addItemRow("Status starting time", trustService.getStatusStartingTime().toString(), serviceTable); document.add(serviceTable); addTitle("Service digital identity (X509)", title3Font, Paragraph.ALIGN_LEFT, 2, 0, document); final X509Certificate certificate = trustService.getServiceDigitalIdentity(); final PdfPTable serviceIdentityTable = createInfoTable(); addItemRow("Version", Integer.toString(certificate.getVersion()), serviceIdentityTable); addItemRow("Serial number", certificate.getSerialNumber().toString(), serviceIdentityTable); addItemRow("Signature algorithm", certificate.getSigAlgName(), serviceIdentityTable); addItemRow("Issuer", certificate.getIssuerX500Principal().toString(), serviceIdentityTable); addItemRow("Valid from", certificate.getNotBefore().toString(), serviceIdentityTable); addItemRow("Valid to", certificate.getNotAfter().toString(), serviceIdentityTable); addItemRow("Subject", certificate.getSubjectX500Principal().toString(), serviceIdentityTable); addItemRow("Public key", certificate.getPublicKey().toString(), serviceIdentityTable); // TODO certificate policies addItemRow("Subject key identifier", toHex(getSKId(certificate)), serviceIdentityTable); addItemRow("CRL distribution points", getCrlDistributionPoints(certificate), serviceIdentityTable); addItemRow("Authority key identifier", toHex(getAKId(certificate)), serviceIdentityTable); addItemRow("Key usage", getKeyUsage(certificate), serviceIdentityTable); addItemRow("Basic constraints", getBasicConstraints(certificate), serviceIdentityTable); byte[] encodedCertificate; try { encodedCertificate = certificate.getEncoded(); } catch (CertificateEncodingException e) { throw new RuntimeException("cert: " + e.getMessage(), e); } addItemRow("SHA1 Thumbprint", DigestUtils.shaHex(encodedCertificate), serviceIdentityTable); addItemRow("SHA256 Thumbprint", DigestUtils.sha256Hex(encodedCertificate), serviceIdentityTable); document.add(serviceIdentityTable); //add Scheme service definition if (null != trustService.getSchemeServiceDefinitionURI()) { addTitle("Scheme Service Definition URI", title3Font, Paragraph.ALIGN_LEFT, 2, 0, document); final PdfPTable schemeServiceDefinitionURITabel = createInfoTable(); for (NonEmptyMultiLangURIType uri : trustService.getSchemeServiceDefinitionURI().getURI()) { addItemRow(uri.getLang(), uri.getValue(), schemeServiceDefinitionURITabel); } document.add(schemeServiceDefinitionURITabel); } List<ExtensionType> extensions = trustService.getExtensions(); for (ExtensionType extension : extensions) { printExtension(extension, document); } addLongMonoItem("The decoded certificate:", certificate.toString(), document); addLongMonoItem("The certificate in PEM format:", toPem(certificate), document); ServiceHistoryType serviceHistoryType = trustService.getServiceHistoryInstanceType(); if (null != serviceHistoryType) { for (ServiceHistoryInstanceType serviceHistoryInstanceType : serviceHistoryType .getServiceHistoryInstance()) { PdfPTable serviceHistoryTable = createInfoTable(); //Service approval history information addTitle("Service approval history information", title3Font, Paragraph.ALIGN_LEFT, 10, 2, document); // service type identifier //5.6.2 Service name InternationalNamesType i18nServiceName = serviceHistoryInstanceType.getServiceName(); String servName = TrustServiceListUtils.getValue(i18nServiceName, Locale.ENGLISH); addItemRow("Name", servName, serviceHistoryTable); //5.6.1 Service type identifier addItemRow("Type", substringAfter(serviceHistoryInstanceType.getServiceTypeIdentifier(), "Svctype/"), serviceHistoryTable); addItemRow("Status", serviceHistoryInstanceType.getServiceStatus(), serviceHistoryTable); //5.6.4 Service previous status addItemRow("Previous status", serviceHistoryInstanceType.getServiceStatus(), serviceHistoryTable); //5.6.5 Previous status starting date and time addItemRow( "Previous starting time", new DateTime(serviceHistoryInstanceType .getStatusStartingTime().toGregorianCalendar()).toString(), serviceHistoryTable); //5.6.3 Service digital identity final X509Certificate previousCertificate = trustService.getServiceDigitalIdentity( serviceHistoryInstanceType.getServiceDigitalIdentity()); document.add(serviceHistoryTable); addTitle("Service digital identity (X509)", title4Font, Paragraph.ALIGN_LEFT, 2, 0, document); final PdfPTable serviceIdentityTableHistory = createInfoTable(); addItemRow("Version", Integer.toString(previousCertificate.getVersion()), serviceIdentityTableHistory); addItemRow("Serial number", previousCertificate.getSerialNumber().toString(), serviceIdentityTableHistory); addItemRow("Signature algorithm", previousCertificate.getSigAlgName(), serviceIdentityTableHistory); addItemRow("Issuer", previousCertificate.getIssuerX500Principal().toString(), serviceIdentityTableHistory); addItemRow("Valid from", previousCertificate.getNotBefore().toString(), serviceIdentityTableHistory); addItemRow("Valid to", previousCertificate.getNotAfter().toString(), serviceIdentityTableHistory); addItemRow("Subject", previousCertificate.getSubjectX500Principal().toString(), serviceIdentityTableHistory); addItemRow("Public key", previousCertificate.getPublicKey().toString(), serviceIdentityTableHistory); // TODO certificate policies addItemRow("Subject key identifier", toHex(getSKId(previousCertificate)), serviceIdentityTableHistory); addItemRow("CRL distribution points", getCrlDistributionPoints(previousCertificate), serviceIdentityTableHistory); addItemRow("Authority key identifier", toHex(getAKId(previousCertificate)), serviceIdentityTableHistory); addItemRow("Key usage", getKeyUsage(previousCertificate), serviceIdentityTableHistory); addItemRow("Basic constraints", getBasicConstraints(previousCertificate), serviceIdentityTableHistory); byte[] encodedHistoryCertificate; try { encodedHistoryCertificate = previousCertificate.getEncoded(); } catch (CertificateEncodingException e) { throw new RuntimeException("cert: " + e.getMessage(), e); } addItemRow("SHA1 Thumbprint", DigestUtils.shaHex(encodedHistoryCertificate), serviceIdentityTableHistory); addItemRow("SHA256 Thumbprint", DigestUtils.sha256Hex(encodedHistoryCertificate), serviceIdentityTableHistory); document.add(serviceIdentityTableHistory); ExtensionsListType previousExtensions = serviceHistoryInstanceType .getServiceInformationExtensions(); if (null != previousExtensions) { for (ExtensionType extension : previousExtensions.getExtension()) { printExtension(extension, document); } } addLongMonoItem("The decoded certificate:", previousCertificate.toString(), document); addLongMonoItem("The certificate in PEM format:", toPem(previousCertificate), document); } } } } X509Certificate signerCertificate = tsl.verifySignature(); if (null != signerCertificate) { Paragraph tslSignerTitle = new Paragraph("Trusted List Signer", title1Font); tslSignerTitle.setAlignment(Paragraph.ALIGN_CENTER); document.add(tslSignerTitle); final PdfPTable signerTable = createInfoTable(); addItemRow("Subject", signerCertificate.getSubjectX500Principal().toString(), signerTable); addItemRow("Issuer", signerCertificate.getIssuerX500Principal().toString(), signerTable); addItemRow("Not before", signerCertificate.getNotBefore().toString(), signerTable); addItemRow("Not after", signerCertificate.getNotAfter().toString(), signerTable); addItemRow("Serial number", signerCertificate.getSerialNumber().toString(), signerTable); addItemRow("Version", Integer.toString(signerCertificate.getVersion()), signerTable); byte[] encodedPublicKey = signerCertificate.getPublicKey().getEncoded(); addItemRow("Public key SHA1 Thumbprint", DigestUtils.shaHex(encodedPublicKey), signerTable); addItemRow("Public key SHA256 Thumbprint", DigestUtils.sha256Hex(encodedPublicKey), signerTable); document.add(signerTable); addLongMonoItem("The decoded certificate:", signerCertificate.toString(), document); addLongMonoItem("The certificate in PEM format:", toPem(signerCertificate), document); addLongMonoItem("The public key in PEM format:", toPem(signerCertificate.getPublicKey()), document); } document.close(); } catch (DocumentException e) { throw new RuntimeException("PDF document error: " + e.getMessage(), e); } catch (Exception e) { throw new RuntimeException("Exception: " + e.getMessage(), e); } }
From source file:de.unigoettingen.sub.commons.contentlib.pdflib.PDFManager.java
License:Apache License
/** * Creates the pdf writer.//from w ww . jav a 2s . com * * @param out the out * @param writer the writer * @param pdfdoc the pdfdoc * * @return the pdf writer * * @throws PDFManagerException the PDF manager exception */ private PdfWriter createPDFWriter(OutputStream out, Document pdfdoc) throws PDFManagerException { PdfWriter writer = null; try { // open the pdfwriter using the outstream writer = PdfWriter.getInstance(pdfdoc, out); LOGGER.debug("PDFWriter intstantiated"); // register Fonts int numoffonts = FontFactory.registerDirectories(); LOGGER.debug(numoffonts + " fonts found and registered!"); if ((pdfa) && (iccprofile != null)) { // we want to write PDFA, we have to set the PDFX conformance // before we open the writer writer.setPDFXConformance(PdfWriter.PDFA1B); } // open the pdf document to add pages and other content try { pdfdoc.open(); LOGGER.debug("PDFDocument opened"); } catch (Exception e) { throw new PDFManagerException("PdfWriter was opened, but the pdf document couldn't be opened", e); } if ((pdfa) && (iccprofile != null)) { // set the required PDFDictionary which // contains the appropriate ICC profile PdfDictionary pdfdict_out = new PdfDictionary(PdfName.OUTPUTINTENT); // set identifier for ICC profile pdfdict_out.put(PdfName.OUTPUTCONDITIONIDENTIFIER, new PdfString("sRGBIEC61966-2.1")); pdfdict_out.put(PdfName.INFO, new PdfString("sRGB IEC61966-2.1")); pdfdict_out.put(PdfName.S, PdfName.GTS_PDFA1); // PdfICCBased ib = new PdfICCBased(iccprofile); // writer.setOutputIntents("Custom", "PDF/A sRGB", null, "PDF/A // sRGB ICC Profile, sRGB_IEC61966-2-1_withBPC.icc", // colorProfileData); // read icc profile // ICC_Profile icc = ICC_Profile.getInstance(new // FileInputStream("c:\\srgb.profile")); PdfICCBased ib = new PdfICCBased(iccprofile); ib.remove(PdfName.ALTERNATE); PdfIndirectObject pio = writer.addToBody(ib); pdfdict_out.put(PdfName.DESTOUTPUTPROFILE, pio.getIndirectReference()); writer.getExtraCatalog().put(PdfName.OUTPUTINTENTS, new PdfArray(pdfdict_out)); // create MarkInfo elements // not sure this is necessary; maybe just needed for tagged PDFs // (PDF/A 1a) PdfDictionary markInfo = new PdfDictionary(PdfName.MARKINFO); markInfo.put(PdfName.MARKED, new PdfBoolean("false")); writer.getExtraCatalog().put(PdfName.MARKINFO, markInfo); // write XMP this.writeXMPMetadata(writer); } } catch (Exception e) { LOGGER.error("Can't open the PdfWriter object\n" + e.toString() + "\n" + e.getMessage()); throw new PDFManagerException("Can't open the PdfWriter object", e); } return writer; }
From source file:eu.europa.ec.markt.dss.report.Tsl2PdfExporter.java
License:Open Source License
/** * Produce a human readable export of the given tsl to the given file. * //from ww w. j a va 2s . c o m * @param tsl * the TrustServiceList to export * @param pdfFile * the file to generate * @return * @throws IOException */ public void humanReadableExport(final TrustServiceList tsl, final File pdfFile) { Document document = new Document(); OutputStream outputStream; try { outputStream = new FileOutputStream(pdfFile); } catch (FileNotFoundException e) { throw new RuntimeException("file not found: " + pdfFile.getAbsolutePath(), e); } try { final PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream); pdfWriter.setPDFXConformance(PdfWriter.PDFA1B); // title final EUCountry country = EUCountry.valueOf(tsl.getSchemeTerritory()); final String title = country.getShortSrcLangName() + " (" + country.getShortEnglishName() + "): Trusted List"; Phrase footerPhrase = new Phrase("PDF document generated on " + new Date().toString() + ", page ", headerFooterFont); HeaderFooter footer = new HeaderFooter(footerPhrase, true); document.setFooter(footer); Phrase headerPhrase = new Phrase(title, headerFooterFont); HeaderFooter header = new HeaderFooter(headerPhrase, false); document.setHeader(header); document.open(); addTitle(title, title0Font, Paragraph.ALIGN_CENTER, 0, 20, document); addLongItem("Scheme name", tsl.getSchemeName(), document); addLongItem("Legal Notice", tsl.getLegalNotice(), document); // information table PdfPTable informationTable = createInfoTable(); addItemRow("Scheme territory", tsl.getSchemeTerritory(), informationTable); addItemRow("Scheme status determination approach", substringAfter(tsl.getStatusDeterminationApproach(), "StatusDetn/"), informationTable); final List<String> schemeTypes = new ArrayList<String>(); for (final String schemeType : tsl.getSchemeTypes()) { schemeTypes.add(schemeType); } addItemRow("Scheme type community rules", schemeTypes, informationTable); addItemRow("Issue date", tsl.getListIssueDateTime().toString(), informationTable); addItemRow("Next update", tsl.getNextUpdate().toString(), informationTable); addItemRow("Historical information period", tsl.getHistoricalInformationPeriod().toString() + " days", informationTable); addItemRow("Sequence number", tsl.getSequenceNumber().toString(), informationTable); addItemRow("Scheme information URIs", tsl.getSchemeInformationUris(), informationTable); document.add(informationTable); addTitle("Scheme Operator", title1Font, Paragraph.ALIGN_CENTER, 0, 10, document); informationTable = createInfoTable(); addItemRow("Scheme operator name", tsl.getSchemeOperatorName(), informationTable); PostalAddressType schemeOperatorPostalAddress = tsl.getSchemeOperatorPostalAddress(Locale.ENGLISH); addItemRow("Scheme operator street address", schemeOperatorPostalAddress.getStreetAddress(), informationTable); addItemRow("Scheme operator postal code", schemeOperatorPostalAddress.getPostalCode(), informationTable); addItemRow("Scheme operator locality", schemeOperatorPostalAddress.getLocality(), informationTable); addItemRow("Scheme operator state", schemeOperatorPostalAddress.getStateOrProvince(), informationTable); addItemRow("Scheme operator country", schemeOperatorPostalAddress.getCountryName(), informationTable); List<String> schemeOperatorElectronicAddressess = tsl.getSchemeOperatorElectronicAddresses(); addItemRow("Scheme operator contact", schemeOperatorElectronicAddressess, informationTable); document.add(informationTable); addTitle("Trust Service Providers", title1Font, Paragraph.ALIGN_CENTER, 10, 2, document); List<TrustServiceProvider> trustServiceProviders = tsl.getTrustServiceProviders(); for (TrustServiceProvider trustServiceProvider : trustServiceProviders) { addTitle(trustServiceProvider.getName(), title1Font, Paragraph.ALIGN_LEFT, 10, 2, document); PdfPTable providerTable = createInfoTable(); addItemRow("Service provider trade name", trustServiceProvider.getTradeName(), providerTable); addItemRow("Information URI", trustServiceProvider.getInformationUris(), providerTable); PostalAddressType postalAddress = trustServiceProvider.getPostalAddress(); addItemRow("Service provider street address", postalAddress.getStreetAddress(), providerTable); addItemRow("Service provider postal code", postalAddress.getPostalCode(), providerTable); addItemRow("Service provider locality", postalAddress.getLocality(), providerTable); addItemRow("Service provider state", postalAddress.getStateOrProvince(), providerTable); addItemRow("Service provider country", postalAddress.getCountryName(), providerTable); document.add(providerTable); List<TrustService> trustServices = trustServiceProvider.getTrustServices(); for (TrustService trustService : trustServices) { addTitle(trustService.getName(), title2Font, Paragraph.ALIGN_LEFT, 10, 2, document); PdfPTable serviceTable = createInfoTable(); addItemRow("Type", substringAfter(trustService.getType(), "Svctype/"), serviceTable); addItemRow("Status", substringAfter(trustService.getStatus(), "Svcstatus/"), serviceTable); addItemRow("Status starting time", trustService.getStatusStartingTime().toString(), serviceTable); document.add(serviceTable); addTitle("Service digital identity (X509)", title3Font, Paragraph.ALIGN_LEFT, 2, 0, document); final X509Certificate certificate = trustService.getServiceDigitalIdentity(); final PdfPTable serviceIdentityTable = createInfoTable(); addItemRow("Version", Integer.toString(certificate.getVersion()), serviceIdentityTable); addItemRow("Serial number", certificate.getSerialNumber().toString(), serviceIdentityTable); addItemRow("Signature algorithm", certificate.getSigAlgName(), serviceIdentityTable); addItemRow("Issuer", certificate.getIssuerX500Principal().toString(), serviceIdentityTable); addItemRow("Valid from", certificate.getNotBefore().toString(), serviceIdentityTable); addItemRow("Valid to", certificate.getNotAfter().toString(), serviceIdentityTable); addItemRow("Subject", certificate.getSubjectX500Principal().toString(), serviceIdentityTable); addItemRow("Public key", certificate.getPublicKey().toString(), serviceIdentityTable); // TODO certificate policies addItemRow("Subject key identifier", toHex(getSKId(certificate)), serviceIdentityTable); addItemRow("CRL distribution points", getCrlDistributionPoints(certificate), serviceIdentityTable); addItemRow("Authority key identifier", toHex(getAKId(certificate)), serviceIdentityTable); addItemRow("Key usage", getKeyUsage(certificate), serviceIdentityTable); addItemRow("Basic constraints", getBasicConstraints(certificate), serviceIdentityTable); byte[] encodedCertificate; try { encodedCertificate = certificate.getEncoded(); } catch (CertificateEncodingException e) { throw new RuntimeException("cert: " + e.getMessage(), e); } addItemRow("SHA1 Thumbprint", DigestUtils.shaHex(encodedCertificate), serviceIdentityTable); addItemRow("SHA256 Thumbprint", DigestUtils.sha256Hex(encodedCertificate), serviceIdentityTable); document.add(serviceIdentityTable); List<ExtensionType> extensions = trustService.getExtensions(); for (ExtensionType extension : extensions) { printExtension(extension, document); } addLongMonoItem("The decoded certificate:", certificate.toString(), document); addLongMonoItem("The certificate in PEM format:", toPem(certificate), document); } } X509Certificate signerCertificate = tsl.verifySignature(); if (null != signerCertificate) { Paragraph tslSignerTitle = new Paragraph("Trusted List Signer", title1Font); tslSignerTitle.setAlignment(Paragraph.ALIGN_CENTER); document.add(tslSignerTitle); final PdfPTable signerTable = createInfoTable(); addItemRow("Subject", signerCertificate.getSubjectX500Principal().toString(), signerTable); addItemRow("Issuer", signerCertificate.getIssuerX500Principal().toString(), signerTable); addItemRow("Not before", signerCertificate.getNotBefore().toString(), signerTable); addItemRow("Not after", signerCertificate.getNotAfter().toString(), signerTable); addItemRow("Serial number", signerCertificate.getSerialNumber().toString(), signerTable); addItemRow("Version", Integer.toString(signerCertificate.getVersion()), signerTable); byte[] encodedPublicKey = signerCertificate.getPublicKey().getEncoded(); addItemRow("Public key SHA1 Thumbprint", DigestUtils.shaHex(encodedPublicKey), signerTable); addItemRow("Public key SHA256 Thumbprint", DigestUtils.sha256Hex(encodedPublicKey), signerTable); document.add(signerTable); addLongMonoItem("The decoded certificate:", signerCertificate.toString(), document); addLongMonoItem("The certificate in PEM format:", toPem(signerCertificate), document); addLongMonoItem("The public key in PEM format:", toPem(signerCertificate.getPublicKey()), document); } document.close(); } catch (DocumentException e) { throw new RuntimeException("PDF document error: " + e.getMessage(), e); } catch (Exception e) { throw new RuntimeException("Exception: " + e.getMessage(), e); } }
From source file:net.sf.jasperreports.engine.export.PdfXmpCreator.java
License:Open Source License
byte[] createXmpMetadata() { try {/*from ww w.j av a 2 s .c o m*/ XMPMeta xmp = XMPMetaFactory.create(); xmp.setObjectName(""); xmp.setProperty(XMPConst.NS_DC, DublinCoreSchema.FORMAT, FORMAT_PDF); xmp.setProperty(XMPConst.NS_PDF, PDF_PRODUCER, Document.getVersion()); if (pdfWriter.getPDFXConformance() == PdfWriter.PDFA1A) { xmp.setProperty(XMPConst.NS_PDFA_ID, PDFA_PART, PDFA_PART_1); xmp.setProperty(XMPConst.NS_PDFA_ID, PDFA_CONFORMANCE, PDFA_CONFORMANCE_A); } else if (pdfWriter.getPDFXConformance() == PdfWriter.PDFA1B) { xmp.setProperty(XMPConst.NS_PDFA_ID, PDFA_PART, PDFA_PART_1); xmp.setProperty(XMPConst.NS_PDFA_ID, PDFA_CONFORMANCE, PDFA_CONFORMANCE_B); } xmp.setProperty(XMPConst.NS_XMP, XMP_CREATE_DATE, ((PdfDate) info.get(PdfName.CREATIONDATE)).getW3CDate()); xmp.setProperty(XMPConst.NS_XMP, XMP_MODIFY_DATE, ((PdfDate) info.get(PdfName.MODDATE)).getW3CDate()); String title = extractInfo(PdfName.TITLE); if (title != null) { xmp.setLocalizedText(XMPConst.NS_DC, DublinCoreSchema.TITLE, //FIXME use the tag language? XMPConst.X_DEFAULT, XMPConst.X_DEFAULT, title); } String author = extractInfo(PdfName.AUTHOR); if (author != null) { //FIXME cache the options? PropertyOptions arrayOrdered = new PropertyOptions().setArrayOrdered(true); xmp.appendArrayItem(XMPConst.NS_DC, DublinCoreSchema.CREATOR, arrayOrdered, author, null); } String subject = extractInfo(PdfName.SUBJECT); if (subject != null) { PropertyOptions array = new PropertyOptions().setArray(true); xmp.appendArrayItem(XMPConst.NS_DC, DublinCoreSchema.SUBJECT, array, subject, null); xmp.setLocalizedText(XMPConst.NS_DC, DublinCoreSchema.DESCRIPTION, XMPConst.X_DEFAULT, XMPConst.X_DEFAULT, subject); } String keywords = extractInfo(PdfName.KEYWORDS); if (keywords != null) { xmp.setProperty(XMPConst.NS_PDF, PDF_KEYWORDS, keywords); } String creator = extractInfo(PdfName.CREATOR); if (creator != null) { xmp.setProperty(XMPConst.NS_XMP, XMP_CREATOR_TOOL, creator); } SerializeOptions options = new SerializeOptions(); options.setUseCanonicalFormat(true); ByteArrayOutputStream out = new ByteArrayOutputStream(4096); XMPMetaFactory.serialize(xmp, out, options); return out.toByteArray(); } catch (XMPException e) { throw new JRRuntimeException(e); } }
From source file:net.sf.sze.service.impl.converter.PdfConverterImpl.java
License:GNU General Public License
/** * {@inheritDoc}/* w w w . j a va 2 s. c o m*/ */ @Override public File concatAll(File directory, String praefix) { final String completePdfName = praefix + "_complete.pdf"; final File completePdf = new File(directory, completePdfName); completePdf.delete(); final String[] pdfs = directory.list(new PrefixFileFilter(praefix)); if ((pdfs != null) && (pdfs.length > 0)) { final Document document = new Document(); try { final PdfCopy copy = new PdfCopy(document, new FileOutputStream(completePdf)); copy.setPDFXConformance(PdfWriter.PDFA1B); document.open(); addPdfAInfosToDictonary(copy); Arrays.sort(pdfs); for (String pdfName : pdfs) { if (completePdfName.equals(pdfName) || pdfName.startsWith(".")) { continue; } try { final PdfReader reader = new PdfReader(new FileInputStream(new File(directory, pdfName))); for (int page = 1; page <= reader.getNumberOfPages(); page++) { copy.addPage(copy.getImportedPage(reader, page)); } } catch (DocumentException de) { LOG.error(pdfName, de); throw de; } catch (IOException io) { LOG.error(pdfName, io); throw io; } } } catch (DocumentException e) { throw new PDFConversionException(e); } catch (IOException e) { throw new PDFConversionException(e); } finally { document.close(); } } return completePdf; }
From source file:net.sf.sze.service.impl.converter.PdfConverterImpl.java
License:GNU General Public License
/** * Makes a clean PDF-A-File./*from ww w. ja v a 2s.c om*/ * @param reader a pdfreader * @param pdfFileA4 the filename for the pdf-a-output. * @throws IOException io-trouble or file doesn't exist. * @throws DocumentException problems in itext. */ private void makeCleanPdfA(PdfReader reader, File pdfFileA4) throws IOException, DocumentException { Document document = new Document(); PdfCopy copy = new PdfCopy(document, new FileOutputStream(pdfFileA4)); copy.setPDFXConformance(PdfWriter.PDFA1B); document.open(); addPdfAInfosToDictonary(copy); final int pageNrs = reader.getNumberOfPages(); for (int page = 1; page <= pageNrs; page++) { copy.addPage(copy.getImportedPage(reader, page)); } document.close(); }
From source file:net.sf.sze.service.impl.converter.PdfConverterImpl.java
License:GNU General Public License
/** * Orders the pages from an DIN-A4-document on a DIN-A3-document. * @param reader reader for DIN-A4-document * @param pdfFileA3 file in which the A3-document will be saved. * @param pages page-numbers in the order they will placed the paper in the * order left, right-side must be a multiple of 4. 0 is interpreted as an * empty-page.//from www.ja v a 2s .c om * @throws DocumentException problems in iText. * @throws IOException io-problems. */ private void createA3Subdocument(PdfReader reader, File pdfFileA3, int... pages) throws DocumentException, IOException { if (pages.length % 4 != 0) { throw new IllegalArgumentException("The number of pages must be a " + "multiple of 4."); } // we retrieve the size of the first page final Rectangle psize = reader.getPageSize(1); final float width = psize.getWidth(); final float leftMargin = 0f; final float topMargin = 0f; // step 1: creation of a document-object final Document document = new Document(PageSize.A3.rotate()); // step 2: we create a writer that listens to the document final PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFileA3)); writer.setPDFXConformance(PdfWriter.PDFA1B); // step 3: we open the document document.open(); addPdfAInfosToDictonary(writer); // step 4: we add content final PdfContentByte cb = writer.getDirectContent(); final PdfTemplate[] pdfPages = new PdfTemplate[pages.length]; for (int i = 0; i < pdfPages.length; i++) { final int pageNr = pages[i]; final PdfTemplate page; if (pageNr == EMPTY_PAGE) { page = writer.getImportedPage(getEmptyPDFPage(psize), 1); } else { page = writer.getImportedPage(reader, pageNr); } if (i % 2 == 0) { document.newPage(); cb.addTemplate(page, 1f, 0f, 0f, 1f, leftMargin, topMargin); } else { cb.addTemplate(page, 1f, 0f, 0f, 1f, width + leftMargin, topMargin); } } writer.createXmpMetadata(); // step 5: we close the document document.close(); }
From source file:net.sf.sze.service.impl.converter.PdfConverterImpl.java
License:GNU General Public License
/** * Create from a DIN-A4-document a DIN-A4 subdocument. * @param reader reader for DIN-A4-document * @param pdfFileA4 file in which the new A4-document will be saved. * @param pages page-numbers in the order they will placed the paper. * @throws IOException/*from w ww. j a v a 2 s. c o m*/ * @throws DocumentException */ private void createA4Subdocument(PdfReader reader, File pdfFileA4, int... pages) throws IOException, DocumentException { // step 1: creation of a document-object Document document = new Document(reader.getPageSize(1)); // step 2: we create a writer that listens to the document PdfCopy copy = new PdfCopy(document, new FileOutputStream(pdfFileA4)); copy.setPDFXConformance(PdfWriter.PDFA1B); // step 3: we open the document document.open(); addPdfAInfosToDictonary(copy); final Rectangle psize = reader.getPageSize(1); for (int pageNr : pages) { if (pageNr == EMPTY_PAGE) { copy.addPage(copy.getImportedPage(getEmptyPDFPage(psize), 1)); } else { copy.addPage(copy.getImportedPage(reader, pageNr)); } } copy.createXmpMetadata(); // step 5: we close the document document.close(); }
From source file:org.oss.pdfreporter.pdf.Document.java
License:Open Source License
@Override public void setPdfConformance(ConformanceLevel level) { pdfWriter.setPDFXConformance(level == ConformanceLevel.PDF_1A ? PdfWriter.PDFA1A : PdfWriter.PDFA1B); }