Generare file DOCX con Javascript

Mattepuffo's logo
Generare file DOCX con Javascript

Generare file DOCX con Javascript

La libreria docx.js ci permette di creare dei file DOCX tramite Javascript.

E' possibile usare la libreria sia tramite Node.js che direttamente nei browser (esempio che vederemo noi).

La documentazione è abbastanza completa; l'unica funzionalità che non ho trovato è quella del settaggio dei colori.

Ad esempio, il mio paragrafo che è un heading, si vede blu di default.

Magari sono io che non ho visto la funzione apposita.

Comunque ecco un esempio di codice testato e funzionante:

<!DOCTYPE html>
<html>
    <head>
        <title>Test Docx JS</title>
        <script src="https://unpkg.com/docx@4.0.0/build/index.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.js"></script>
    </head>
    <body>
        <button type="button" onclick="generate();">Generate DOCX</button>
        <script>
            function generate() {
                const doc = new Document({
                    creator: "mattepuffo.com",
                    description: 'Test di DOCX JS',
                    title: 'Test!'
                });

                const paragraphTop = new Paragraph("Ciao!");
                paragraphTop.heading1();
                paragraphTop.center();

                const text = new TextRun("Questo è il testo che di dovrebbe vedere");
                const paragraphTxt = new Paragraph();
                paragraphTxt.justified();
                paragraphTxt.addRun(text);

                doc.addParagraph(paragraphTop);
                doc.addParagraph(paragraphTxt);

                const packer = new Packer();
                packer.toBlob(doc).then(blob => {
                    saveAs(blob, "file.docx");
                });
            }
        </script>
    </body>
</html>

Qui abbiamom aggiunto due paragrafi, di cui il primo funge da titolo e il secondo da testo.

Come vedete è abbastanza facile da usare, e potete vedere dalla documentazione che potete usare altri componenti se volete.

Un buon test sarebbe quello di usarlo tramite AJAX per prendere i dati da db.

Enjoy!


Condividi

Commentami!