2009-11-06 15 views
12

Voglio convertire HTML (contenente JavaScript) in un PDF. Come lo posso fare?convertire HTML (con Javascript) in PDF utilizzando JavaScript

Voglio solo mostrare ciò che viene mostrato nella pagina web. Sto visualizzando un diagramma di Gantt generato da una libreria JavaScript.

Ora voglio salvare quella pagina Web HTML come PDF, come fare?

+9

Java è completamente diverso da Javascript! – Ikke

+1

lo so, voglio una soluzione usando java o javascript. entrambi sono accettabili per me. –

+0

Alcune domande: Java è già presente nel progetto? In che modo Javascript fa questo grafico (immagini, tabella, ...) e da dove provengono i dati? Penso che la tua domanda non avrà una soluzione diretta. – sinuhepop

risposta

5

Stiamo anche cercando un modo per convertire file html con javascript complessi in pdf. Il javasript nei nostri file contiene document.write e la manipolazione DOM.

Abbiamo provato a utilizzare una combinazione di HtmlUnit per analizzare i file e Flying Saucer per il rendering in pdf ma i risultati non sono abbastanza soddisfacenti. Funziona, ma nel nostro caso il pdf non è abbastanza vicino a ciò che l'utente desidera.

Se vuoi provare questo, ecco uno snippet di codice per convertire un file html locale in pdf.

URL url = new File("test.html").toURI().toURL(); 
WebClient webClient = new WebClient(); 
HtmlPage page = webClient.getPage(url); 

OutputStream os = null; 
try{ 
    os = new FileOutputStream("test.pdf"); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.setDocument(page,url.toString()); 
    renderer.layout(); 
    renderer.createPDF(os); 
} finally{ 
    if(os != null) os.close(); 
} 
+1

il tuo codice oscilla ... ma come hai detto non è 100% bene ... quindi, hai trovato qualcosa di nuovo per migliorare la qualità del pdf? –

+0

Come usare questo codice in una pagina di Visualforce? Ho bisogno di questo in Salesforce Apex pagina –

1

È possibile utilizzare iText per Java per la conversione in PDF.

Using itext to convert HTML to PDF

ho usato iText molto ed è molto facile e si impara in fretta.

+2

Non è gratuito per commerciale – Dejell

+1

@Odelya bene è se si può sopportare con AGPL :-) – Pointy

+0

itext non esegue javascript durante la conversione di html in pdf. –

0

Utilizzando Print...voce di menu del browser, è possibile utilizzare un PDF Printer Driver, come PDFCreator. In questo modo, qualsiasi codice JavaScript incluso nella pagina viene elaborato dal browser durante il rendering della pagina.

PDFCreator è uno strumento gratuito per creare file PDF da quasi tutte le applicazioni Windows.

  • creare PDF da qualsiasi programma che è in grado di stampare
1

Utilizzare un widget del browser (like the one from SWT) per rendere il grafico come un'immagine, e quindi utilizzare iText per creare PDF da questo.

0

Con Docmosis o JODReports si poteva nutrire il codice HTML e Javascript al documento processo che potrebbe produrre PDF o doc o altri formati di rendering. La conversione al di sotto viene eseguita da OpenOffice, quindi i risultati dipenderanno dai filtri di importazione di OpenOffice. Puoi provare manualmente salvando la tua pagina web in un file, quindi caricando con OpenOffice - se questo sembra abbastanza buono, allora questi strumenti saranno in grado di darti lo stesso risultato di un PDF.

0

Copia e incolla questo nel tuo sito per fornire un collegamento che convertirà la pagina in una pagina PDF.

<a href="javascript:void(window.open('http://www.htmltopdfconverter.net/?convert='+window.location))">Convert To PDF</a> 
+6

non funziona più. –

0

PhantomJS ha il potenziale per raggiungere questo obiettivo con la sua cattura funzionalità che supporta anche PDF.

Nel caso in cui si desideri qualcosa che è intercambiabile tramite la riga di comando; Ho provato a creare un'app per quello chiamato Nota (ancora nella sua infanzia). Permette a JavaScript di renderizzare/manipolare e quindi di acquisire la pagina come PDF.

1

mi consiglia di utilizzare wkhtmltopdf: http://wkhtmltopdf.org/

+0

Ho problemi nel rendering di pagine HTML di formato A4 (con dimensioni definite in millimetri). Rimuove solo tutti i margini quando specfied + applica un fattore di zoom (insensato). Perché dovrei avere bisogno di zoom per rimuovere completamente i margini? A mio avviso questo è un comportamento scorretto. Io uso la libreria EssentialObjects.PDF che fa un lavoro migliore nel riempire l'intero spazio A4. –

+0

@MikedeKlerk: Ho avuto alcuni problemi simili con la stampa di pagine A4 ma l'ho risolto, tuttavia, non ricordo la soluzione esatta ma una parte specificava la dimensione del documento html in pixel in combinazione con alcuni argomenti della riga di comando per wkhtmltopdf . Dai un'occhiata al manuale, ho il sospetto che i margini potrebbero essere di aiuto: http://wkhtmltopdf.org/usage/wkhtmltopdf.txt – arkod

0

check this out http://www.techumber.com/2015/04/html-to-pdf-conversion-using-javascript.html

Fondamentalmente è necessario utilizzare html2canvas e jspdf per farla funzionare. Prima convertirai il tuo dom in immagine e poi userai jspdf per creare pdf con le immagini.

MODIFICA: Una breve nota su come funziona. Useremo due librerie per fare questo lavoro. http://html2canvas.hertzen.com/ e https://github.com/MrRio/jsPDF Per prima cosa creeremo un'immagine dom utilizzando html2canvas, useremo il metodo jspdf addImage per aggiungere quell'immagine al pdf. Sembra semplice ma ci sono alcuni bug in jsPdf e html2cavas, quindi potrebbe essere necessario cambiare temporaneamente lo stile dom. Spero che questo aiuti.

-1

è possibile farlo utilizzando un plugin jQuery,

this is the link. Tuttavia le sue istruzioni possono essere non funzionante, in modo da utilizzare questo link per ottenere il plugin, che sta funzionando

Usa questo codice per collegare il pulsante ...

$(document).ready(function() { 
    $("#button_id").click(function() { 
     window.print(); 
     return false; 
    }); 
}); 

Questo collegamento può essere anche utile: 10 jQuery PrintPdf Page Options

+0

Puoi spiegare nella tua risposta come questa è una soluzione per salvare una pagina HTML come PDF? The Asker non ha detto nulla sulla stampa ... – trincot

+0

"10 jQuery Print Page Options" è solo un nome di collegamento, questo plug-in darà la pagina HTML come PDF .., tuttavia nel plugin è presente un pulsante il cui nome è "PRINT", ma fornirà un file pdf .. – Dushman

+0

OK , sarebbe bello aggiungere questa informazione nella risposta, dato che è piuttosto sorprendente leggere * Utilizzare questo codice per collegare il pulsante di stampa ... * quando l'Asker non ha menzionato affatto un pulsante di stampa. – trincot