Документация Jekyll для PDF с TOC
Я хотел бы написать документацию, используя Jekyll с выводами HTML и PDF. Html может иметь навигацию, но PDF файл должен содержать оглавление. Есть ли бесплатный и простой способ сделать это?
Часть HTML проста, но я бы хотел использовать CSS-текст @media для создания PDF файла.
У меня есть несколько идей, как это сделать.
- Используйте PrinceXML, к сожалению это коммерческий продукт с неприятным ценой ~ $500
- Используйте WKHTMLTOPDF
- Используйте Maruku, так как можно использовать преобразование PDF, используя его
Я хотел бы иметь несколько страниц HTML и одностраничный PDF с TOC. Какие-либо предложения?
Btw. Buildr решил эту проблему, используя PrinceXML.
Ответы
Ответ 1
Если "ваш" - ваш самый важный критерий, то ваш лучший выбор - wkhtmltopdf. Он поддерживает такие вещи, как обложки, токи, заголовки, нижние колонтитулы и разделы. В зависимости от того, насколько экзотично будет оформление вашего документа, вы, скорее всего, столкнетесь с некоторыми проблемами с разрывом страниц, но с небольшим перерывом вы должны быть в порядке.
Я немного использовал wkhtmltopdf, с некоторыми довольно сложными документами (с диаграммами javascript, таблицами, svg-изображениями и т.д.) и не сталкивался с множеством проблем.
Убедитесь, что вы используете статическую версию wkhtmltopdf, так как это единственная версия, которая поддерживает рендеринг страницы TOC.
Ответ 2
Вы можете использовать PDFKit gem, который использует wkhtmltopdf за кулисами. Затем вы можете поместить свою логику PDF в плагин Jekyll в качестве генератора или конвертера.
Ответ 3
- Для создания оглавления с помощью Jekyll вы можете использовать макрос
{:toc}
, предлагаемый уценкой, или написать свой собственный текстильный фильтр содержимого, если вы предпочитаете использовать текстиль.
- Для создания PDF из Html и CSS я нашел weasyprint хорошим решением. Поскольку они не полагаются на внешний движок для рендеринга, они не зависят от зарубежных дорожных карт проекта для реализации соответствующих функций, таких как CSS-сгенерированный контент или
@page
CSS-объявления. (Но в отличие от wkhtmltopdf weasyprint не анализирует javascript).