717 words on Software
PDF services have been with us for a while now. And while the user interface to access them still consists of large, ugly and hard-to-comprehend icons, they are quite useful. I mostly use them to save PDF files into appropriate folders right away. Which is sad, because the technology behind it – as simple as it may be – has the potential to do a lot more than that. And even more so if Apple’s job weren’t as half-assed as it is.
For those who are late to the party, let me quickly explain what I am rambling on about. In MacOS X.2.4, Apple introduced what they call the
PDF Workflow. Basically this lets you grab PDF spool files straight from the printing system and manipulate them further. And it’s fairly simple to set up. All you need is a folder named PDF Services in you personal or computer-wide Library folder and put aliases in there. Your print dialogue will then turn the
Save as PDF button into a menu listing the aliases you dropped there. According to Apple’s documentation you can use four kinds of items as PDF services:
The first and easiest one is a folder. This kind of PDF Service will simply save the resulting PDF file into the folder itself, giving it the default name set by the application. This saves you the hassle of having to go through the save dialogue. The feature is very handy for saving confirmation pages of e-commerce transaction to some archive folder. Other uses including folders that are at the same time watch folders for another application or folder actions can easily be imagined.
The second kind of service is an application. Selecting an application PDF service will simply cause the system to open the resulting PDF file with the application. A very simple use of that might be to be able to open the PDF file with Acrobat Reader rather than Preview straight from your print dialogue (for whichever reason you’d want to do that). My favourite use for this is sending the PDF file to CocoaBooklet for further conversion to a little booklet, though.
And this is the place where Apple’s implementation starts looking a bit half assed. Opening the spooled file with the specified application is really all that PDF services do. While this has the advantage that it doesn’t need any extra support built into the applications, it also means that applications can’t be tuned to give better support for PDF Services. For example, when sending the open document AppleEvent, why don’t they just include extra parameters to tell the application that it is being called by a PDF Service? Why don’t they also tell the application the document’s name (for automatic saving) and the original printing options? These points would justify the word flow in
PDF Workflow. There’d be a better chance to use PDF Services as filters for converting the file before printing and doing all that in one go. Currently that
flow is more like one-step post-processing.
The third kind of PDF Service is a Unix tool. Funnily enough PDF Services will pass the file, the original file name and the printing options to Unix tools. So it’s not like the technology couldn’t do this it’s more like Apple thinks that Unix tools are more worthwhile players on OS X than proper applications are.
I guess this means that we can actually support PDF services from a proper application… by installing a Unix Tool that calls an AppleScript that in turn passes all the necessary information to our application. But this looks ridiculously complicated and not like good design.
Last but not least, AppleScripts can be PDF Services as well. But they suffer from the same limitation as applications do: They only receive the files to process and not the metadata about the print job that accompanies them.
I find the situation quite frustrating – there is a nice feature in the OS, but it’s usefulness is limited in all but the most trivial cases. Being able to post-process a file with applications like CocoaBooklet and have them printed right away would be very neat. Right now, you’ll have to select the PDF Service, save the file, open it and print it again.
How are you using PDF Services?
Received data seems to be invalid. The wanted file does probably not exist or the guys at last.fm changed something.