PDF генерация в TypeScript: обзор библиотек и инструментов
Создание PDF-документов — одна из частых задач в веб-разработке. TypeScript, благодаря строгой типизации и современным возможностям, позволяет писать надёжный код для генерации PDF как на клиенте, так и на сервере. В этой статье мы рассмотрим популярные библиотеки и инструменты для генерации PDF на TypeScript, их особенности и примеры использования.
1. PDFKit — мощная серверная библиотека
PDFKit — одна из самых популярных библиотек для создания PDF на Node.js. Она предоставляет полный контроль над структурой документа, поддерживает шрифты, изображения, аннотации и векторную графику. PDFKit работает на сервере и идеально подходит для генерации сложных отчётов, счетов или сертификатов.
Установка и пример:
npm install pdfkit @types/pdfkit
import PDFDocument from 'pdfkit';
import * as fs from 'fs';
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Привет, мир!', 100, 100);
doc.fontSize(12).text('Это PDF, сгенерированный с помощью PDFKit и TypeScript.', 100, 150);
doc.end();
PDFKit отлично подходит для:
- Создания PDF на сервере (Express, NestJS)
- Работы с пользовательскими шрифтами и кодировками (включая кириллицу)
- Добавления изображений, таблиц и графических примитивов
2. jsPDF — генерация PDF на клиенте
jsPDF — это клиентская библиотека для создания PDF прямо в браузере. Она проста в использовании, поддерживает текст, изображения, аннотации и базовые фигуры. Для TypeScript доступны типы через DefinitelyTyped.
Установка:
npm install jspdf @types/jspdf
Пример генерации PDF в браузере:
import { jsPDF } from 'jspdf';
const doc = new jsPDF();
doc.text('Привет, TypeScript!', 10, 10);
doc.text('Это PDF, созданный в браузере.', 10, 20);
doc.save('document.pdf');
jsPDF подходит для:
- Скачивания PDF на стороне клиента (отчёты, чеки)
- Простых документов без сложной вёрстки
- Быстрого прототипирования
3. Puppeteer — генерация из HTML
Puppeteer — это библиотека для управления браузером Chrome/Chromium. Она позволяет конвертировать HTML-страницы в PDF с полным сохранением стилей, шрифтов и вёрстки. Отлично подходит для создания сложных документов, отчётов и визиток.
Установка:
npm install puppeteer
Пример конвертации HTML в PDF:
import puppeteer from 'puppeteer';
async function generatePDF(html: string, outputPath: string): Promise<void> {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'networkidle0' });
await page.pdf({ path: outputPath, format: 'A4' });
await browser.close();
}
// Использование
const htmlContent = `<h1 style="color: blue;">Заголовок</h1><p>Текст с HTML-стилями</p>`;
generatePDF(htmlContent, 'output.pdf');
Puppeteer идеален для:
- Конвертации сложных HTML-шаблонов в PDF
- Создания PDF с CSS-стилями, Flexbox, Grid
- Генерации PDF на сервере с полным контролем внешнего вида
4. pdf-lib — лёгкая и быстрая библиотека
pdf-lib — это современная библиотека для создания и модификации PDF-документов без внешних зависимостей. Работает как в Node.js, так и в браузере. Поддерживает шрифты, изображения, формы и аннотации.
Установка:
npm install pdf-lib
Пример создания простого PDF:
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() {
const pdfDoc = await PDFDocument.create();
const page = pdfDoc.addPage([600, 400]);
const font = await pdfDoc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF с помощью pdf-lib', {
x: 50,
y: 200,
size: 30,
font: font,
color: rgb(0, 0.53, 0.71),
});
const pdf Также в библиотеке
Работа с ZIP/архивами в Go (Golang) — полное руководство
Обработка изображений в C# (.NET): библиотеки и примеры кода
Работа с Excel в JavaScript (Node.js): библиотеки и инструменты
Генерация PDF отчётов на Rust: библиотеки и практические примеры
Superstruct для TypeScript: полное руководство с примерами