Dear Wiki user, You have subscribed to a wiki page or wiki category on "Xmlgraphics-fop Wiki" for change notification.
The "PDFA1ConformanceNotes" page has been changed by VincentHennebert: http://wiki.apache.org/xmlgraphics-fop/PDFA1ConformanceNotes?action=diff&rev1=6&rev2=7 Comment: Added notes about implementing support for PDF/A-2 - = PDF/A-1 Conformance Notes = + = PDF/A Conformance Notes = - This document discusses topic around making Apache FOP conformant to PDF/A-1 (ISO 19005-1:2005(E)). PDF/A-1 is an ISO standard that defines additional requirements and restrictions on PDF documents to make them useful for long-term preservation. + This document discusses what needs to be done to make Apache FOP conformant to PDF/A (ISO 19005). PDF/A is an ISO standard that defines additional requirements and restrictions on PDF documents to make them useful for long-term preservation. References: - * [[http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38920&ICS1=37&ICS2=100&ICS3=99|ISO 19005-1:2005(E)]] + * PDF/A-1: + * [[http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=38920|ISO 19005-1:2005(E)]] - * [[http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf|PDF Reference 1.4]] + * [[http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf|PDF Reference 1.4]] + * PDF/A-2: + * [[http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=50655|ISO 19005-2:2011]] + * [[http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf|PDF Reference 1.7]] * [[http://partners.adobe.com/asn/tech/xmp/pdf/xmpspecification.pdf|XMP Specification]] + == Implementing Support for PDF/A-1 == - == Conformance Levels == + === Conformance Levels === PDF/A-1 defines two conformance levels: A and B. These are discussed separately below. The first goal is to make FOP level B conformant. Level A is a superset of level B and involves preserving the structural and semantic properties of the source document ("Tagged PDF"). - == Level B Conformance == + === Level B Conformance === Level B conformance basically has the primary purpose to define a file format based on PDF, known as PDF/A, which provides a mechanism for representing electronic documents in a manner that preserves their visual @@ -27, +32 @@ * The use of XMP metadata is required * etc. (for details, please see ISO 19005-1:2005(E)) - === Implementation in Apache FOP === + ==== Implementation in Apache FOP ==== Outputting PDF/A-1 should be an optional feature as it may restrict the feature set of Apache FOP. For example, the use of EPS files directly embedded in PDF files may be desired by certain applications. As can be seen above, however, this feature is prohibited in PDF/A-1. The class PDFDocument should get a flag that turns on PDF/A-1 functionality. The PDF library as such should check conformance wherever possible, throwing an Exception if a breach of PDF/A-1 conformance is detected. But the PDF library cannot detect everything, for example, violations inside a page stream. Therefore, the PDFRenderer (and probably PDFGraphics2D, too) need to do similar checks if PDF/A-1 conformance is activated. Tasks identified for making FOP PDF/A-1b compatible so far are: @@ -37, +42 @@ * Review PDF generation concerning font handling based on requirements of PDF/A-1. * Verify that all currently supported fonts are fully embedded, even Base 14 fonts if PDF/A-1 is activated. - == Level A Conformance == + === Level A Conformance === Level A adds requirements so the textual content and its structure can be recovered from an PDF file. This means supporting "Tagged PDF". Tasks identified in addition to the above for making FOP PDF/A-1b compatible so far are: * Support for !ToUnicode maps * Support for Tagged PDF + + + == Implementing Support for PDF/A-2 == + + PDF/A-2 is an updated version of PDF/A based on PDF 1.7 ([[http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=51502|ISO 32000-1]]). It relieves some limitations imposed by PDF/A-1 and allows constructs that appeared in newer versions of PDF. + + The main element of interest in the context of FOP is the possibility to use transparency. Although transparency was already available in PDF 1.4, PDF/A-1 was forbidding it because the model was not entirely well defined. Since this is now the case in PDF 1.7, transparency is allowed by PDF/A-2. + + Because of the backwards-compatibility of PDF, any PDF/A-1 compliant file should normally also be PDF/A-2 compliant (at the same conformance level). + + === Conformance Levels === + + PDF/A-2 introduces a new conformance level, level U. This is basically the same as level B + the presence of !ToUnicode maps. Therefore, level A is a superset of level U, which is a superset of level B. + + Some confusion can occur when mixing PDF/A-1 and PDF/A-2: + * If a file is PDF/A-1 compliant, then it is also PDF/A-2 compliant (but the opposite is not necessarily true!). + * If a file is PDF/A-2a compliant, then it is also PDF/A-2u compliant. + * If a file is PDF/A-2u compliant, then it is also PDF/A-2b compliant. + * However, a file may be PDF/A-2u compliant but not PDF/A-1b compliant! + + === Implementation === + + We can largely rely on the current implementation of PDF/A-1. We just need to add the constants for PDF/A-2, and relieve the constraint on transparency when targetting PDF/A-2. + + We should leave the choice to the user to select conformance level B or U. From a FOP point of view those are equivalent since !ToUnicode maps are always generated, yet it is better if the user can retrieve their selected conformance level in the XMP metadata. == Problems == --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
