Generazione di file PDF con JavaScript

Sto cercando di convertire i dati XML in file PDF da una pagina Web e speravo di poterlo fare interamente in JavaScript. Devo essere in grado di disegnare testo, immagini e forms semplici. Mi piacerebbe poterlo fare interamente nel browser.

Ho appena scritto una libreria chiamata jsPDF che genera PDF usando Javascript da solo. È ancora molto giovane, e presto aggiungerò funzionalità e correzioni di bug. Ho anche alcune idee per soluzioni alternative nei browser che non supportano gli URI dei dati. È concesso in licenza con una licenza liberale del MIT.

Mi sono imbattuto in questa domanda prima di iniziare a scriverlo e ho pensato di tornare e farti sapere 🙂

Genera PDF in Javascript

Esempio creare un file PDF “Hello World”.

// Default export is a4 paper, portrait, using milimeters for units var doc = new jsPDF() doc.text('Hello world!', 10, 10) doc.save('a4.pdf') 
  

Un’altra libreria javascript degna di nota è pdfmake .

  • campo giochi pdfmake
  • pdfmake su github

Il supporto del browser non sembra forte come jsPDF, né sembra esserci un’opzione per le forms, ma le opzioni per la formattazione del testo sono più avanzate delle opzioni attualmente disponibili in jsPDF.

Mantengo PDFKit , che alimenta anche pdfmake (già menzionato qui). Funziona sia nel nodo che nel browser e supporta un sacco di cose che altre librerie non hanno:

  • Incorporamento di caratteri subsetted, con supporto per unicode.
  • Un sacco di contenuti di layout di testo avanzati (colonne, interruzione di pagina, interruzione di riga in modalità unicode completa, rich text di base, ecc.).
  • Lavorare su un numero ancora maggiore di font per la tipografia avanzata (legature OpenType / AAT, sostituzione contestuale, ecc.). Prossimamente: vedi il ramo di fontkit se sei interessato.
  • Più elementi grafici: sfumature, ecc.
  • Costruito con strumenti moderni come browserify e streaming. Utilizzabile sia nel browser che nel nodo.

Dai un’occhiata a http://pdfkit.org/ per un tutorial completo per vedere da te cosa può fare PDFKit. E per un esempio di quali tipi di documenti possono essere prodotti, controlla i documenti come PDF generato da alcuni file Markdown usando PDFKit stesso: http://pdfkit.org/docs/guide.pdf .

Puoi anche provarlo intertriggersmente nel browser qui: http://pdfkit.org/demo/browser.html .

Un altro progetto interessante è texlive.js .

Permette di compilare (La) TeX in PDF nel browser.

Puoi utilizzare questo servizio gratuito aggiungendo un link che crea pdf da qualsiasi URL (ad esempio http://www.phys.org ):

http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en

Anche se tu potessi generare il PDF in-memory in JavaScript, avresti ancora il problema di come trasferire quei dati all’utente. È difficile per JavaScript solo spingere un file all’utente.

Per ottenere il file all’utente, è necessario eseguire un invio del server per consentire al browser di visualizzare la finestra di dialogo di salvataggio.

Detto ciò, non è davvero difficile generare PDF. Basta leggere le specifiche.