Before even suggesting that you should dip your hand into your pocket and pay for software to work with PDF documents, I should explain what you get free with macOS. You may not need to buy anything at all.
Because support for PDF as a format is built very deeply into macOS, there’s a great deal you can already do before you get any additional apps. Creating PDF documents is supported in every app which supports printing. Printing effectively takes place by the app generating the document to a page-based virtual display to create a PDF intermediate, which is then converted by the printer driver into the data required by the print engine. When using the standard print dialog, at the bottom left is a popup menu offering PDF services.
Some items in that menu are added by macOS and its bundled tools. Others are added when they are installed in a Library/PDF Services folder. As they intercept the normal printing process, they use the built-in PDF engine, and as far as I’m aware cannot offer any options. PDF documents which are created using PDF Services are shown in their metadata – now conveniently displayed in the Finder – as being encoded by “macOS Version 10.14.3 (Build 18D109) Quartz PDFContext”, with the Content Creator as the app from which they were printed.
Many apps, including Safari most notably, offer better options which are specifically tailored to producing PDF documents. These can write the PDF in compliance with variant standards, such as PDF/A for archival purposes, and generally still follow the same virtual imaging model and use the Quartz PDF engine in macOS.
Apps which are specifically intended for high-quality document creation, like QuarkXPress, put a range of options into an Export… menu command. These can save the document so that it is compliant with variant specifications such as PDF/A, PDF/X, and PDF/UA, but require the app to provide substantial additional code to process the data generated by the Quartz engine. This is normally integrated into that app, and not available to other apps. In some cases, they may even provide their own PDF engine – QuarkXPress, for example, signs its documents as using “QuarkXPress(R) 14.21” rather than Quartz.
Working with PDF
The main user interface to macOS PDF features is the bundled Preview app, which has surprisingly rich facilities for working with PDF documents which aren’t all obvious. It is also the only bundled tool which can convert documents from another format and save them in PDF: Preview will open PostScript files, render them into a virtual display, and offer that as a PDF document. This was one task which was originally the preserve of Adobe Distiller, and a key selling point of early Adobe PDF products. Although converting PostScript to PDF is much less common since the introduction of Mac OS X, it remains a valuable feature which few users know about.
Unfortunately, old PostScript files often have problems which stop Preview and Acrobat from converting them successfully. When that happens, it is usually impossible to fix.
Preview contains extensive support for annotating PDF documents, and will embed those as annotation objects within the document source, changing the PDF file. Included with those is support for form-filling and signature. It can also rotate pages and re-order them, but Preview cannot edit the contents of existing pages, other than their annotations.
As with the Quartz engine itself, Preview is a general PDF tool, and not intended to provide specific support for PDF variants. When you open a PDF/A document, it recognises that and locks the file so that the original cannot be altered. It doesn’t fare at all well in complying with pre-press variants such as PDF/X-4, though. In the test page below, which exercises some of the support for spot colour in the PDF/X-4 standard, graphics containing an X are failures.
You can’t save an existing PDF in any variant either: the options available in Preview’s Export as PDF… command are very basic indeed, and plain Quartz in their nature.
Its app-wide preferences for PDF display and editing are similarly very limited.
Preview is thus a good general purpose PDF viewer with features that enable users to annotate, complete forms, sign, and perform page manipulation. You can select content to copy and paste into other apps; this uses Rich Text format as far as possible, and includes images too. It can’t export whole documents to another format, such as RTF or Word. If you want to process PDF complying with variants including PDF/A, PDF/X and PDF/UA, then Preview doesn’t handle them in any special way, and has only limited value as a reader for them.
For the developer, though, the Quartz PDF engine in macOS offers a great deal more, if they’re prepared to make the effort to use its full features. PDFKit, as seen in the previous coding demonstration here, provides high level features comparable to those in Preview, which includes page manipulation and annotations. To support editing of page content and handle variants, the developer has to go into the weeds of CGPDFDocument and its related classes, which are powerful and, being so long-established in macOS, still comparatively well-documented.
This establishes the baseline for PDF features. In coming articles I will look at what third-party tools can offer. These include PDFpenPro 10, PDF Expert, Adobe Acrobat Pro DC (version 19), and Skim.