Перейти к содержимому

Конвертировать HTML в PDF

Превратите HTML-файл — или вставленную разметку — в PDF, разбитый на страницы и выглядящий точно как сама страница: flexbox, grid, градиенты, изображения и типографика сохранены.

  • Удаляется сразу после конвертации
  • Зашифрованная передача, мгновенное удаление
  • Без регистрации и водяных знаков

Как это работает

1

Добавьте HTML

Перетащите файл .html или вставьте разметку в поле.

2

Выберите страницу

Размер страницы, ориентация и поля — применяются как настоящий CSS для печати.

3

Конвертируйте и скачайте

Отрисовано и разбито на страницы ровно так, как сделали бы «Печать → Сохранить как PDF», с настоящим выделяемым текстом.

К чему странице разрешено обращаться и чем управляет CSS

У конвертации нет доступа к сети, и скрипты она не выполняет — и то и другое решения безопасности, а не недостающие функции. Конвертер, который загружал бы всё, что запросит присланная страница, можно было бы натравить на адреса, видимые только нашему серверу, а выполняющий скрипты запускал бы чужой код. Поэтому таблица стилей со ссылкой на CDN не придёт, изображение с обычным веб-адресом не загрузится, веб-шрифт будет молча заменён, а страница, которая рисует себя через JavaScript, конвертируется такой, какой её описывает разметка до запуска чего-либо. Решение всегда одно и то же: встройте CSS в блок style, а изображения — как data URI. Браузеры умеют это сами — «Сохранить страницу как → Веб-страница, полностью» в Firefox или «Сохранить как MHTML», — и сохранённая однофайловая страница конвертируется точно.

Результатом на самом деле управляет CSS для печати — это второе, что стоит знать. Страница верстается как для печати, поэтому блок @media print срабатывает, а обычная экранная таблица стилей может и не сработать, — вот почему страница с правилом печати, скрывающим навигацию, конвертируется прекрасно, а страница без него тащит за собой всё оформление сайта. @page управляет бумагой: размер, ориентация и поля читаются из него. break-before, break-after и break-inside: avoid решают, где делятся страницы, так что таблица, которую нельзя разрывать, или раздел, который должен начинаться с новой страницы, полностью в ваших руках.

Классическая потеря — фоны. Браузеры по умолчанию не печатают фоновые цвета и изображения, так что тёмная шапка может превратиться в белую, если в таблице стилей нет -webkit-print-color-adjust: exact, — одна строка, и в ней разница между фирменным документом и голым. Текст остаётся настоящим текстом, ссылки — рабочими ссылками, а заголовки могут стать закладками PDF, если в разметке использованы настоящие элементы заголовков.

Если наш сервер недоступен, страница сообщает об этом и собирает документ локально — при этом сохраняются текст, изображения и простая вёрстка, а всё, что требует настоящего прохода вёрстки, упрощается: в том числе grid, flexbox, float и позиционирование. Простой документ конвертируется почти один в один, свёрстанный дизайнером — нет.

Если нужно другое

Чтобы конвертировать живой URL — чего эта страница намеренно не умеет, — тот же движок отрисовки, что работает на нашем сервере, можно запустить у себя: chrome --headless --disable-gpu --print-to-pdf=out.pdf https://example.com загружает страницу с работающей сетью, со скриптами и всем прочим. В этом вся разница, и ради неё к нему и стоит обращаться.

Для настоящего контроля над колонтитулами, номерами страниц и полями WeasyPrint и Prince как следует реализуют спецификацию CSS Paged Media: колонтитулы из @top-center, счётчики страниц, сноски и перекрёстные ссылки, которые превращаются в номера страниц. WeasyPrint бесплатен, и его использует большинство конвейеров документации. Chrome почти ничего из этого не поддерживает, так что для сгенерированного отчёта с «Страница 3 из 12» в нижнем колонтитуле нужен один из них, а не этот инструмент.

Частые вопросы

Будет ли всё выглядеть точно как моя страница?

Да — результат получается ровно таким, как при «Печать → Сохранить как PDF». Flexbox, grid, float, градиенты, тени, SVG и веб-шрифты выглядят точно так же, как на экране.

Сохраняется ли мой HTML где-нибудь?

Он отправляется на наш сервер по зашифрованному соединению, конвертируется и удаляется в тот момент, когда готов PDF, — ничего не сохраняется, не записывается в журналы и никому не передаётся. Если сервер вдруг недоступен, инструмент переключается на собственный конвертер и сообщает вам об этом.

Выполняется ли JavaScript?

Нет, намеренно — страница отрисовывается только по разметке и стилям. Выполнять непроверенные скрипты на сервере было бы дырой в безопасности, а документ, который стоит конвертировать, не должен собирать себя во время выполнения.

Можно ли использовать внешние изображения или таблицы стилей?

Нет — ради безопасности конвертация отрезана от сети. Встройте CSS в страницу, а изображения — как data URI; всё самодостаточное отрисовывается идеально.

Можно ли выделять текст?

Да. В PDF настоящий векторный текст и графика, а не скриншот, поэтому он остаётся чётким при любом масштабе, и его можно выделять, искать и копировать.

Как определяются разрывы страниц?

Настоящим CSS для печати: содержимое перетекает со страницы на страницу, а правила page-break-before, page-break-after и page-break-inside в вашей разметке соблюдаются в точности так, как их соблюдает браузер при печати.

Полезно знать: Скрипты не выполняются, и у конвертации нет доступа к сети — встройте стили в страницу, а изображения — как data URI. Живые URL загрузить нельзя: сначала сохраните страницу в файл. Если наш сервер недоступен, резервный конвертер в браузере сохраняет текст и простую вёрстку, но упрощает сложный CSS.