Как перевести HTML в PDF
Готовый файл .html или .htm печатает настоящий движок Chromium на сервере, поэтому раскладка считается по-настоящему: сетки, колонки и переносы ведут себя так же, как в браузере. Взамен нужно принять два условия. Лист всегда A4 с полями по 0,4 дюйма, и правило размера страницы из вашего стиля его не переопределит. А уходит на сервер ровно один файл, поэтому всё оформление должно лежать внутри него.
Коротко о цифрах
- Чем печатается
- Chromium на сервере, через Gotenberg
- Предел размера
- 10 МБ на файл
- Лист и поля
- A4, 8,27 × 11,69 дюйма, поля по 0,4 дюйма
- Размер листа из стилей
- не применяется: предпочтение стилей не запрашивается
- Время на конвертацию
- до 60 секунд на файл
Как подготовить файл
- Объявите кодировку в самом начале. Без этого документ в UTF-8 может быть прочитан иначе, и кириллица превратится в мусор.
- Перенесите стили внутрь файла. Подключённая по ссылке таблица стилей не поедет: на конвертацию отправляется один файл, а не папка.
- Встройте картинки прямо в разметку. Ссылки на соседние файлы после загрузки указывают в пустоту.
- Не рассчитывайте на правило размера листа в стилях: печать идёт на A4, потому что параметры бумаги задаются нами явно, а предпочтение размера из стилей мы не запрашиваем.
- Свои отступы делайте внутренними полями содержимого — так вы управляете видом, не споря с параметрами печати.
Что даёт настоящий движок
Раз документ печатает Chromium, работают правила разбиения на страницы: заголовок можно запретить отрывать от текста, таблицу — не разрывать посреди строки, а перед разделом можно потребовать новую страницу. Для длинных отчётов это важнее любых настроек полей, потому что именно разрывы в неудачных местах делают документ неопрятным.
Печать фона включена, поэтому цветные подложки, заливки строк в таблицах и фоновые изображения попадают в документ, а не выбеливаются. Это отличается от привычной печати из браузера, где фон по умолчанию выключен и его каждый раз включают руками.
Порядок и ограничения
- Проверьте вес файла: предел загрузки составляет 10 МБ, а встроенные картинки набирают его быстро.
- Загрузите один .html или .htm — поля для адреса страницы здесь нет, конвертер работает только с файлом.
- Дождитесь ответа: на конвертацию отводится до 60 секунд, тяжёлая разметка со множеством изображений может в них не уложиться.
- Заберите PDF — имя останется прежним, сменится только расширение.
- Несколько отчётов удобно склеить в один документ объединением, а слишком тяжёлый результат прогнать через сжатие.
- Учтите ограничение частоты: десять конвертаций за десять минут с одного адреса.
Частые вопросы
Почему мой стиль с размером листа A3 не сработал?
Потому что параметры бумаги передаются явно, а предпочтение размера из таблицы стилей не включается. В итоге печать всегда идёт на A4. Если нужен другой формат, придётся печатать документ из браузера вручную.
Как управлять разрывами страниц?
Правилами разбиения в стилях: можно запретить разрыв внутри блока, потребовать новую страницу перед разделом или не отрывать заголовок от следующего абзаца. Движок печати их учитывает, потому что это настоящий браузерный движок.
Картинки не отобразились в готовом PDF. Почему?
Они подключены ссылками на соседние файлы, а на сервер уходит только один файл. Встройте изображения прямо в разметку либо соберите документ так, чтобы всё оформление находилось внутри него.
Можно ли отправить сразу несколько отчётов?
За один раз загружается один файл, но конвертации можно делать подряд, помня об ограничении в десять запросов за десять минут. Полученные документы затем объединяются в один файл нужного порядка.