Вопрос-ответ

Converting HTML files to PDF [closed]

Преобразование HTML-файлов в PDF

Мне нужно автоматически сгенерировать PDF-файл из существующего (X) HTML-документа. Входные файлы (отчеты) используют довольно простой табличный макет, поэтому поддержка действительно навороченных JavaScript / CSS материалов, вероятно, не требуется.

Поскольку я привык работать на Java, предпочтительнее решение, которое можно легко использовать в java-проекте. Однако оно должно работать только в системах Windows.

Один из способов сделать это, который осуществим, но не обеспечивает хорошего качества вывода (по крайней мере, из коробки), - это использовать CSS2XSLFO и Apache FOP для создания PDF-файлов. Проблема, с которой я столкнулся, заключалась в том, что, хотя CSS-атрибуты преобразуются хорошо, макет таблицы довольно запутан, текст вытекает из ячейки таблицы.

Я также быстро ознакомился с Jrex, Java-API для использования движка рендеринга Gecko.

Может быть, есть способ получить отрисованную страницу из механизма рендеринга Internet Explorer и автоматически отправить ее на инструмент для печати PDF? У меня нет опыта программирования OLE в Windows, поэтому я понятия не имею, что возможно, а что нет.

У вас есть идея?

Переведено автоматически
Ответ 1

В проекте Flying Saucer XHTML renderer есть поддержка вывода XHTML в PDF. Посмотрите на пример здесь.

Ответ 2

Вы пробовали WKHTMLTOPDF?

Это простая утилита shell, реализация WebKit с открытым исходным кодом. Оба являются бесплатными.

Мы подготовили небольшое руководство здесь

РЕДАКТИРОВАТЬ ( 2017 ):

Если бы нужно было создавать что-то сегодня, я бы больше не пошел по этому пути.
Но вместо этого использовал бы http://pdfkit.org /.
Вероятно, он лишен всех зависимостей от nodejs для запуска в браузере.

Ответ 3

Ознакомьтесь с iText; это чистый Java PDF toolkit, который поддерживает чтение данных из HTML. Недавно я использовал его в проекте, когда мне нужно было извлечь контент из нашей CMS и экспортировать в виде PDF-файлов, и все это было довольно просто. Поддержка CSS и тегов стилей довольно ограничена, но таблицы отображаются без каких-либо проблем (хотя мне так и не удалось установить ширину столбца).

Создание PDF-файла из HTML происходит примерно так:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
Ответ 4

Если у вас есть средства, ничто не сравнится с Prince XML, как показано в этом видео

java