PDF Reading Workflow

One of the things I’ve been rethinking recently is how I handle PDF documents. There’s a larger story here that covers long term archiving and search, but right now I want to concentrate on just one particular workflow: receiving and reading PDFs.

Previously I was rather ad-hoc about this, but if my practices could be distilled into a workflow it would have gone something like this:

  • Receive an email with an attached PDF or a link to a PDF document online.
  • Use the OmniFocus Mail Drop to create an OmniFocus task with either the link as a note or the PDF document itself as an attachment.
  • Open the PDF from the OmniFocus task and read it (on one of many different devices and apps).

This had a couple of disadvantages. If I attached the PDF, it took up space in my OmniFocus database. If I linked to the PDF online, it might move or be taken down in the (sometimes substantial) time between creating the task and when I got around to reading the document. There was no permanent archive of PDFs that I’d read, they were scattered around different apps on my iPad and Mac.

For some of those larger reasons mentioned above I was looking at using DEVONthink as my primary PDF repository. As part of this process I was casting about for a way to easily add PDFs it and create corresponding tasks in OmniFocus. The difficulty of this was compounded by the fact that my initial contact with email containing PDFs is usually on my work PC, a machine that can’t run either DEVONthink or OmniFocus.

But I think I’ve found a solution.

  1. Dropbox – My work PC does run dropbox, so I can save the PDF to a folder in my work Dropbox account. When I do this I also rename the PDF to something sensible (the filenames of many of the PDFs I receive are pretty cryptic). This folder is shared with my personal dropbox account on my Mac.
  2. AppleScript – On my Mac, that Dropbox folder has a Folder Action Script attached to it. The script adds the PDF to DEVONthink and gets the x-callback-url of the item. Then the script creates an OmniFocus task. It names the task “Read” followed by the PDF filename and includes the DEVONthink x-callback-url in the notes field.  You can find the AppleScript here.
  3. DEVONthink – Eventually I’ll file the the PDF in the appropriate group in DEVONthink. Importantly, moving the document around within DEVONthink won’t break the x-callback-url (it’s associated with that particular document, not that document’s location within DEVONthink).
  4. OmniFocus on iOS – When I’m ready to deal with some of my accumulated reading material I’ll open up OmniFocus on my iPad and find the task synced over from my Mac. Opening up the notes field and touching the x-callback-url will launch DEVONthink To Go.
  5. DEVONthink To Go – The URL will take me directly to the PDF in question. While I could read this right in DEVONthink I’ve been enjoying LiquidText (particularly the new 3.0 version with advanced Apple Pencil support). So I use the share sheet in DEVONthink To Go to send the PDF to LiquidText.
  6. LiquidText – In LiquidText I can read the PDF, highlight, excerpt relevant portions, make notes, etc. When I’m done I can share updated document with my markup back to DEVONthink To Go using the share sheet.
  7. DEVONthink To Go – DEVONthink To Go is smart enough to recognize the marked up PDF as a modified version of the original. It gets synced back to DEVONthink on my Mac.
  8. OmniFocus – I check off the task to indicate I’m done reading that document.

This workflow improves on what I’ve been doing it a couple of ways. It automates the OmniFocus task creation, it gives me a local copy of the document tied to the task while storing the PDF someplace more sensible than my OmniFocus database, and it creates a pathway for long term storage of both the original PDF and my notes about the document.