2013-06-26 30 views
11

Chiunque abbia lavorato su qualcosa come questo descrive il processo generale? Sono molto confuso in questo momento. Per segnalazione intendo un documento visivamente accattivante con logo, tabelle, intestazioni e piè di pagina e i dati verranno recuperati in modo dinamico.Approccio più utilizzato per generare un report PDF (JavaScript, node.js)?

Gli approcci ho guardato sono:

  1. utilizzare una libreria lato server (modulo node.js) che genera il PDF. Invia la rappresentazione della stringa come risposta con Content-Type: application/pdf. Problema: ho scelto PDFKit, ma non funziona e nessun contenuto appare. Utilizza PDF 1.3, che è vecchio.

  2. Genera PDF sul lato client. Problema: la libreria più popolare sembra essere jsPDF, ma non è in grado di produrre documenti dall'aspetto sofisticato.

  3. Scrivere modello nel codice sorgente PDF e compilare i dati sul lato server. Problema: la codifica è strana, ad esempio se faccio semplicemente doc.text("1"), molti caratteri non riconoscibili appaiono solo per la stringa "1". Sono molto confuso su questo.

Infine, sarà super disponibile se qualcuno fornisce un collegamento che può aiutare a capire la codifica! Mi confonde molto.

Qualsiasi esperienza con attività simili è molto apprezzata!

+0

Vedi anche [libreria JavaScript generatore di PDF] (http://stackoverflow.com/questions/20029132/javascript-pdf-generatore-library/28.335.483). –

+0

@DanDascalescu il post del collegamento è stato rimosso – jawath

+0

@jawath: quella domanda era * cancellata * da SO mod come "off topic", perché chiuderla non era abbastanza. Si prega di inviare reclami ai moderatori come mureinik. –

risposta

3

Non sono sicuro di quale sia l'approccio più comune, ma personalmente mi piace creare un modello HTML, inserirlo nel mio codice lato server e quindi utilizzare wkhtmltopdf per convertire l'HTML in un PDF. Se stai usando .NET si dovrebbe verificare WkHtmlToXSharp (che è un wrapper NET per wkhtmltopdf.)

+0

Questo strumento è ** veramente ** eccellente e facile da usare. – Blauhirn

+0

Il link sopra è morto. Ecco il nuovo link https://wkhtmltopdf.org/ –

+0

@JamesYoung Grazie. Ho aggiornato il link. – AlliterativeAlice

13

Non ho personalmente fatto questo, ma la prima cosa che vorrei provare sarebbe:

  1. Sul lato server creare dinamicamente il documento HTML appropriato e CSS
  2. Usa phantomJS per rendere quel documento
  3. Dillo phantomJS convertire tale documento in formato PDF, salvati in un file temporaneo
  4. inviare il PDF indietro come la risposta HTTP scrivendo la temp file PDF per il corpo della risposta
  5. Eliminare il file temporaneo

Se siete alle prese con content-type, Content-Disposition, etc, non si deve avere preoccuparsi di che, se si dispone di un file PDF valido su disco e basta scrivere quei dati per la risposta HTTP. Con le intestazioni corrette, dovresti essere in grado di chiedere al browser di visualizzare il PDF o trattarlo come un file da salvare come download.

+0

Quanto ci vorrà per 1000 pagine html con 1gb di RAM? –

7

Come membro della squadra di jsreport, vorrei dargli una possibilità.

jsreport La piattaforma fornisce diversi modi su come generare report in formato PDF. Il più comune incluso è quello di trasformare html in pdf usando phantomjs. jsreport compilerà e renderà anche manubri o template hsml jsrender se specificati, può incorporare immagini, aggiungere intestazione/piè di pagina, eseguire javascript personalizzati e altro ancora.

Si può giocare con l'esempio "Ciao Mondo Phantom Pdf" e vedere le opzioni che si hanno https://playground.jsreport.net

Quando si è fatto con il gioco, è possibile utilizzare jsreport online o download and install server di jsreport alla vostra azienda. Allora sei pronto per chiamare il suo REST API e generare rapporti.

più alla tua domanda

  • jsreport fornirà corretto tipo di contenuto nella risposta per PDF o HTML. Si può semplicemente lasciare che il browser per visualizzare il risultato
  • dati possono essere inviati a jsreport API o recuperato i da script personalizzato
+0

jsreport è un ottimo strumento, ma sfortunatamente con pochissima documentazione. Mi chiedo, perché non ci sono esempi forniti come usarlo con curl o da un altro sito web. In particolare sto cercando di distribuire jsreport per l'esecuzione in background, accedervi dalle mie app basate su nodejs e fornire un pdf all'utente. –