Use DynaPDF to create a PDF in PDF/X standard for printing

If your printing company asks you to provide PDF documents in PDF/X format, you can create such a PDF in DynaPDF using our DynaPDFMBS class in the MBS Xojo DynaPDF Plugin.

For PDF/X-1 you need to have:

  • All fonts embedded.
  • All colors are CMYK or spot colors.
    If needed convert RGB to CMYK using Optimize function.
  • Add information for the printing condition using AddRenderingIntent function.
  • Set the version in header to the required PDF/X version.
  • Set a trim box for each page, which can be equal to the media box.
  • Set metadata with a document title.
  • Removed all actions.

DynaPDF can do the following PDF/X versions:

  • PDF/X-1a:2001
  • PDF/X-1a:2003
  • PDF/X-3:2002
  • PDF/X-3:2003
  • PDF/X-4p
  • PDF/X-5g
  • PDF/X-5n
  • PDF/X-5pg
  • PDF/X-6
  • PDF/X-6n
  • PDF/X-6p

Please note that newer PDF/X variants may have different conditions.

Let us show you this sample code:

Dim pdf As New MyDynapdfMBS

pdf.SetLicenseKey "Lite" // For this example you can use a Lite, Pro or Enterprise License

Dim f as FolderItem = SpecialFolder.Desktop.Child("Create PDFX.pdf")

Call pdf.CreateNewPDF f
Call pdf.SetDocInfo pdf.kdiSubject, "My first Xojo output"
Call pdf.SetDocInfo pdf.kdiProducer, "Xojo test application"
Call pdf.SetDocInfo pdf.kdiTitle, "PDF/X Compatibility"

// We want to use top-down coordinates
Call pdf.SetPageCoords pdf.kpcTopDown

// start a new page
Call pdf.Append

// Just set the trim box to the same value as the media box if no better value is known.
Dim r As DynapdfRectMBS=pdf.GetBBox(pdf.kpbMediaBox)
Call pdf.SetBBox(pdf.kpbTrimBox, r.Left, r.Bottom, r.Right, r.Top)

// The font must be embedded (this should always be the case)
Call pdf.SetFont("Times", pdf.kfsItalic, 20.0, true, pdf.kcpUnicode)

// set CMYK cyan color
Call pdf.SetColorSpace(pdf.kcsDeviceCMYK)
Call pdf.SetFillColor(DynaPDFMBS.CMYK(255, 0, 0, 0))

// let's write some text on the page
Call pdf.WriteFText(pdf.ktaCenter, "A very simple PDF/X compliant PDF file...")
Call pdf.EndPage

// The PDF version should be set before the file is closed because
// it can be changed when importing a PDF file.
Call pdf.SetPDFVersion(pdf.kpvPDFX1a_2001)
// or newer one
'Call pdf.SetPDFVersion(pdf.kpvPDFX1a_2003)

// add a ICC profile as output intent
Dim profilefile As FolderItem = SpecialFolder.Desktop.Child("Generic CMYK Profile.icc")
Call pdf.AddOutputIntent(profilefile)

Call pdf.CloseFile

// show the PDF
f.Launch

Please let us know if you have questions.

1 Like