
Pdf.js: PDF Reader in JavaScript  - pykello
http://mozilla.github.com/pdf.js/
======
jowiar
1) From a technical perspective, this is damn cool - exceedingly well done.
Color me very impressed.

2) I hope I never actually see anyone using this on a website, attempting to
make things "easier." Between Scribd and Slideshare, and Adobe trying to force
its hideous crash-prone plugins into my browser, there are already enough
people making a mess out of what is one of the more well-thought-out aspects
of OS X. Give me a link to a PDF, which Preview.app handles in wonderful
fashion any day.

3) It would make a sweet browser plugin on browser-in-a-box platforms and
other platforms that don't have a nice native implementation (which upon
further reading seems to be the goal).

~~~
RandallBrown
I think Firefox has been shipping with this for awhile to view PDFs. It may be
an about:config value you have to turn on though.

~~~
Argorak
It is included, but off in release versions at the moment.

In about:config :

name: pdfjs.disabled status: default type: boolean value: false

~~~
pucinators
I'm no usability expert, but to me it would make more sense to name that
parameter "pdfjs.enabled" true/false

~~~
pilif
about:config isn't really optimized for usability and there's some advantage
to the double negative in that the absence of a value could be treated as a
false boolean value.

So if at one point pdfjs should be enabled by default, they can just get rid
of the preference in the default preferences file altogether instead of having
to ship one where it says enabled: true (because absence of the value would be
treated as false)

------
winter_blue
I used to use PDF.js for a while (on Linux), until I switched to KParts
because it was having difficulty rendering certain kinds of PDF documents.
KParts uses the same underlying engine that powers Okular (KDE's default PDF
reader.) It renders everything properly and is much faster than PDF.js. It
reminded me of Foxit on Windows. KParts might be only available on Linux
though...

------
jpallen
I'm really excited for this for <http://www.sharelatex.com> and other similar
sites that are actually generating a PDF for you. With native PDF viewers
there is no way to interact with the viewer via javascript and even just
having the viewer stay on the same page when your reload a document (with
minor changes) is impossible. Pdf.js means that we'll be able to do this
easily, as well as other cool things like letting letting the user sync
between the PDF and source.

~~~
jcheng
Our web-based IDE[1] does exactly this, including syncing between source and
PDF, using PDF.js. Works great for the most part!

[1] <http://rstudio.org>

~~~
bpatrianakos
Are you guys actually generating PDFs from user input? If so, I'd be really
interested in finding out how you do it if you don't mind sharing. I've found
a number of apps that allow you to generate PDFs server side but often the
installation is near impossible (dependency issues), e rendering is not good
enough, or the API makes using it with a web app clunky. I did find a solution
(don't recall the name) that actually used Webkit to render web pages and then
turned them into PDFs but I was never able to get it to work in an app. It
only seemed to work some of the time and only through ssh. But if you can't
say, then I can respect that.

~~~
jcheng
(Just saw this comment, sorry for not replying earlier)

We use LaTeX to generate the PDF. You could try pandoc if you're going from
HTML (or markdown) to PDF.

------
ianb
I use this a lot, and it really does work. It renders everything, and renders
it well. The one thing that doesn't work is maps – just too many vectors, and
Javascript/Canvas/etc just can't keep up. Otherwise I'm very happy and don't
feel nearly as much resentment towards PDFs as I used to.

~~~
mrb
(I assume you are you mentally comparing pdf.js to Adobe Reader.)

Have we reached the point where Adobe Reader is so resource-guzzling that
people prefer a JavaScript (gasp!) PDF interpreter to Reader? Wow.

------
cpeterso
Firefox already bundles the pdf.js reader. See <https://bugzil.la/714712>.

------
thebigshane
Two questions:

1) In Firefox 15, the demo page adds two new options to my right click menu:
Rotate clockwise and Rotate Counter-clockwise. Is Firefox recognizing pdf.js
(since it appears that they are related) or pdf.js adding menu options? I
didn't know JS could do that.

2) Isn't Javascript an embeddable language inside PDFs? I'm pretty sure I read
that javascript is used, not necessarily for animations but for run-time
dynamic layouts. If that's true, is pdf.js "eval"-ing that javascript?

