This past December (more specifically, December 1, 2021) marks the twentieth anniversary of the publication of the first ISO PDF/X standard, ISO 15930-1:2001 “Graphic technology – Prepress digital data exchange – Use of PDF – Part 1: Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a).” Let’s examine the path leading to today’s PDF/X standards, the impact of PDF/X on the print publishing industry and the development of other PDF-based standards as well as lessons learned along the way.
This is a multi-part article looking into how PDF/X paved the way for future PDF standardization and how the PDF/X family of standards revolutionized the graphics art industry.
Part I: It started with PostScript
Part II: PDF tames PostScript and publishing
Part IV: PDF/X in retrospect
To fully appreciate PDF and subsequently PDF/X, one needs to go back to 1984 when Adobe announced and released PostScript, the first printers and raster image processors (RIPs) using Adobe PostScript subsequently being shipped by Adobe’s OEM partners in 1985. Canon’s LBP-CX laser print engine, PageMaker, and both Apple and Linotype’s decision to adopt Adobe PostScript for their latest generation of output devices (low-cost laser printer and imagesetter respectively) were key in the rapid revolution from expensive, proprietary publishing content creation and output solutions to “desktop publishing” and the modern era of print.
Unlike any previous page description language (PDL), in its purest form PostScript is neither vendor nor device-specific. It provides for a full complement of built-in, highly advanced graphics operators supporting intelligent outline font scaling technology and fonts, scalable vector and raster objects, and graphics rendering and device / page pipeline control across varied devices of multiple vendors. PostScript provides the concept of a current transformation matrix with save levels, controls, coordinate systems as well as object scaling, skewing, and rotation.
Although viewed as a page description language (PDL), PostScript is in fact a stack-based (using reverse Polish notation) full interpretive programming language with built-in mathematical (including random number generation) functions as well as support for user-defined and callable procedures (which may override built-in functions), user-defined variables and dictionaries, conditional operations, and environmental interactions (including support for file systems and bidirectional communication with host systems). This general-purpose programming language capability enables, for example, one to write accounting applications and games in PostScript without generating any printed output at all.
However, with all the flexibility (including non-deterministic behaviour) provided by an interpretive programming language, overly clever use of PostScript was often plagued by interpreter performance issues, unexpected output, and difficulty in “debugging” applications and drivers generating PostScript. Unless very carefully produced (including the use of PostScript Document Structuring Conventions (DSC)), PostScript is not page independent. To render and print page n, you must process (although not necessarily print) pages 1 through n−1. This is obviously quite problematic if you need to reprint page 532 without printing pages 1 through 531.
Furthermore, since in the general case, device and/or media control (including page size, duplexing, media selection, output device resolution, separations, etc.) is embedded within a PostScript file, PostScript in reality is often anything but device independent!
Twenty Years of PDF/X continues with PDF tames PostScript and Publishing.
For over 31 years, Dov Isaacs was a Principal Scientist at Adobe, Inc. with responsibility for end-to-end PDF publishing workflow and product interoperability issues. Dov also served as Adobe’s representative to several ISO TC130 committees associated with print industry standards including PDF/X and PDF/VT for which he serves as the chairperson and co-chairperson respectively. He monitors numerous InDesign, PDF, prepress, and …