Документация 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).