FOSS HTML в PDF в Python, .Net или командной строке?
-
11-09-2019 - |
Вопрос
Я гуглил, насколько это возможно, проверял stackoverflow несколько раз, и все же не могу найти хорошего конвертер html в pdf который может обрабатывать CSS.Существует ли бесплатное решение с открытым исходным кодом (даже для коммерческого использования)?Существует множество решений в широком диапазоне цен, но я искал что-то с открытым исходным кодом и бесплатное.Я попробовал PISA для Python, и он работает довольно хорошо, но для коммерческого использования его нельзя использовать бесплатно.Есть ли что-нибудь для .Net?Я не добился успеха с iTextSharp.
Решение
Я использовал wkhtmltopdf в нескольких проектах. http://code.google.com/p/wkhtmltopdf/.Он использует механизм рендеринга Webkit, который поддерживает браузер Safari.Вы получите полностью обновленный рендеринг, как в веб-браузере, с CSS и всем остальным.
О, и это с открытым исходным кодом.
Другие советы
Я не нашел хорошего решения FOSS, но могу сказать, что ПринцXML работает очень хорошо, предоставляет немало функций через командную строку и имеет очень разумную цену.IIRC, бесплатная версия добавляет титульную страницу к каждому создаваемому вами PDF-файлу, что может быть для вас срывом сделки, а может и не быть, но вам обязательно стоит ее проверить.
Тот факт, что вы спрашиваете о C#/.NET, заставляет меня предположить, что вы работаете на платформе Windows, поэтому это может не сработать для вас, но я добился приличного успеха, используя html2ps в сочетании с ps2pdf:
#! /bin/sh
TEMPDIR="/tmp"
html2ps -u $1 > $TEMPDIR'temp.ps'
ps2pdf $TEMPDIR'temp.ps' $2
Это действительно обрабатывает CSS (по крайней мере, все CSS, которые я использовал до сих пор), хотя есть некоторые ограничения, если я правильно помню, в отношении некоторых встроенных стилей.
ПРИМЕЧАНИЕ:Я думаю, что оба они доступны в Windows через Cygwin, если для вас это приемлемое решение.
Вы также можете попробовать другой подход, например использование виртуальных принтеров.
Я добился ошеломительного успеха, используя инструмент xhtml2pdf PISA, который можно найти здесь: http://www.xhtml2pdf.com/
Пусть вас не пугает часть «xhtml», она принимает широкий диапазон входных данных в формате HTML и создает PDF-файлы в соответствии с CSS, включая расширения печати CSS.