Ho usato PhantomJS per generare immagini PNG da pagine Web e può anche produrre PDF e la qualità è generalmente buona. La proprietà è chiamata screen capture e descritta here. I formati supportati sono PNG, JPEG, GIF e PDF.
Quando convertiti in PDF, i testi delle pagine vengono conservati come testi.
Dopo aver provato poche altre librerie o programmi, ha trovato PhantomJS la soluzione più perfetta. PhantomJS utilizza WebKit, un vero motore di layout e rendering.
Alcuni esempi sono in https://github.com/ariya/phantomjs/wiki/Examples. Nella sezione rendering/rasterizzazione si è menzionato il seguente script che si aiuta nel processo:
rasterize.js rasterizes a web page to image or PDF
PhantomJS QuicStart Guide dice:
Produrre output PDF è possibile, ad esempio, da un articolo di Wikipedia:
phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf
o durante la creazione di stampante pronta foglietto:
phantomjs rasterize.js http://www.nihilogic.dk/labs/webgl_cheat_sheet/WebGL_Cheat_Sheet.htm webgl.pdf
ho provato pdf-generazione di poche pagine e se la pagina segue gli standard, produce buoni risultati. Il testo è selezionabile e stampabile come di alta qualità, ma su alcune pagine il layout in pdf non è lo stesso di png.Sotto è due schermate che vengono generati utilizzando comandi:
$ phantomjs rasterize.js 'http://windows.microsoft.com/en-US/windows/home' microsoft.png
$ phantomjs rasterize.js 'http://windows.microsoft.com/en-US/windows/home' microsoft.pdf
ho testato anche http://lab.simurai.com/buttons/. Il pdf e il png erano molto identici e di seguito è riportato un esempio di pdf che ho rasterizzato a 5641 px di larghezza e ne ho ritagliato una regione. Come nel precedente esempio PDF, il testo è selezionabile in PDF e, come vedi, il testo è nitido (niente antialias!).
INSTALLAZIONE
ho provato prima di installare librerie Qt e PhantomJS su Centos5 compilazione dai sorgenti, ma senza fortuna. Poi su Ubuntu 11.10 e il processo è stato indolore:
ho scaricato http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 ed estratto utilizzando
tar -xjvf phantomjs-1.7.0-linux-x86_64.tar.bz2
E poi copiato phantomjs eseguibile a bin dir del sistema:
$ cp phantomjs-1.7.0-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
e phantomjs ero pronto correre.
Se il PDF generato non è buono, si può provare ad aggiornare Webkit, ma suppongo che il risultato dovrebbe essere sufficiente. Il PhantomJS ha un ciclo di aggiornamento eccellente, quindi i bug dovrebbero essere corretti in tempi ragionevoli.
PhantomJS FAQ ha anche buone informazioni sulle possibilità.
Perché questo è ancora chiuso ?? Ogni domanda provoca più "sollecitare dibattiti, discussioni, sondaggi o discussioni estese" di questo. –
wkhtml2pdf ora * fa * render canvas ... vedi wkhtmltopdf.org. Complimenti per wkhtml2pdf ... è semplicemente fantastico avere un solo eseguibile invece di trattare con 7000+ classi java di fop –