From bb601dc8aa70faa53cdfac917161f7d2ef7fc1a3 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Fri, 17 Feb 2006 16:18:04 +0000 Subject: XMP metadata generation from the PDFInfo object now conforms to PDF/A-1 (6.7.3 in ISO 19005-1:2005(E)). On PDFDocument, it is now possible to set the PDF-A mode which triggers conformance checks where necessary. The first PDF/A-1b conformance checks are now in the code. When conformance problems are detected, the new PDFConformanceException (subclass of RuntimeException since this would be a programmer error) is thrown. PDF Renderer got a setting (through rendering options and XML configuration) to set the PDF/A-1 mode. Default is "disabled". git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@378560 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/fop/render/pdf/PDFRenderer.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/java/org/apache/fop/render/pdf') diff --git a/src/java/org/apache/fop/render/pdf/PDFRenderer.java b/src/java/org/apache/fop/render/pdf/PDFRenderer.java index d0f65d16f..33602792d 100644 --- a/src/java/org/apache/fop/render/pdf/PDFRenderer.java +++ b/src/java/org/apache/fop/render/pdf/PDFRenderer.java @@ -62,6 +62,7 @@ import org.apache.fop.fonts.FontSetup; import org.apache.fop.image.FopImage; import org.apache.fop.image.ImageFactory; import org.apache.fop.image.XMLImage; +import org.apache.fop.pdf.PDFAMode; import org.apache.fop.pdf.PDFAnnotList; import org.apache.fop.pdf.PDFColor; import org.apache.fop.pdf.PDFDocument; @@ -109,6 +110,9 @@ public class PDFRenderer extends AbstractPathOrientedRenderer { */ public static final String MIME_TYPE = MimeConstants.MIME_PDF; + /** Rendering Options key for the PDF/A mode. */ + public static final String PDF_A_MODE = "pdf-a-mode"; + /** Controls whether comments are written to the PDF stream. */ protected static final boolean WRITE_COMMENTS = true; @@ -117,6 +121,9 @@ public class PDFRenderer extends AbstractPathOrientedRenderer { */ protected PDFDocument pdfDoc; + /** the PDF/A mode (Default: disabled) */ + protected PDFAMode pdfAMode = PDFAMode.DISABLED; + /** * Map of pages using the PageViewport as the key * this is used for prepared pages that cannot be immediately @@ -230,6 +237,11 @@ public class PDFRenderer extends AbstractPathOrientedRenderer { } else { this.fontList.addAll(cfgFonts); } + + String s = cfg.getChild(PDF_A_MODE, true).getValue(null); + if (s != null) { + this.pdfAMode = PDFAMode.valueOf(s); + } } /** @@ -237,6 +249,10 @@ public class PDFRenderer extends AbstractPathOrientedRenderer { */ public void setUserAgent(FOUserAgent agent) { super.setUserAgent(agent); + String s = (String)agent.getRendererOptions().get(PDF_A_MODE); + if (s != null) { + this.pdfAMode = PDFAMode.valueOf(s); + } } /** @@ -249,6 +265,7 @@ public class PDFRenderer extends AbstractPathOrientedRenderer { ostream = stream; this.pdfDoc = new PDFDocument( userAgent.getProducer() != null ? userAgent.getProducer() : ""); + this.pdfDoc.setPDFAMode(this.pdfAMode); this.pdfDoc.setCreator(userAgent.getCreator()); this.pdfDoc.setCreationDate(userAgent.getCreationDate()); this.pdfDoc.getInfo().setAuthor(userAgent.getAuthor()); -- cgit v1.2.3