Puppeteer предоставляет мощные средства для автоматизации браузерных операций и, в том числе, для работы с генерацией PDF-документов. Браузерный движок Chromium, используемый в Puppeteer, позволяет настраивать внешний вид PDF-документов с помощью различных опций. Работа с форматом и полями PDF является важной частью тестирования, особенно при создании отчетов, вывода данных и подготовки документации.
Параметры формата страницы позволяют точно контролировать размеры и
ориентацию PDF-документа. Для задания этих настроек используется опция
format в методе page.pdf(). В Puppeteer
поддерживаются стандартные форматы бумаги, такие как A4, A3, Letter и
другие. Также возможно указать произвольные размеры страницы, задав их в
пикселях.
await page.pdf({
path: &
format: 'A4',
});
В случае, если требуется задать нестандартный размер, можно использовать
опции width и height, определяя размеры
страницы в пикселях:
await page.pdf({
path: 'custom-size.pdf',
width: '210mm',
height: '297mm', // A4
});
Такой подход полезен, когда стандартные форматы не подходят под требования проекта или нужно соответствовать специфическим условиям печати.
Один из важных параметров при создании PDF — ориентация страницы. Это
можно настроить с помощью параметра landscape. По умолчанию
Puppeteer генерирует страницы в портретной ориентации, но для
ландшафтного формата необходимо явно указать:
await page.pdf({
path: 'landscape.pdf',
format: 'A4',
landscape: true,
});
Ориентация может существенно повлиять на структуру контента в документе, особенно при работе с таблицами или длинными текстами. Правильная настройка ориентации помогает обеспечить корректное отображение информации.
Настройка отступов является важным аспектом при создании PDF, поскольку
они определяют пространство вокруг содержимого. В Puppeteer можно
указать маржи страницы с помощью параметров marginTop,
marginBottom, marginLeft и
marginRight. Все значения задаются в пикселях или
миллиметрах:
await page.pdf({
path: 'with-margins.pdf',
format: 'A4',
marginTop: '20mm',
marginBottom: '20mm',
marginLeft: '10mm',
marginRight: '10mm',
});
Отступы могут быть полезны для соблюдения стандартов оформления документа или для подготовки документов к печати, где важно оставить пространство для переплета, штампов и других элементов.
Одним из дополнительных параметров является quality,
который управляет качеством выходного файла. В Puppeteer можно настроить
этот параметр для получения либо более высококачественного, но большого
файла, либо более сжато сформированного PDF:
await page.pdf({
path: 'high-quality.pdf',
format: 'A4',
quality: 100, // наибольшее качество
});
Для получения меньшего по размеру файла можно задать значение качества ниже 100, что приведет к дополнительной компрессии графики и других элементов в PDF.
По умолчанию фоны веб-страниц не включаются в PDF-документ, что может
быть неудобно для точного воспроизведения внешнего вида страницы. Для
включения фона необходимо использовать параметр
printBackground, который позволяет сохранить фоновое
изображение, цвета и другие декоративные элементы:
await page.pdf({
path: 'with-background.pdf',
format: 'A4',
printBackground: true,
});
Этот параметр полезен для сохранения целостности дизайна страницы при преобразовании её в PDF.
В случае, если требуется создать PDF только из определенной части
страницы, например, из конкретного блока, Puppeteer предоставляет
параметр clip, который позволяет задать область вывода.
Этот параметр указывается как объект с координатами верхнего левого угла
и размерами области:
await page.pdf({
path: 'clipped.pdf',
format: 'A4',
clip: {
x: 0,
y: 0,
width: 800,
height: 600,
},
});
Это позволяет создавать PDF только из части содержимого страницы, что полезно при необходимости вырезать излишки и экспортировать только определенные разделы.
При работе с PDF можно также настроить масштабирование содержимого,
чтобы оно подгонялось под размеры страницы. Это можно сделать с помощью
параметра scale, который определяет коэффициент
масштабирования относительно исходного размера страницы. Значение по
умолчанию — 1:
await page.pdf({
path: 'scaled.pdf',
format: 'A4',
scale: 0.8, // уменьшение размера на 20%
});
Этот параметр полезен, когда нужно уменьшить или увеличить содержимое документа для адаптации под конкретный формат.
В некоторых случаях необходимо не только сохранить внешний вид страницы,
но и сохранить интерактивные элементы, такие как формы, в PDF. Хотя
Puppeteer не поддерживает динамическое взаимодействие с элементами формы
на этапе генерации PDF, можно сохранить текущее состояние полей ввода,
таких как текст, флажки, радио-кнопки, в PDF-документе. Для этого
достаточно вызвать метод pdf() после того, как все поля
были заполнены и стилизованы:
await page.type('#name', 'John Doe');
await page.pdf({
path: 'form-filled.pdf',
format: 'A4',
});
Этот метод сохранит все текущее состояние формы, включая введенные данные, при создании PDF.
Для более сложных макетов, таких как страницы с несколькими колонками, важно правильно настроить параметры PDF, чтобы документ сохранял читаемость и структуру. В таких случаях можно использовать параметры масштабирования, отступов и ориентации страницы в комбинации, чтобы достичь оптимального результата. Например, для страницы с двумя колонками текста можно использовать горизонтальную ориентацию и небольшие отступы для лучшего восприятия текста.
await page.pdf({
path: 'multi-column.pdf',
format: 'A4',
landscape: true,
marginTop: '10mm',
marginBottom: '10mm',
marginLeft: '5mm',
marginRight: '5mm',
});
Такая настройка обеспечит адекватное отображение контента на странице с несколькими колонками.
Настройка формата и полей PDF с использованием Puppeteer предоставляет гибкость и точность в процессе создания и тестирования PDF-документов. Используя параметры для настройки размера страницы, ориентации, отступов, качества и других аспектов, можно добиться нужного результата, обеспечивая высококачественные PDF-документы с любым содержимым.