PDF Reader in JavaScript
github.com
github.com
- Near-instant client-side rendering (albeit a one-time ~5 second wait during server-side processing)
- Native font rendering (Canvas rasterizes all text and doesn't benefit from technologies like ClearType)
- Native text selection (which is important for overall UX and our annotation tools such as highlighting)
- Better performance on mobile devices (this is an ongoing project)
Here's a comparison of the test file micheljansen links to (thanks!) compared with the same PDF in Crocodoc:
- Canvas rendering: http://bit.ly/kU0mlW
- Crocodoc rendering: http://bit.ly/je2wcv
Edit: By the way, we're really impressed by this canvas implementation :-)
It has some obvious flaws, but it already works surprisingly well!
Deleted comment
Edit: not sure why parent was deleted, it said that timing matters (which it does).
Edit: I just want to be clear, you see things like "goddamnit" and other ppl using the words "christ" or "god" (in what others may see as taking them in vain) all over the place including on HN. I don't see what the big deal is there either. So really, i do mean it when i say i intended no offense.
The distinction I would make between your comment and "goddamnit" is that while I don't particularly like either one, "goddamnit" doesn't actively mock God/people's religious beliefs about God. On the other hand "Christ on a stick" certainly seems like going out of one's way to mock the crucifixion/people with religious attachment to the crucifixion.
Does that help explain where I'm coming from?
Having thought it over more, i agree that it is trivializing of the crucifixion. However this probably isn't the best venue for ruminating on the notions of Christian symbolism & semiotics.
Suffice it to say, i will retire the phrase.
Offending people for who they were born -- e.g. ethnicity, gender, sexual orientation -- is wrong and should be marginalized. Saying something that belittles or contradicts the particular explanation you use for understanding how the world works is a) probably unavoidable, and b) elective.
Moreover, "Christ on a stick" only makes sense because Christians have made a concerted effort over the centuries to ensure that when on thinks of American culture, Christian themes will be conjured. Thus, abusing those references while uttering profanities is expected and completely sensible, as long as one is being profane -- it's what comes immediately to mind.
python -m SimpleHTTPServer
This serves the files off the current folder under port 8000.
Now all we need is a proper javascript printing api and almost all business application can be done in the browser.
Also, it'll actually be used by FF for rendering PDFs in the future, apparently.
There are other libs out there: WPS: PostScript for the Web http://logand.com/sw/wps/index.html jspdf http://code.google.com/p/jspdf/
This guy is a Mozilla contributor, probably what other posts mean when they talk about "great programmers", right? Yet, for now, his implementation is a single 3000 line file.
[edited for alternate ending]
So there is this guy who writes a PDF viewer in a 3000 line file, and the guy who writes another simple web app neatly organized in 42 files... Which one would you want on your team?
I wonder how jslinux source code is organized.
Maybe he finds it easier to jump around the file that way. I know I've built up projects like that. When it starts to transition from tech demo to real product, I would probably break it up into different files (util.js, lexer.js, etc). But no harm in the meantime.
A simple web app spread across 42 files might actually be terrible and over-engineered. Or it might not. The moral is: don't judge code quality by isolated metrics.
I have seen _many_ important demos and prototypes that were truly ear-bleeding - to the point where I would say it is a common characteristic of this sort of work.
Another thought - this could be the output of his packed code, sort of like what we get when downloading mootools unminified - one big file, but that's not how authors store the code internally.
https://bugzilla.mozilla.org/show_bug.cgi?id=568953
:)
$ wc -l expr.c decl.c
26638 expr.c
34860 decl.c