Goals

  • Goal: Should be able to display documents
    • Specific types to be able to display
      • PDF
      • HTML
      • EPUB
      • XPS
      • PostScript
      • DjVu
      • RTF
      • OpenDocument
      • OneNote
      • Comic book archive (.cbr)
      • Videos
  • Goal: Should be able to annotate documents
    • Types of annotation targets
      • Document text (e.g., highlight text linearly or as a block)
      • Document images (e.g., highlight a region of an image)
      • Other annotations
    • Link to annotations from other documents or annotations
      • Each annotation should have a unique identifier
      • Linking can either be
        • a reference (e.g., "see figure 2 in [42]") or
        • a direct inclusion (e.g., inline display of the figure with a link to original document)
  • Goal: Should be able to extract information from the document
    • Extraction of document structure
      • Create a table of contents automatically
    • Extraction of bibliographic metadata
      • Extract the authors and title of the current document
      • Extract the metadata from the References section
        • Allow for linking citation in the text (e.g., "in [42]" or "in Smith et al, 1999b") to the appropriate reference.
    • Extraction of text using optical character recognition (OCR)
    • Mathematical text should be extracted just as well as prose
    • Extraction of text in RTL writing systems should be supported (bidi support)
  • Goal: Should be able to search and organise documents
    • Full-text search
    • Mark document as "To read", "Read", or "Do not read"
    • Tagging and folders
    • Projects and subprojects
    • Faceted search over the bibliographic metadata
    • Detect duplicates (sometimes from different sources)
      • Note that sometimes what appears to the same document by the title are two versions of the same document (e.g., preprint versus journal article)
  • Goal: should be able to share data
    • Data to share
      • Documents
      • Annotations
    • Share across all of a users devices
    • Who to share with
      • People on the same LAN
      • Inside of groups (e.g., with everyone in a journal club)
  • Goal: Should be able to read text out loud
    • Should be able to read mathematical text
  • Goal: Notetaking
    • Pen-based notetaking
    • Handwriting recognition
    • Draw notes on top of existing document
      • Add space between lines or edges to draw more
  • Goal: Security and privacy
    • Easily use Tor for all network access
    • Public and private data can live side-by-side
      • Fine-grained control (e.g., each annotation can be set to be public or private)
  • Goal: Retrieve documents from online
    • Specs
      • Open Publication Distribution System
      • SWORD
      • OpenSearch
      • OAI-PMH
    • Download papers from sites that host papers (e.g., arXiv, PLOS)
    • Search papers from Google Scholar, PubMed
  • Goal: Flexible document layout (reflowable)
    • Turn a two-column document into single column document
    • Trim extra margins
    • Look into readibility research
  • Goal: Should be able to present from viewer
    • Many tools output PDFs that can be used to view slides.
    • Presentations can show different things on each screen:
      • Slides on the projector
      • Speaker notes on the monitor
  • Goal: Retrieve data that is related to the document being read
    • For example, look up articles in Wikipedia/Scholarpedia or look up words in the dictionary.
    • Data such as properties of chemicals, 3D models of proteins, or gene pathways.
  • Goal: Accessibility
    • Should be able to use by people with visual impairment (perhaps look at DAISY format, liblouis)
  • Goal: Keep data on how the user is using the software
    • This can be used to give suggestions if it comes across a similar usage. For example, if I implemented splitting a document window into panes to follow, say code on one page and description of the code on another, when I come back to that part, it can show a little tooltip to bring back that same view so the user does not have to configure it again.
      • Be able to store the current view state and restore on another device.
  • Goal: Have multiple user profiles that can be used simultaneously.
    • This allows for using the application for different purposes and keeping the data segregated.

Project plan

  • The document viewer should have typical document viewer features.
    • Navigation
      • DONE Move one page at a time.
      • DONE Move to start and end of document.
      • DONE Move to a specific page number.
    • Zooming
      • DONE Zoom to preset zoom levels.
      • TODO Zoom to a specific zoom multiplier
    • Be able to see an overview of document
      • DONE Display table of contents
      • TODO Display pages as thumbnail images
    • Be able to store the current view
      • TODO Store the current view page
      • TODO Define a spec for view settings
      • TODO Store the current view settings
    • Be able to follow URLs
      • TODO Click on URL should open:
        • Another location in the same document.
        • Another document.
        • A web page.
      • TODO A history stack to go backwards and forwards.
  • The document viewer should allow for viewing multiple documents at once.
    • Side-by-side view
      • TODO Place one document next to another using a dockable split-screen.
    • Portals: Arbitarily shaped and placeable views into other documents
  • Files
  • Resources