Code Monkey home page Code Monkey logo

doqment's Introduction

doqment icon

doqment

doqment (pronounced as doc-HUE-ment) is a custom deployment of the PDF.js generic viewer with doq reader mode add-on (that lets you change the PDF's colors) on top, packaged as a Web Extension.

It also adds some other features like Smart Zoom text and Show/Hide toolbar to optimize space and assist reading, especially on smaller devices.

Here is the demo PDF rendered in Solarized Light theme:

Screenshot of doqment running in Firefox

View more screenshots.

Installation

Get for Firefox ย  Get for Chrome

Latest release can be installed from AMO / CWS, or downloaded from Releases.

In Firefox, doqment replaces the built-in PDF.js viewer as the default PDF viewer application. In Chrome(ium), it co-exists with the native viewer, and provides a context menu and toolbar button to open PDFs in it instead.

Note for Firefox users:

It is recommended to disable the built-in viewer while this extension is enabled to avoid funny and weird behaviours while opening/downloading PDFs. (Go to Settings -> Files and Applications -> set the Action for PDF to something other than Open in Firefox).

Note for Chrome(ium) users:

The extension can open PDF links via the context menu whether the native viewer is enabled or disabled. To always open PDFs in the browser without downloading them first, keep it enabled. (Go to Settings -> Privacy and security -> Site Settings -> Additional content settings (under Content) -> PDF documents; or open chrome://settings/content/pdfDocuments).

Development

Note: In Firefox, doqment uses Manifest Version 2, while in Chromiums it uses MV3.

  1. Clone this repo recursively (to get the submodules)
  2. Update the symlink to the correct manifest file:
$ cd src
$ ln -sf manifest-v2.json manifest.json    # for Firefox (default)
$ ln -sf manifest-v3.json manifest.json    # for Chrome, Edge, etc
  1. Install unpacked via about:debugging / chrome:extensions (or using web-ext)
  2. Hack to your heart's content and submit a PR!

Packaging

Run the pack.sh script from the repo root:

$ ./pack.sh [mv2|mv3]    # default is mv2

Limitations

Firefox

Compared with the viewer baked right into Firefox's code, an extension is a lot less previleged and hence, has certain limitations:

  1. Cannot load local files via the file: URL scheme. The user has to first open the extension's viewer in a tab and use the viewer's UI to open them (hence a browser toolbar button is provided for this).
  2. Cannot use the integrated Findbar to search for text in PDF.
  3. The address bar shows an ugly extension URL instead of the original PDF URL (hence a popup is provided to quickly show the later).

Chromium

  1. Can open file: URLs, only if the user grants access in the extension's settings.
  2. Redirecting links cannot be opened via the context menu; users will have to first open it in the native viewer, and then use the toolbar button.

Rationale

As the built-in viewer of Firefox is a previleged page, extensions cannot modify it. Thus a custom deployment is currently the only way to ship add-ons to the viewer (other than getting your patch merged into PDF.js).

On the plus side, this also enables users of other browsers to have PDF.js and doq.

This project can also be used as a boilerplate by anyone else wishing to develop their own awesome crazy add-on for the PDF.js viewer.

For the rationale behind reader mode see the doq Readme.

Happy PDF Reading!


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.