Вы хотите преобразовать HTML в PDF в своем приложении Node.js? Если вам нужно создавать отчеты в формате PDF, счета-фактуры или любые другие документы для печати из ваших шаблонов HTML, Node.js предоставляет несколько методов для выполнения этой задачи. В этой статье мы рассмотрим различные подходы к преобразованию HTML в PDF с помощью Node.js, а также приведем примеры кода, которые помогут вам начать работу.
Метод 1: использование специальной библиотеки – pdfkit
Один популярный метод создания PDF-файлов в Node.js — использование библиотеки pdfkit. Он предоставляет простой и мощный API для программного создания PDF-документов. Вот пример фрагмента кода для преобразования HTML в PDF с помощью pdfkit:
const PDFDocument = require('pdfkit');
const fs = require('fs');
const generatePDF = (htmlContent, outputPath) => {
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream(outputPath));
doc.text(htmlContent, 100, 100); // Replace with your HTML content
doc.end();
};
const htmlContent = '<html><body><h1>Hello, PDF!</h1></body></html>';
const outputPath = 'output.pdf';
generatePDF(htmlContent, outputPath);
Метод 2: использование безголового браузера – puppeteer
Еще один мощный способ конвертировать HTML в PDF в Node.js — использовать автономный браузер, например puppeteer. Он позволяет отображать HTML-страницы, включая CSS и JavaScript, и создавать на их основе PDF-файлы. Вот пример фрагмента кода:
const puppeteer = require('puppeteer');
const generatePDF = async (htmlContent, outputPath) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent(htmlContent);
await page.pdf({ path: outputPath });
await browser.close();
};
const htmlContent = '<html><body><h1>Hello, PDF!</h1></body></html>';
const outputPath = 'output.pdf';
generatePDF(htmlContent, outputPath);
Метод 3: использование онлайн-сервиса конвертации – pdfcrowd
Если вы предпочитаете, чтобы преобразование HTML в PDF выполнялось внешним сервисом, вы можете использовать pdfcrowd. Он предлагает RESTful API, который позволяет конвертировать HTML в PDF путем выполнения HTTP-запросов. Вот пример фрагмента кода с использованием pdfcrowd:
const https = require('https');
const fs = require('fs');
const generatePDF = (htmlContent, outputPath) => {
const apiKey = 'your-api-key';
const url = `https://pdfcrowd.com/api/v2/pdf/convert/html/`;
const req = https.request(
{
host: 'pdfcrowd.com',
path: '/api/v2/pdf/convert/html/',
method: 'POST',
auth: apiKey + ':',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
},
(res) => {
const writeStream = fs.createWriteStream(outputPath);
res.pipe(writeStream);
}
);
req.write(`html=${encodeURIComponent(htmlContent)}`);
req.end();
};
const htmlContent = '<html><body><h1>Hello, PDF!</h1></body></html>';
const outputPath = 'output.pdf';
generatePDF(htmlContent, outputPath);
Метод 4: использование механизма шаблонов – ejs
Если вы используете в своем приложении Node.js механизм шаблонов, такой как ejs, вы можете отображать свои HTML-шаблоны и конвертировать их в PDF с помощью pdfkitили
Заключение
В этой статье мы рассмотрели несколько методов преобразования HTML в PDF в Node.js. Мы рассмотрели использование таких библиотек, как pdfkitи puppeteer, использование автономных браузеров и даже использование сервисов онлайн-конвертации, таких как pdfcrowd. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Так что вперед, начните создавать красивые PDF-файлы из вашего HTML-контента в Node.js!