Skip to main content

Reader & Annotations

ZotFlow has a built-in reader — using the same PDF/EPUB/HTML rendering engine as Zotero, with Obsidian-matched theming. You can read and annotate literature without ever leaving Obsidian.


Opening Attachments

Method 1: Tree View

  1. Open Zotero Tree View (command palette → ZotFlow: Open Zotero Tree View)
  2. Expand Library → Collection → Item
  3. Double-click an attachment (PDF, EPUB, or HTML) to open it in the reader

If the attachment is already open in another tab, ZotFlow activates the existing tab instead of opening a duplicate.

Method 2: Search Modal

  1. Click the left ribbon icon, or run ZotFlow: Search Zotero Library from the command palette
  2. Type keywords to search your library
  3. Navigate with arrow keys, press Enter on an attachment result to open it

Method 3: Protocol URI

You can jump to an attachment, annotation, or Source Note from external links or within notes via URI:

URI TypeFormat
Open attachmentobsidian://zotflow?type=open-attachment&libraryID=<id>&key=<key>
Open annotationobsidian://zotflow?type=open-annotation&libraryID=<id>&key=<key>
Open noteobsidian://zotflow?type=open-note&libraryID=<id>&key=<key>

The open-annotation protocol looks up the annotation by key, finds its parent attachment, and opens the attachment in the Zotero reader navigated directly to the annotation.


Annotation Types

The reader supports the following annotation types:

TypeDescription
HighlightSelect text, apply a colored highlight
UnderlineSelect text, apply a colored underline
NotePlace a sticky note anywhere on the page
ImageRectangular selection to capture a page region as an image
InkFreehand drawing/writing
EraserErase parts of ink annotations

Each annotation can have:

  • Color (reader palette)
  • Comment (note text attached to a highlighted passage)
  • Tags (inherited from Zotero)

Library Reader vs Local Reader

Library Reader (Zotero Attachments)

  • Opens attachments synced from your Zotero library
  • Annotations are written back to Zotero during bidirectional sync

Local Reader (Vault Files)

  • Opens PDF/EPUB/HTML files in your vault (non-Zotero sources)
  • Annotations are stored in a co-located .zf.json sidecar file — never sent to Zotero
  • Enable via: Settings → ZotFlow → General → Overwrite PDF/EPUB/HTML Viewer → On → Restart Obsidian
  • Once enabled, all PDF/EPUB/HTML files in your vault automatically open with the ZotFlow reader
ActionLibrary FileLocal File
Select annotation, press Ctrl+CDefault format citationEmbed link (![[path#^id]])
Select annotation, press Ctrl+Shift+CRaw annotation textRaw annotation text
Right-click menuAll formats (embed, text, pandoc, footnote, wikilink, default)Only embed + text
Tree View dragVarious citation formats supportedN/A (local files not in Tree View)

Annotation Image Extraction

For image and ink type annotations, ZotFlow can automatically extract the visual content and save it as a PNG.

Configuration

  1. Settings → ZotFlow → General
  2. Enable Auto Import Annotation Images
  3. Set Annotation Image Folder (e.g., Attachments/ZotFlow)

Behavior

  • When a Source Note is created or updated, image/ink annotations are extracted from the PDF and saved as <annotation-key>.png in the specified directory
  • The Source Note embeds:
    > > ![[Attachments/ZotFlow/ANNOTATION_KEY.png]]
  • You can also manually trigger extraction: right-click an item in Tree View → Extract annotation images

Tree View Drag Behavior

Dragging from Tree View into an editor:

Dragged objectInserted content
Attachment (PDF/EPUB/HTML)Markdown link: [filename](obsidian://zotflow?type=open-attachment&...)
Regular itemCitation (format depends on citation settings and modifier keys)

Dragging a regular item also triggers Source Note creation/update, ensuring the citation target exists and is up to date.


Tree View Right-Click Menu

Right-click targetActionDescription
Collection or LibraryCreate source note for all child itemsBatch-create Source Notes for all items under this node
Collection or LibraryExtract anno images for all child itemsBatch-extract annotation images
Top-level item (non-attachment)Open source noteOpen (and force-update) the item's Source Note
Top-level item (non-attachment)Extract annotation imagesExtract annotation images for this item
Any itemEdit tags…Open the tag editing modal to manage tags for the item
Note itemLocate in Source NoteOpen the parent source note scrolled to the note's editable region
Note itemOpen in Note Editor (Experimental)Open the note directly in the standalone Note Editor view

Common Edge Cases

Attachment Won't Open

  • Check whether the attachment is cached or downloadable (network + storage strategy)
  • Check WebDAV / Zotero Storage configuration
  • Confirm the attachment file actually exists in Zotero

Annotation Changes but Zotero Doesn't Update

  • The library must be in Bidirectional mode
  • The API Key must have write permission
  • Manually trigger a sync

Local File Annotations Don't Sync to Zotero

  • This is by design: Local Reader annotations are never written back to Zotero; they only live in .zf.json

Same Attachment Opens Twice

  • ZotFlow detects whether the attachment is already open in another tab and focuses the existing tab