Generátor PDF v JavaScriptu? Ale ano, máme tu jsPDF
Nálepky:
Cíl projektu jsPDF zní na první pohled neuvěřitelně: generování PDF pomocí JavaScriptu. Nicméně jak autor projektu James Hall před třemi dny sám na Twitteru poznamenal: „Generování PDF na klientovi pomocí JavaScriptu není tak nemožné, jak jsem si původně myslel“. A skutečně – jeho výsledek si můžete vyzkoušet na jednoduchém demu. V tuto chvíli funguje jen v Opeře, Safari (včetně iPhone) a Firefoxu 3.5beta.
Projekt je starý (resp. mladý) teprve několik dní, hlavní knihovna má slabých 300 řádků a pokrývá zatím jen opravdu minimální množinu možností formátu PDF. James ale slibuje, že na přidání dalších funkcí se můžeme těšit v brzké době.
Ačkoliv by se snad mohlo zdát, že byl překonán další mezník a že server-side generátory PDF to mají do budoucna spočítané, není tomu tak. Projekt jsPDF pro zobrazení vygenerovaného PDF dokumentu totiž používá protokol data:
, který Internet Explorer podporuje až od verze osm a navíc pouze s omezenou délkou řetězce na několik málo kilobytů (ostatní prohlížeče mají limit v rozsahu megabytů). To pro úspěšnost celého projektu do budoucna bude pravděpodobně nepřekonatelný problém. Vygenerovat PDF na klientovi sice určitě půjde, ale jak jej spolehlivě nabídnout k zobrazení prohlížeči? Že by další „neřešitelný“ problém, který čeká na geniálního řešitele?
(Zdroj: Ajaxian)
Funguje i ve Firefoxu 3.0 (3.0.8)
Autorovi ani mě v něm nefunguje. Je možné, že na to má vliv nějaké nastavení, síla větru nebo něco podobného.
Ve Win mi to sice uloží jako *.part, ale po přepsání koncovky to Adobe otevře v pořádku. V Linuxech mi to FF pošle rovnou do Adobe. Na obou je FF 3.0.8. Možná nějaký problém v MACu?
Já to s FF 3.0.9 na WinVista normálně stáhl a otevřel.
Stáhnout to jde. Správě by se ale mělo otevřít PDF přímo v prohlížeči. Nepřišel jsem zatím na to, kde je problém. Protokol data ve Firefoxu normálně funguje, dokonce i s mime typy to umí pracovat, tak nevím, proč zrovna to PDF zlobí.
Ve Win se mi to taky jen stáhne (se špatnou koncovkou). V Linuxu mi to ale otevře v Adobe. Nebude to nastavením prohlížeče? (Win mám jen na test s FF v defaultu).
Zkusil jsem ve FF 3.0 (3.0.9) a po kliknutí na Run Code se změnila adresa na:
data:application/pdf;base64,JVBERi0xLjMKMy… (zkráceno)
Dal jsem uložit stránku , FF navrhl název (application_pdf objekt).pdf, který jsem odsouhlasil.
Opera mi po kliknutí na Run Code ihned nabídla PDF k uložení, v Chrome se mi PDF zobrazil pomocí Adobe Readeru.
Testováno v Epiphany (jádro Gecko 1.9) a bez problémů se nabídlo otevřít/uložit.