PDF/X conformance: the print-production output intent NextPDF emits
At a glance
Section titled “At a glance”Boundary statement. A tested profile is not a certification.
Scope caveat (read first). ISO 15930 (the PDF/X family standard) is not in the NextPDF verification corpus. This page does not claim independent PDF/X-4 or PDF/X-6 certification. NextPDF emits the print-production output intent and International Color Consortium (ICC) profile machinery that PDF/X workflows require. NextPDF verifies these structures against ISO 32000-2 §14.11.5 (the OutputIntent dictionary that ISO 15930 imports by reference) and the ICC.1 / ISO 15076-1 profile structure. An external prepress preflight tool, not this library, decides whether a file conforms to a PDF/X part.
NextPDF Core emits a /GTS_PDFX OutputIntent referencing an embedded ICC
DestOutputProfile when a wide-gamut working space is selected. NextPDF
Core gates the embedded ICC profile to version 4. These artifacts are the
structural prerequisites a PDF/X-4 / PDF/X-6 preflight checks. The library
produces them. A preflight tool decides conformance.
Install
Section titled “Install”composer require nextpdf/core:^3The PDF/X output-intent path is a Core capability. The document’s
OutputColorProfile drives it. You do not need a Premium package for the
GTS_PDFX OutputIntent itself.
Conceptual overview
Section titled “Conceptual overview”NextPDF\Core\OutputColorProfile selects the working space:
DeviceRGB (default, no wide-gamut intent), DisplayP3, Rec2020,
A98RGB, or ProphotoRGB. When you select any wide-gamut case,
PdfWriter emits, per ISO 32000-2 §14.11.5:
- a
/Type /OutputIntent /S /GTS_PDFXdictionary in the catalog/OutputIntentsarray; - an embedded ICC stream as the
DestOutputProfile(the working-space profile, for exampledisplay-p3-v4.icc); - the
OutputConditionIdentifier/ registry fields the dictionary requires.
NextPDF\Graphics\ColorSpace\IccVersionTier gates the embedded profile.
V4 is required for PDF 2.0 / PDF/A-4 / PDF/X-6 output intents.
requiresV4Strict() rejects a v2 profile so a PDF/X-6 claim is not made
against a non-v4 ICC profile. This is the structural prerequisite a PDF/X-6
preflight verifies; it is not the preflight itself.
API surface
Section titled “API surface”| Symbol | Effect |
|---|---|
OutputColorProfile (enum) | Working-space discriminator; wide-gamut cases trigger /GTS_PDFX OutputIntent emission. |
OutputColorProfile::isWideGamut(): bool | True for any non-DeviceRGB case. |
OutputColorProfile::iccFilename(): ?string | The embedded ICC profile resource for the case. |
IccVersionTier::requiresV4Strict() | Gate that rejects non-v4 ICC profiles when claiming PDF/A-4 / PDF/X-6 structure. |
Code sample — Quick start
Section titled “Code sample — Quick start”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Config;use NextPDF\Core\Document;use NextPDF\Core\OutputColorProfile;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/print.pdf';
$config = new Config(outputColorProfile: OutputColorProfile::DisplayP3);$doc = Document::createStandalone($config);$doc->setTitle('Print production sample');$doc->writeHtml('<h1>Wide-gamut artwork</h1>');$doc->save($out); // /GTS_PDFX OutputIntent + display-p3-v4.icc emitted here
echo "Wrote {$out} — run an external PDF/X preflight to validate.\n";Code sample — Production
Section titled “Code sample — Production”In production, feed the output into an external prepress preflight: the receiving print workflow’s tool of record. Treat the preflight report as the gate. NextPDF emits the GTS_PDFX OutputIntent and v4 ICC. The preflight tool adjudicates PDF/X-4 / PDF/X-6 conformance. NextPDF does not ship a PDF/X validator.
Edge cases & gotchas
Section titled “Edge cases & gotchas”- DeviceRGB emits no PDF/X intent. The default profile is byte-identical
to legacy output and carries no
/GTS_PDFXOutputIntent. You must select a wide-gamut profile explicitly for a PDF/X workflow. - v2 ICC blocks a PDF/X-6 claim.
requiresV4Strict()rejects a v2 profile; do not claim PDF/X-6 structure against a non-v4 ICC profile. - Spot colours / overprint. Full PDF/X-1a/X-3 CMYK + spot-colour workflows are out of scope for the Core OutputIntent path. This page covers only the PDF/X-4 / PDF/X-6 ICC-based output intent.
- No certification claim. Emitting the OutputIntent is structural support. PDF/X conformance is a preflight verdict, not a library state.
Performance
Section titled “Performance”A wide-gamut OutputIntent adds one embedded ICC stream at save(). Its size
is fixed for the working space. Budgeted at wall ≤ 1500 ms, peak ≤ 128 MB.
Security notes
Section titled “Security notes”Print-production output intents are colour-management metadata, not a security control. The embedded ICC profile contains public data.
Data Residency & PII Mitigations
Section titled “Data Residency & PII Mitigations”OutputIntent emission runs in process. Only the document and the embedded ICC profile are written. No content leaves the process; the profile carries no personally identifiable information (PII).
Safe Telemetry & Log Scrubbing
Section titled “Safe Telemetry & Log Scrubbing”The example logs only the output path and a validation hint. It logs no
document bytes; NEXTPDF_COOKBOOK_OUTPUT is honoured.
Threat model
Section titled “Threat model”A PDF/X file is not access-controlled. The OutputIntent provides colour reproducibility for a print condition, not confidentiality.
FIPS-mode behavior
Section titled “FIPS-mode behavior”The PDF/X OutputIntent path performs no cryptography. FIPS mode has no effect.
Conformance
Section titled “Conformance”| Claim | Spec | Clause | reference_id |
|---|---|---|---|
| An OutputIntent references a DestOutputProfile ICC stream for the output rendering condition. | ISO 32000-2 | §14.11.5 | |
| The OutputIntent carries an OutputConditionIdentifier / registry identification. | ISO 32000-2 | §14.11.5 | |
| Output intents live in the document catalog’s OutputIntents array. | ISO 32000-2 | §14.11.5 | |
| A conforming ICC profile carries a defined header with a version field. | ICC.1 / ISO 15076-1 | §7 | |
| The embedded DestOutputProfile uses the ICC v4 profile structure. | ICC.1 / ISO 15076-1 | §7 |
ISO 15930 (PDF/X) is not in the verification corpus. The claims above are
the ISO 32000-2 §14.11.5 + ICC.1 prerequisites that a PDF/X preflight
checks. Citations are clause-id + reference_id pointers into the
verification corpus (manifest). No standards text is reproduced.