Search code examples
javascriptnode.jstypescriptpdf-generationnestjs

How to generate pdf from docx - NodeJS + TypeScript


I'm trying to generate a PDF from a previously generated DOCX file in NodeJS. I'm using NestJS and TypeScript. I have tried many ways, but everything fails:

  • @nativedocuments/docx-wasm: NativeDocuments isn't working anymore.
  • word2pdf: Is archived at github, and unavailable at npm.
  • docx-pdf: Generates an unstyled pdf. It removes my tables, indentation, justified text, etc.
  • libreoffice-convert: Throws a window error: The application cannot be started. The configuration file "C:/Program Files/LibreOffice/program/bootstrap.ini" is corrupt (But LibreOffice software is working with no problem).

Do you know some workaround to the problems I got with any of the previously mentioned docx to pdf alternatives? Or maybe some other alternative that I can use (For free, please)?

Thank you in advance!


Solution

  • The best I know about is using Libreoffice. You don't really need a wrapper library for that.

    You can just execute libreoffice directly using exec:

    const { exec } = require("child_process");
    
    exec("libreoffice --headless file.xyz", (error, stdout, stderr) => {
        if (error) {
            console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.log(`stderr: ${stderr}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
    });
    

    You'll need to first write your DOCX to a file somewhere on the disk where Libreoffice would be able to open it, and the resulting PDF would be written on the disk as well - then you can load it into Node with fs.