DynamicPDF Generator for Java can create PDF documents that are marked as PDF/X compatible. PDF/X is a subset of the PDF specification that eliminates many of the color, font, and trapping variables that are typically associated with exchanging files intended for high-end printing. These PDF/X standards make recommendations and additional notations for facilitating the reliable delivery of press-ready, high-end color documents.
The following steps must be followed in order to make a Document PDF/X compliant:
- The document’s PDF/X version must be specified
- The document’s Title must be specified
- The output intent must be specified by identifying an ICC output profile
- The document must be identified as trapped or not trapped
- There can be no use of RGB colors
- All fonts must be embedded
All of the above elements must be in place for full PDF/X compatibility. Be careful not to inadvertently use any RGB colors in the document (our product does not automatically check for this). This includes verifying that all images added or merged in PDF pages (if DynamicODF Merger is used) do not contain any RGB colors.
Lastly, you will need to verify that all fonts you use are embedded in the PDF. This means that all fonts used within your PDF document need to be either OpenTypeFont or Type1Font objects. The 14 core fonts do not get embedded into the PDF and therefore can not be used when creating PDF/X documents.
Note: Setting the PdfXVersion property on the Document.getPrepress() property does not automatically convert the document to the PDF/X version specified. The document is only marked as complying to that version of PDF/X. Care must be taken as outlined above.
The following code sample demonstrates the elements needed to specify a document as PDF/X 1-A compatible:
[Java]
Document document = new Document();
document.setTitle("PDF/X-1a Document");
document.setPdfVersion(PdfVersion.v1_4);
document.getPrepress().setPdfXVersion(PdfXVersion.PDF_X_1a_2003);
IccProfile iccProfile = new IccProfile( @"C:\ICCProfiles\USWebCoatedSWOP.icc" );
document.getPrepress().getOutputIntents().add( iccProfile );
document.getPrepress.setTrapped(Trapped.FALSE);