Преобразуйте Markdown в PDF без потери документа
Markdown создаётся для прокрутки на экране. PDF — это страницы, у которых есть края. Большинство конвертеров игнорируют эту разницу: они просто отправляют файл в браузер, нажимают «Печать» и возвращают то, что получилось. Поэтому у таблицы пропадают последние четыре столбца, заголовок оказывается внизу страницы, а логотип в начале README превращается в строку необработанного HTML, напечатанную как текст. Этот инструмент сначала верстает документ для бумаги, а затем сообщает, что пришлось сделать для этого.
Таблицы, которые помещаются на листе
В Markdown нет ширины столбцов для таблиц. Синтаксис не предусматривает их, поэтому конвертер, который просто передаёт таблицу в браузер, надеется, что она случайно поместится. Здесь каждая таблица измеряется до вывода и подгоняется под выбранный вами формат бумаги. Даже таблица с путями к файлам на четырнадцать столбцов останется в пределах полей, длинные значения будут переноситься, а не выходить за край, и в результате будет указано, что пришлось сделать для этого.
Менее заметная часть проблемы проявляется на второй странице. Длинная таблица обычно оставляет строку заголовков на первой странице, и читатель видит сетку без подписей. Здесь заголовок повторяется на каждой странице, где есть таблица, а строка никогда не разрывается разрывом страницы.
Код, который не выходит за поля
Ограждённый код сохраняет подсветку синтаксиса и название языка. Длинные строки переносятся так, чтобы было видно, где они перенесены, а не обрезаются по краю бумаги. В PDF нет полосы прокрутки, поэтому строка без переноса — это строка с обрезанным правым краем. Блоки с отступом, ограждения без указания языка и встроенный код также сохраняются как есть.
Картинки в вашем README
Логотип и ряд бейджей сборки почти никогда не пишутся на Markdown. В нём нельзя выровнять изображение по центру, поэтому README часто используют необработанный HTML. Конвертер, который не отображает HTML, обычно экранирует его, а не удаляет, из-за чего документ открывается с экраном тегов изображений, напечатанных как текст. Здесь разметка удаляется, а картинки и текст внутри сохраняются, чтобы верх документа выглядел так же, как и в оригинале.
Изображения загружаются и встраиваются в файл, а не просто ссылаются, поэтому PDF работает офлайн и через год. Если изображение не удалось получить, результат посчитает это и сообщит вам, а не просто оставит пустое место.
Ваши заголовки становятся навигацией
Каждый PDF содержит дерево закладок, построенное из ваших заголовков, чтобы длинный документ можно было пролистывать через боковую панель, а не только прокручивать. Если вы закажете страницу содержания, получите кликабельную, на любой выбранной глубине заголовков. Один заголовок в самом верху воспринимается как название документа и не попадает в список, как это бывает с титульной страницей книги, а не главы.
Сноски остаются сносками, с поднятым маркером и ссылкой обратно к строке, которую вы читали. Чек-листы сохраняют свои галочки и пустые квадраты. Примечания, предупреждения и советы сохраняют цветную полосу. Front matter в начале файла считается метаданными и не попадает на страницу. Списки определений, зачёркивания, вложенные цитаты и три уровня вложенных списков отображаются как есть.
Инструмент сообщает, что не смог сделать
Каждое преобразование сопровождается кратким отчётом: сколько страниц, в каком направлении идёт текст, сколько таблиц, сколько блоков кода, сколько изображений встроено и сколько не удалось получить. Если в шрифте не хватило символа, он будет указан. Если вы запросили страницу содержания, а в документе нет заголовков, чтобы её заполнить, инструмент сообщит об этом, а не отдаст файл с пустой страницей в начале. Конвертер, скрывающий свои ошибки — причина, по которой им перестают доверять.
Письменности, отличные от латиницы
Шрифты встраиваются в PDF, поэтому документ открывается одинаково на любом компьютере, даже если там нет этих шрифтов. Текст справа налево определяется для каждого блока отдельно, а не для всего файла сразу, что важно, потому что технические документы на таких языках часто наполовину состоят из латиницы — с путями к файлам и названиями классов — и всё равно читаются справа налево. Ограждённый код всегда остаётся слева направо, а остальная верстка зеркалируется правильно: маркеры списков, полосы цитат и столбцы таблиц меняют положение. Если в письменности нет курсива, выделение делается жирным, а не наклонёнными буквами, которых не существует.
Чего инструмент не делает
LaTeX не отображается. Блок между знаками доллара выводится как обычный текст. Mermaid тоже не рисуется: ограждение с пометкой mermaid превращается в блок кода с подписью. Китайский, японский и корейский выходят за пределы встроенных шрифтов, поэтому символы этих языков отмечаются как отсутствующие, а не подбираются наугад. Это ограничения, а не ошибки, и они описаны здесь, чтобы никто не узнал о них после загрузки.
Практическая часть
Загрузите файл с устройства, из Google Drive или вставьте ссылку. Markdown-файлы принимаются с любыми стандартными расширениями, также принимается обычный текст. Форматы бумаги: A3, A4, A5, Letter, Legal или Tabloid, книжная или альбомная ориентация, с узкими, обычными или широкими полями. Нумерация страниц и подсветка синтаксиса включены по умолчанию, если вы их не отключите. Отправьте один файл — получите PDF; отправьте несколько — получите ZIP или один объединённый PDF с непрерывной нумерацией страниц, если выберете это. Текст остаётся текстом, его можно выделять, искать и копировать, а не превращать в картинку из слов.
Что вы получаете
- Таблицы, которые остаются в пределах полей, с повторяющейся строкой заголовков на каждой странице
- Код с подсветкой синтаксиса и переносом длинных строк вместо их обрезки
- Встроенные изображения, включая те, что написаны в необработанном HTML
- Дерево закладок из ваших заголовков и кликабельная страница содержания по вашему желанию
- Шрифты внутри PDF, чтобы файл выглядел одинаково на любом устройстве
- Письменный отчёт о том, что не удалось преобразовать, включая отсутствующие символы и изображения
Что дальше?
Работаете с файлом Word? Word в PDF использует тот же подход к верстке. Объедините результат с остальной частью отчёта с помощью Объединить PDF. А затем уменьшите размер файла перед отправкой с помощью Сжать PDF.