Some words on Preview.app

What I have to say about Preview is quite good. In Mac OS X 10.3, Preview was re-written, perhaps by Dominic Giampaulo, and it was hot. It opened PDFs in no time flat, and its searching capabilities were just so nice. In addition, it handled hyperlinks and tables of contents and other regular “PDF-like” stuff that had made it quite inferior to Acrobat Reader in the past.

The only problem was, it wasn’t part of the public Cocoa framework for displaying PDF files—only Preview itself could handle them as nicely. Anyone else (TeXShop, say) had to rely on bare bones it-works-but-there’s-no-bells-OR-whistles functionality.

With Tiger, Apple released PDF-goodness on all in PDFKit. Now TeXShop handles PDFs as well as anyone, even if Spotlight (or something) seems to have slowed down Tiger’s Preview compared to Panther’s. Oh well, I’ve only a 867MHz Powerbook, so I can’t complain. And everyone was happy, especially since Preview was further updated to handle annotation and global bookmarks.

Except they did a shoddy job at adding new features. Annotations can only be circles or (exactly one font at exactly one size of) text, and after the document is saved they become baked in. That’s right: no editing or seeing what’s underneath after actually creating the annotation. So that feature is only really marginally useful.

And second, the global bookmarks menu is a really nice idea. What’s it for? I didn’t realise this for ages, but it’s to keep track of where you’re up to (or your favourite places in) in any number of PDF documents that you have been reading. So, that’s pretty cool once I started using it. Here’s the kicker, though. It only works with static file paths. Eh? If you move or rename the PDF, your bookmark dies. It greys out in the menu, but all you can do about it is go to the preferences and delete the bookmark.

WTF? I haven’t got around to programming in Cocoa yet, but I’m almost 100% sure that it’s not the hardest thing in the world to link a file such that its location in the file system is independent of whether or not you can access it. Case in point: aliases in the Finder. And if the Finder can do something, anyone can do better.

So that’s my much delayed Friday bug for Apple: bug #4273090

Summary: Preview can place global “bookmarks” in PDF files to make it easier to keep track of reading long documents. However, it links those bookmarks with static file paths; if the file moves then the bookmark is broken. A more robust method of linking to the PDF file should be used.

Steps to Reproduce:

  • Open a PDF, and add a bookmark to it from the Bookmarks menu.
  • Close the PDF, and notice that the Bookmarks menu allows you to open the file at the previous location.
  • Now move the original file.
  • The bookmark is greyed out, and the bookmark is broken. It can’t even be fixed: it can either remain there unusable, or it may be deleted.

Expected Results:
The file should be linked to its file system node, not its file path. The bookmark should not break when the PDF is moved.

Actual Results:
The file is linked via its path; renaming or moving the PDF breaks the bookmark.