2008-10-06 2 views
35

Я использую htmldoc какое-то время, но я столкнулся с некоторыми довольно серьезными ограничениями. Мне нужно конечное решение для работы с ящиком Linux. Я буду называть эту библиотеку/утилиту/приложение из приложения Perl, поэтому любые интерфейсы Perl будут бонусом.Как я могу автоматизировать преобразования HTML-to-PDF?

ответ

8

PrinceXML - это лучшее, что я видел (он анализирует обычный HTML, а также XML/XHTML). Как это лучше? Well, it passes the acid2 test который я думал, был довольно впечатляющим

Это, однако, довольно дорого

+2

У меня была такая же проблема. Недавно я оценил принт-XML и могу поручиться за то, что он является СЕРЬЕЗНО-удивительным приложением. Скорость и качество выхода просто невероятны. – cletus 2009-01-13 01:41:39

+0

Зачем платить много тысяч долларов, когда доступно бесплатное программное обеспечение с открытым исходным кодом, которое также проходит тест Acid 2? http://weasyprint.readthedocs.io WeasyPrint настоятельно рекомендуется. Феноменальные результаты. – FlorianB 2016-07-09 22:51:34

2

Я не утверждаю, что это «лучшее» решение, но это «решение», которое я использовал.

HTML вход ->HTML 2 PS ->PS 2 PDF -> PDF Выход

1

Это было бы общее излишеством, но вы можете скачать и установить mirth. Это механизм маршрутизации сообщений, но он имеет возможность конвертировать html в pdf, поэтому вы можете настроить его для поиска html-файла в папке, конвертировать в PDF-файл и удалить PDF-файл в той же или другой папке. Как я уже сказал, overkill, немного кривой обучения, но это бесплатно, и Java, чтобы вы могли запускать его на Linux, если хотите. И все ваше приложение perl должно было бы сделать, это удалить html в файл.

7

Я сделал несколько поисковых запросов для вас и придумал два варианта. Может быть и больше, моя стратегия Google заключалась в том, чтобы попробовать «webkit command-line pdf» и «gecko command-line pdf», в основном ищущие программы командной строки, которые встраивают два популярных механизма рендеринга с открытым исходным кодом в средства рендеринга командной строки. Вот что я нашел:

Firefox command-line printer - выводит в формате PDF и PNG

wkpdf - в то время как это для макинтош, это, вероятно, довольно портативными.

53

К сожалению, чтобы раскопать этот старый пост, но он вышел первый в моем поиске лучшего инструмента преобразования HTML/PDF. В Linux wkhtmltopdf очень хорошо (учитывается, в частности, CSS) и GPL.

+0

Чтобы поддержать вашу точку, 1) работает как шарм 2) использует движок рендеринга webkit, а qt означает, что он может извлечь выгоду из обновлений. Хотя последний RC был выпущен в феврале 2011 года. – kommradHomer 2013-04-11 13:16:52

-1

Возможно, вы захотите проверить «Службу конвертации документов» от Peernet (по адресу http://www.peernet.com/conversion-software/batch-document-converter/). Это выполняется как служба на компьютере Windows Desktop или Windows Server. Он открывает HTML-документы в веб-браузере, затем распечатывает их через драйвер печати для создания документов PDF, так что созданный документ PDF выглядит так, как если бы вы напечатали документ HTML из браузера.

1

Вы должны взглянуть на http://phantomjs.org/

преобразование может быть сделано с помощью небольшого скрипта rasterize.js, а затем выдавать

phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf 
12

WeasyPrint производит красивые PDF-файлы с возможностью выбора текста и гиперссылок.

weasyprint input.html output.pdf 

Если вы используете wkhtmltopdf вместо этого, попробуйте следующие варианты:

wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ... 
4

Там это новый обезглавленное режим, так как Chrome 59. Как и все другие решения действительно бороться с более новой (или не так ново больше) CSS-функции, такие как flexbox, это было в моем случае единственным решением для создания правильного вывода PDF.

Чтобы создать pdf-файл из локального файла html, используйте только следующую команду: chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html.

Для замены ОС Mac chrome с /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.

Единственный недостаток, который я заметил до сих пор, заключается в том, что (в настоящее время) вы не можете передать html через stdin, но создание временного файла не так уж и важно.

Для получения дополнительной информации см https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom

Update: Как выясняется, хромовые ребята, скорее всего, обеспечить некоторый вид узловой модуля для решения этой задачи, которая в конечном счете принизить обезглавленный режим (https://bugs.chromium.org/p/chromium/issues/detail?id=719921).

Лучше всего было бы использовать подход, основанный узел с помощью модуля кукловода , как документированные под https://developers.google.com/web/updates/2017/04/headless-chrome#node и распечатать страницу с помощью команды Page.printToPDF, что позволяет некоторые дополнительные настройки тоже.

Конечно, вы можете подключиться к веб-сайту консоли отладки из любой другой среды, кроме узла (например, PHP-скрипта).

Смежные вопросы