PDF генерация в TypeScript: полное руководство для разработчиков
Создание PDF-документов — одна из востребованных задач в современной веб-разработке. На языке TypeScript существует несколько мощных библиотек, которые позволяют генерировать PDF как на стороне клиента, так и на сервере (Node.js). В этой статье мы рассмотрим три основных инструмента: PDFKit, jsPDF и pdf-lib, а также покажем практические примеры их использования.
Зачем генерировать PDF в TypeScript?
TypeScript добавляет статическую типизацию, что особенно важно при работе с документами сложной структуры. Использование TypeScript для генерации PDF позволяет:
- Избежать ошибок типов при формировании таблиц и стилей
- Упростить рефакторинг крупных проектов
- Интегрировать генерацию PDF с существующими TypeScript-проектами (React, Angular, Node.js)
Обзор библиотек для генерации PDF
1. PDFKit (Node.js)
PDFKit — самая популярная библиотека для создания PDF на сервере. Она предоставляет низкоуровневый доступ к объектам PDF, поддерживает шрифты, изображения, встраивание векторной графики и кириллицу (при подключении соответствующих шрифтов).
import PDFDocument from 'pdfkit';
import fs from 'fs';
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(24).text('Привет, мир!', 100, 100);
doc.fontSize(12).text('Это PDF, созданный с помощью PDFKit и TypeScript', 100, 150);
doc.end();
Особенности:
- Работает только в Node.js (не подходит для браузера)
- Требует ручной настройки шрифтов для кириллицы
- Поддерживает сложные макеты, таблицы и графику
2. jsPDF (браузер и Node.js)
jsPDF — универсальная библиотека, работающая как в браузере, так и на сервере. Она проще в освоении, но имеет ограничения по сложности макетов.
import { jsPDF } from 'jspdf';
const doc = new jsPDF();
doc.text('Генерация PDF на TypeScript', 10, 10);
doc.save('document.pdf');
Особенности:
- Простой API для базовых документов
- Поддержка кириллицы (требует подключения шрифтов через addFont)
- Может работать с canvas и HTML-элементами
3. pdf-lib (современный и гибкий)
pdf-lib — легковесная библиотека с отличной поддержкой TypeScript. Она позволяет создавать PDF с нуля или редактировать существующие документы.
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() {
const doc = await PDFDocument.create();
const page = doc.addPage();
const font = await doc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF с pdf-lib', {
x: 50,
y: 700,
size: 24,
font,
color: rgb(0, 0, 0),
});
const pdfBytes = await doc.save();
// Сохранение или отправка
}
Особенности:
- Полная поддержка TypeScript (типы включены)
- Может работать в браузере и Node.js
- Позволяет модифицировать существующие PDF
- Требует ручной работы со шрифтами для кириллицы
Сравнение библиотек
| Характеристика | PDFKit | jsPDF | pdf-lib |
|---|---|---|---|
| Среда выполнения | Node.js | Браузер + Node.js | Браузер + Node.js |
| Поддержка TypeScript | Частичная (через @types) | Частичная | Полная |
| Кириллица | Требует шрифты | Требует шрифты | Требует шрифты |
| Сложные макеты | Отлично | Средне | Хорошо |
| Размер библиотеки | ~2 MB | ~500
Также в библиотекеРекомендаций |