Ответ 1
Проект рендеринга Flying Saucer XHTML поддерживает вывод XHTML в PDF. Посмотрите на пример здесь.
Мне нужно автоматически генерировать PDF файл из существующего (X) HTML-документа. Входные файлы (отчеты) используют довольно простой табличный макет, поэтому поддержка действительно причудливых материалов JavaScript/CSS, вероятно, не требуется.
Поскольку я привык работать на Java, предпочтительным может быть решение, которое может быть легко использовано в java-проекте. Однако он должен работать только на системах Windows.
Один из способов сделать это, который возможен, но не обеспечивает выход хорошего качества (по крайней мере, из коробки) использует CSS2XSLFO и Apache FOP для создания файлов PDF. Проблема, с которой я столкнулся, заключалась в том, что в то время как CSS-атрибуты преобразуются красиво, таблица-макет довольно перепутана с текстом, выходящим из ячейки таблицы.
Я также быстро просмотрел Jrex, Java-API для использования механизма рендеринга Gecko.
Есть ли способ захватить визуализированную страницу из механизма рендеринга Internet Explorer и отправить ее в инструмент PDF-Printer автоматически? У меня нет опыта программирования OLE в окнах, поэтому я не знаю, что возможно, а что нет.
У вас есть идея?
EDIT: FlyingSaucer/iText выглядит очень многообещающе. Я постараюсь пойти с этим.
Спасибо за все ответы
Проект рендеринга Flying Saucer XHTML поддерживает вывод XHTML в PDF. Посмотрите на пример здесь.
Вы пробовали WKHTMLTOPDF?
Это простая утилита для оболочки, реализация WebKit с открытым исходным кодом. Оба являются бесплатными.
Мы установили небольшой учебник здесь
EDIT (2017):
Если бы сегодня было что-то строить, я больше не пошел бы по этому пути.
Но вместо этого используйте http://pdfkit.org/.
Вероятно, лишив его всех зависимостей nodejs, запустите его в браузере.
Отъезд iText; это чистый инструментарий Java PDF, который поддерживает чтение данных из 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();
Если у вас есть финансирование, ничто не сравнится с Prince XML как это видео показывает
Есть ли способ захватить сделанная страница из Интернета движок рендеринга проводника и отправить его к инструменту PDF-Printer автоматически?
Вот как работает ActivePDF, что хорошо, что вы знаете, что вы получите, и на самом деле имеет разумную поддержку стиля.
Это также один из немногих пакетов, которые я нашел (когда смотрел несколько лет назад), который фактически поддерживает различные команды CSS разрыва страницы.
К сожалению, программное обеспечение ActivePDF очень расстраивает - так как он должен запустить браузер IE в фоновом режиме для конверсий, он может быть довольно медленным, и он также не является особенно стабильным.
В настоящее время в Beta есть новая версия, которая должна быть намного лучше, но у меня на самом деле не было возможности попробовать ее, поэтому не знаю, насколько она улучшена.
Вы можете использовать безголовый Firefox с расширением. Это довольно раздражает, чтобы начать работать, но это дает хорошие результаты.
За дополнительной информацией обращайтесь к этому вопросу.
Если вы посмотрите на боковую панель вашего вопроса, вы увидите много связанных вопросов...
В вашем контексте более простым методом может быть установка драйвера печати PDF, например PDFCreator и просто распечатайте страницу на этом выходе.
Amyuni WebkitPDF может использоваться с JNI для решения только для Windows. Это библиотека преобразования HTML в PDF/XAML, бесплатная для коммерческого и некоммерческого использования.
Если выходные файлы не нужны немедленно, для лучшей масштабируемости может быть лучше иметь очередь и несколько фоновых процессов, отбирающих элементы, преобразовывать их и хранить затем в базе данных или файловой системе.
применяется обычный отказ от ответственности