~~~
evmar
HTML5 context menu API: [http://www.whatwg.org/specs/web-apps/current-
work/multipage/...](http://www.whatwg.org/specs/web-apps/current-
work/multipage/interactive-elements.html#context-menus)

~~~
thebigshane
Thanks.

I've seen custom contextmenus generated on pages[0] that override the built-in
context menu but for some reason I've yet to come across a page[1] that adds
to the existing context menu until today.

[0] replacing example:
[http://developer.yahoo.com/yui/examples/menu/tablecontextmen...](http://developer.yahoo.com/yui/examples/menu/tablecontextmenu_source.html)

[1] appending example:
[https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554...](https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309)

~~~
notatoad
>but for some reason I've yet to come across a page that adds to the existing
context menu until today.

the reason is likely because browser compatibility for the context menu js api
is pretty minimal [1]. firefox can use it on pages that are only going to be
displayed in firefox, but for the internet at large it's pretty useless.

[1]<http://caniuse.com/menu>

~~~
bpatrianakos
What about Google Docs? Their context menu seems to work cross browser (even
on ie9!). Maybe my assumption that they're using HTML5 for this is wrong but
if I'm right then what you see on Gdocs is a complete replacement of the
regular menu which is pretty cool but also quite annoying for me at times.
Please correct me if I'm wrong (which is very likely).

~~~
notatoad
Google docs is not appending stuff to the browser's context menu. they're
catching the right-click action and replacing the standard context menu with
their own one drawn in HTML.

------
uams
This is super cool.

While I can't imagine myself using it anytime soon, it's clear that web
applications are improving at a far faster rate then native applications and,
with t large enough, the first derivative means that web will eclipse native.

This seems like an academic exercise at the moment; it's to prove that you can
replicate a native experience only.

However, it seems that this could be vastly improved by playing to the
strengths of the internet. The only online apps that have beat native ones so
far have been because of cloud storage and collaboration. First, use
filepicker.io or something so this can open my online files. Second, bake some
collaboration into it.

~~~
dkhylan
GroupDocs currently provide an app for online annotation and collaboration,
including accessing your files from different cloud storage providers,
currently Azure & Amazon S3 are supported
<http://groupdocs.com/apps/annotation/try-it-now>

------
Mizza
XSS injections on these are gonna be fun..

------
bpatrianakos
I came across this a few months ago while trying to implement a solution for
turning HTML into PDFs server side. This is definitely cool and useful but
it's usefulness is limited for now as native PDF readers on the desktop are
preferable. Even on iOS the built in reader is nicely done. Chrome on Windows
and Mac always opens PDFs in a tab and handles it well I think. That said,
this can definitely be of use in Chromebook type situations. I'm sure it'll
end up in Firefox OS too which I have hi expectations for. The awesome thing
about Firefox OS is that it's all JavaScript and good old fashioned web
technologies under the hood so this will fit right in.

So alas, I'm still searching for an easy way to convert HTML to PDF server or
client side. I haven't looked at the code yet but I do wonder if one could get
that functionality out of this if they wrestled with it enough. (I know there
are other ways to turn HTML to PDF but a client or server side script to do so
really is the best solution for my situation).

~~~
adityab
This is about PDF to HTML conversion.

~~~
bpatrianakos
Right, I got that. But when I found it I was hoping it could work in the
opposite direction.

------
dutchbrit
As a big user of PDF.js, I have to say it's great for basic PDF documents.
However, complex vectors don't render nicely with this

------
wheaties
Now if someone would just do this for .docx, .xlsx, and such I'd be set.

~~~
crisnoble
Is there a way you could tell your browser to open those links in google docs
by default?

~~~
emillon
Proxying all your documents to Google is something that should be avoidable.

~~~
crisnoble
True. And possibly undesirable depending on the sensitivity of the files.

------
senko
I have first seen this a year ago (when it was publicly announced, IIRC). It
was a cute tech demo but easily broken, and quite slow.

This ... is mind blowing.

------
andrewla
Just as interesting, in my mind, is the inverse library -- jspdf [1] lets you
create pdfs in javascript. For automatic document generation, I find I can
quickly whip something up in jsbin or jsfiddle that will give me a pdf I can
download and do whatever I want with.

[1] <http://jspdf.com/>

------
mwexler
I presume that copy to clipboard could be added to this as well, yes? Cool
project.

------
klr
I have this error with Firefox 9.0.1:

currentPage is undefined <http://mozilla.github.com/pdf.js/web/viewer.js> Line
285

~~~
AndrewDucker
I'd go with "That's because any version of Firefox below 15 is unsupported".

------
Roritharr
i've stumbled upon PDF.js a while ago because i was looking for js tool that
allows me to extract data from pdfs... sadly i'm still looking for a good lib
to do just that.

~~~
mattdeboard
iText has a lot of tools for extracting info from PDFs. We use it extensively.

~~~
robodale
I have used iText(sharp) for several years. It works very well.

~~~
mattdeboard
Yeah we use the C# version as well, I've done some hacking on a Clojure
wrapper around the java version. it's nontrivial :P

------
jrl
This is great, I love it. I can read PDF files without leaving the browser, in
any browser. I find it slightly distracting to switch to a third-party
application.

------
jjmanton
from someone who has worked a lot with PDF, excellent work.

------
Aissen
It's in Firefox since version Firefox 14, but disabled by default. Activable
with "preview in Firefox" in options/filetypes/pdf.

------
gbraad
Next up, a good ePub reader for use in firefox and firefoxos. Breaking free of
the only two rendering engines in use...

------
leberwurstsaft
On an iOS device with retina display it's awfully blurry, probably just not
rendering to a big enough canvas.

~~~
kerrishotts
Feels like they aren't taking window.devicePixelRatio into account so that
they end up with a legitimately retina-sized canvas... My canvases were always
blurry like this until I took dpr into account.

------
chj
This is amazing, but sadly slow.

~~~
darkstalker
On linux, anything is better than that crappy 32-bit only propietary plugin
that hangs the browser for a second every time I want to open a pdf file.

------
tete
Works nicely since it is Firefox's default viewer. No more need to install a
one, yay!

------
antonpug
Sweet. Going to keep this in mind for when my site needs a pdf viewer. Awesome
tool

------
famoreira
This is pretty cool! Anyone knows if there is support for PDF annotations?

~~~
hirenj
Looks like it has basic support for annotations, but is limited in its scope.
I'm hoping I can use this to read annotations from PDFs so I can hook it into
a journal paper reading/organisation workflow.

------
davedx
The demo looks really impressive, well done. Adding this to my toolbox! :)

------
3ds
On Firefox OS this will be the default PDF viewer.

------
dude8
Good Job!!

