2011-06-29 17:00:16 +09:00
|
|
|
# pdf.js
|
|
|
|
|
2011-06-17 01:37:15 +09:00
|
|
|
|
2011-09-16 08:28:38 +09:00
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
|
|
pdf.js is an HTML5 technology experiment that explores building a faithful
|
|
|
|
and efficient Portable Document Format (PDF) renderer without native code
|
|
|
|
assistance.
|
|
|
|
|
|
|
|
pdf.js is community-driven and supported by Mozilla Labs. Our goal is to
|
|
|
|
create a general-purpose, web standards-based platform for parsing and
|
|
|
|
rendering PDFs, and eventually release a PDF reader extension powered by
|
|
|
|
pdf.js. Integration with Firefox is a possibility if the experiment proves
|
|
|
|
successful.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Getting started
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
### Online demo
|
2011-09-16 08:39:18 +09:00
|
|
|
|
2011-09-16 08:28:38 +09:00
|
|
|
For an online demo, visit:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://andreasgal.github.com/pdf.js/web/viewer.html
|
2011-09-16 08:28:38 +09:00
|
|
|
|
|
|
|
This demo provides an interactive interface for displaying and browsing PDFs
|
|
|
|
using the pdf.js API.
|
|
|
|
|
2011-10-25 02:40:36 +09:00
|
|
|
### Extension
|
|
|
|
|
|
|
|
A Firefox extension is also available:
|
|
|
|
|
|
|
|
+ http://andreasgal.github.com/pdf.js/extensions/firefox/pdf.js.xpi
|
|
|
|
|
|
|
|
However, note that the extension might not reflect the latest source in our master branch.
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
### Getting the code
|
2011-09-25 18:44:29 +09:00
|
|
|
|
|
|
|
To get a local copy of the current code, clone it using git:
|
|
|
|
|
2011-09-30 03:52:56 +09:00
|
|
|
$ git clone git://github.com/andreasgal/pdf.js.git pdfjs
|
|
|
|
$ cd pdfjs
|
2011-09-25 18:44:29 +09:00
|
|
|
|
|
|
|
Next, you need to start a local web server as some browsers don't allow opening
|
|
|
|
PDF files for a file:// url:
|
|
|
|
|
2011-09-30 03:52:56 +09:00
|
|
|
$ make server
|
2011-09-25 18:44:29 +09:00
|
|
|
|
|
|
|
If everything worked out, you can now serve
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://localhost:8888/web/viewer.html
|
2011-09-25 18:44:29 +09:00
|
|
|
|
|
|
|
You can also view all the test pdf files on the right side serving
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://localhost:8888/test/pdfs/?frame
|
2011-09-25 18:44:29 +09:00
|
|
|
|
2011-10-26 12:07:30 +09:00
|
|
|
### Building pdf.js
|
|
|
|
|
|
|
|
In order to bundle all `src/` files into a final `pdf.js`, issue:
|
|
|
|
|
|
|
|
$ make bundle
|
|
|
|
|
|
|
|
This will generate the file `build/pdf.js` that can be included in your final project. (WARNING: That's a large file! Consider minifying it).
|
|
|
|
|
2011-10-25 02:40:36 +09:00
|
|
|
## Learning
|
2011-09-25 18:44:29 +09:00
|
|
|
|
2011-10-05 23:24:53 +09:00
|
|
|
Here are some initial pointers to help contributors get off the ground.
|
|
|
|
Additional resources are available in a separate section below.
|
2011-09-25 18:44:29 +09:00
|
|
|
|
2011-10-05 23:24:53 +09:00
|
|
|
#### Introductory video
|
|
|
|
|
|
|
|
Check out the presentation by our contributor Julian Viereck on the inner
|
|
|
|
workings of PDF and pdf.js:
|
|
|
|
|
|
|
|
+ http://www.youtube.com/watch?v=Iv15UY-4Fg8
|
|
|
|
|
|
|
|
#### Hello world
|
2011-09-16 08:39:18 +09:00
|
|
|
|
2011-09-16 08:28:38 +09:00
|
|
|
For a "hello world" example, take a look at:
|
|
|
|
|
2011-09-30 11:15:21 +09:00
|
|
|
+ [examples/helloworld/hello.js](https://github.com/andreasgal/pdf.js/blob/master/examples/helloworld/hello.js)
|
2011-09-16 08:28:38 +09:00
|
|
|
|
|
|
|
This example illustrates the bare minimum ingredients for integrating pdf.js
|
|
|
|
in a custom project.
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-25 18:48:12 +09:00
|
|
|
## Contributing
|
|
|
|
|
2011-09-30 03:49:36 +09:00
|
|
|
pdf.js is a community-driven project, so contributors are always welcome.
|
2011-09-25 18:48:12 +09:00
|
|
|
Simply fork our repo and contribute away. A great place to start is our
|
2011-09-30 11:15:21 +09:00
|
|
|
[open issues](https://github.com/andreasgal/pdf.js/issues). For better consistency and
|
|
|
|
long-term stability, please do look around the code and try to follow our conventions.
|
2011-10-08 03:49:57 +09:00
|
|
|
More information about the contributor process can be found on the
|
2011-10-08 03:47:17 +09:00
|
|
|
[contributor wiki page](https://github.com/andreasgal/pdf.js/wiki/Contributing).
|
2011-09-25 18:48:12 +09:00
|
|
|
|
2011-10-08 03:47:17 +09:00
|
|
|
If you don't want to hack on the project or have little spare time, __you still
|
2011-09-30 03:44:41 +09:00
|
|
|
can help!__ Just open PDFs in the
|
2011-09-25 18:48:12 +09:00
|
|
|
[online demo](http://andreasgal.github.com/pdf.js/web/viewer.html) and report
|
|
|
|
any breakage in rendering.
|
|
|
|
|
2011-09-30 03:49:36 +09:00
|
|
|
Our Github contributors so far:
|
|
|
|
|
2011-09-30 03:50:48 +09:00
|
|
|
+ https://github.com/andreasgal/pdf.js/contributors
|
2011-09-30 03:49:36 +09:00
|
|
|
|
|
|
|
You can add your name to it! :)
|
|
|
|
|
2011-09-25 18:48:12 +09:00
|
|
|
|
|
|
|
|
2011-10-05 09:43:55 +09:00
|
|
|
## Running the tests
|
2011-09-16 08:28:38 +09:00
|
|
|
|
|
|
|
pdf.js comes with browser-level regression tests that allow one to probe
|
|
|
|
whether it's able to successfully parse PDFs, as well as compare its output
|
|
|
|
against reference images, pixel-by-pixel.
|
|
|
|
|
|
|
|
To run the tests, first configure the browser manifest file at:
|
|
|
|
|
|
|
|
test/resources/browser_manifests/browser_manifest.json
|
|
|
|
|
|
|
|
Sample manifests for different platforms are provided in that directory.
|
|
|
|
|
|
|
|
To run all the bundled tests, type:
|
|
|
|
|
|
|
|
$ make test
|
|
|
|
|
|
|
|
and cross your fingers. Different types of tests are available, see the test
|
|
|
|
manifest file at:
|
|
|
|
|
|
|
|
test/test_manifest.json
|
|
|
|
|
|
|
|
The test type `eq` tests whether the output images are identical to reference
|
|
|
|
images. The test type `load` simply tests whether the file loads without
|
|
|
|
raising any errors.
|
|
|
|
|
|
|
|
|
2011-10-05 00:27:40 +09:00
|
|
|
## Running tests through our bot
|
|
|
|
|
|
|
|
If you are a reviewer, you can use our remote bot to issue comprehensive tests
|
|
|
|
against reference images before merging pull requests.
|
|
|
|
|
|
|
|
See the bot repo for details:
|
|
|
|
|
|
|
|
+ https://github.com/arturadib/pdf.js-bot
|
|
|
|
|
|
|
|
|
2011-09-16 08:28:38 +09:00
|
|
|
## Additional resources
|
2011-06-29 17:00:16 +09:00
|
|
|
|
2011-07-03 01:30:46 +09:00
|
|
|
Our demo site is here:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://andreasgal.github.com/pdf.js/web/viewer.html
|
2011-07-03 01:30:46 +09:00
|
|
|
|
2011-06-17 01:37:15 +09:00
|
|
|
You can read more about pdf.js here:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://andreasgal.com/2011/06/15/pdf-js/
|
|
|
|
+ http://blog.mozilla.com/cjones/2011/06/15/overview-of-pdf-js-guts/
|
2011-07-03 01:28:13 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
Talk to us on IRC:
|
2011-06-17 01:37:15 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ #pdfjs on irc.mozilla.org
|
2011-06-29 08:02:02 +09:00
|
|
|
|
2011-09-20 03:11:14 +09:00
|
|
|
Join our mailing list:
|
2011-06-29 08:02:02 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ dev-pdf-js@lists.mozilla.org
|
|
|
|
|
2011-09-20 03:11:14 +09:00
|
|
|
Subscribe either using lists.mozilla.org or Google Groups:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ https://lists.mozilla.org/listinfo/dev-pdf-js
|
|
|
|
+ https://groups.google.com/group/mozilla.dev.pdf-js/topics
|
2011-06-29 08:02:02 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
Follow us on twitter: @pdfjs
|
2011-06-29 08:02:02 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://twitter.com/#!/pdfjs
|
|
|
|
|
|
|
|
|
2011-09-25 19:04:35 +09:00
|
|
|
|
2011-10-05 09:43:55 +09:00
|
|
|
## PDF-related resources
|
2011-09-25 19:04:35 +09:00
|
|
|
|
|
|
|
A really basic overview of PDF is described here:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://partners.adobe.com/public/developer/en/livecycle/lc_pdf_overview_format.pdf
|
2011-09-25 19:04:35 +09:00
|
|
|
|
|
|
|
A more detailed file example:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://gnupdf.org/Introduction_to_PDF
|
2011-09-25 19:04:35 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
The PDF specification itself is an ISO and not freely available. However, there is
|
2011-09-25 19:04:35 +09:00
|
|
|
a "PDF Reference" from Adobe:
|
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
+ http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf
|
2011-09-25 19:04:35 +09:00
|
|
|
|
2011-09-30 03:44:41 +09:00
|
|
|
Recommended chapters to read: "2. Overview", "3.4 File Structure",
|
2011-09-25 19:04:35 +09:00
|
|
|
"4.1 Graphics Objects" that lists the PDF commands.
|