Преобразование Word в PDF в Node.js: подробное руководство с примерами кода

В современную цифровую эпоху необходимость конвертировать файлы из одного формата в другой довольно распространена. Если вы работаете с Node.js и хотите конвертировать документы Word в PDF, вы попали по адресу. В этой статье мы рассмотрим различные методы и примеры кода для эффективного выполнения этой задачи.

Метод 1: использование LibreOffice
Один популярный подход к преобразованию Word в PDF в Node.js — использование LibreOffice. LibreOffice — это офисный пакет с открытым исходным кодом, который предоставляет интерфейс командной строки для преобразования файлов. Выполните следующие действия:

  1. Установить LibreOffice:

    sudo apt-get update
    sudo apt-get install libreoffice
  2. Используйте интерфейс командной строки LibreOffice (soffice) для преобразования Word в PDF:

    const { exec } = require('child_process');
    exec('soffice --convert-to pdf your_word_file.docx', (error, stdout, stderr) => {
     if (error) {
       console.error(`Error: ${error.message}`);
       return;
     }
     console.log('Conversion successful');
    });

Метод 2: использование Docxtemplater
Docxtemplater — это мощный пакет npm, который позволяет программно манипулировать документами Word. Мы можем использовать этот пакет для преобразования Word в PDF. Вот как:

  1. Установите пакет Docxtemplater:

    npm install docxtemplater --save
  2. Используйте Docxtemplater, чтобы загрузить документ Word, изменить его и сохранить в формате PDF:

    const Docxtemplater = require('docxtemplater');
    const fs = require('fs');
    const content = fs.readFileSync('your_word_file.docx', 'binary');
    const doc = new Docxtemplater(content);
    // Modify the content if needed
    const buf = doc.getZip().generate({ type: 'nodebuffer' });
    fs.writeFileSync('output.pdf', buf);

Метод 3: использование Puppeteer и Microsoft Office Online
Если вы предпочитаете веб-подход, вы можете использовать Puppeteer, библиотеку Node.js для управления автономными браузерами Chrome или Chromium, а также Microsoft Office Online. Вот как:

  1. Установить Puppeteer и зависимости:

    npm install puppeteer puppeteer-core --save
  2. Используйте Puppeteer, чтобы открыть Microsoft Office Online, загрузить документ Word и сохранить его в формате PDF:

    const puppeteer = require('puppeteer');
    (async () => {
     const browser = await puppeteer.launch();
     const page = await browser.newPage();
     await page.goto('https://www.office.com/');
     // Perform necessary actions to upload and convert the Word document
     await page.waitForTimeout(5000); // Adjust the timeout as needed
     await page.click('button[data-control-name="saveToPdf"]');
     await page.waitForTimeout(5000);
     await page.click('button[data-control-name="save"]');
     await page.waitForTimeout(5000);
     await browser.close();
    })();

В этой статье мы рассмотрели три различных метода преобразования Word в PDF в Node.js. Вы можете выбрать подход, который лучше всего соответствует вашим требованиям, и легко интегрировать его в свой проект Node.js. Независимо от того, предпочитаете ли вы использовать LibreOffice, Docxtemplater или комбинацию Puppeteer и Microsoft Office Online, эти методы помогут вам эффективно достичь своей цели.

При выборе метода для вашего проекта не забывайте учитывать такие факторы, как установка, зависимости и простота использования. Не стесняйтесь экспериментировать с этими методами и выберите тот, который соответствует вашим конкретным потребностям. Удачного программирования и удачного конвертирования!