Кто-нибудь знает, можно ли преобразовать HTML-страницу (URL-адрес) в PDF с помощью iText?
Если ответ «нет», то это тоже нормально, так как я перестану тратить свое время, пытаясь разобраться, и просто потрачу немного денег на один из множества компонентов, которые, как я знаю, могут :)
Заранее благодарим за ответы!
действительно проверьте: xmlworker дополнение к iText, он поддерживает больше CSS.
ОБНОВЛЕНИЕ: нашел этот новый поток, который очень хорошо обобщает текущие параметры stackoverflow.com/questions/4055838/…
Еще одно обновление: [wkhtmltopdf] code.google.com/p/wkhtmltopdf) использует механизм рендеринга webkit для компоновки (виртуального) экрана, а затем itext для преобразования его в PDF.






В итоге я использовал ABCPdf из webSupergoo. Он работает очень хорошо, и примерно за 350 долларов он сэкономил мне часы и часы, основываясь на ваших комментариях выше. Еще раз спасибо Дэниелу и Братчу за ваши комментарии.
Когда в начале этого года мне понадобилось преобразование HTML в PDF, я попробовал пробную версию конвертера HTML в PDF Winnovative (я думаю, что ExpertPDF - это тот же продукт). Это сработало отлично, поэтому мы купили лицензию в этой компании. После этого я не буду вдаваться в подробности.
Может быть, вы могли бы попробовать:
Я думаю это именно то, что вы искали
http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
http://code.google.com/p/flying-saucer
Flying Saucer's primary purpose is to render spec-compliant XHTML and CSS 2.1 to the screen as a Swing component. Though it was originally intended for embedding markup into desktop applications (things like the iTunes Music Store), Flying Saucer has been extended work with iText as well. This makes it very easy to render XHTML to PDFs, as well as to images and to the screen. Flying Saucer requires Java 1.4 or higher.
Ссылка на летающую тарелку (xhtmlrenderer) теперь должна быть: code.google.com/p/flying-saucer
Кто-нибудь знает, как улучшить качество изображения в сгенерированных файлах PDF?
@ user584397 увеличьте изображение и уменьшите его, изображение будет встроено в PDF.
Используйте HTMLWorker от iText
HTMLWorker устарел. Его преемник, XMLWorker, скоро исчезнет. Текущее состояние - это iText 7 + pdfHTML.
На самом деле ответ на ваш вопрос двоякий. Прежде всего вам нужно указать, что вы собираетесь делать с визуализированным HTML: сохранить его в новый файл PDF или использовать в другом контексте визуализации (т.е. добавить его в какой-либо другой документ, который вы создаете).
Первое относительно легко сделать с помощью фреймворка Flying Saucer, который можно найти здесь: https://github.com/flyingsaucerproject/flyingsaucer
Последнее на самом деле представляет собой гораздо более сложную проблему, которая требует дальнейшей классификации.
Используя iText, вы не сможете (по крайней мере, тривиально) объединить элементы iText (например, Paragraph, Phrase, Chunk и т. д.) С сгенерированным HTML. Вы можете найти выход из этого, используя метод ContentByteaddTemplate и генерируя HTML для этого шаблона.
Если вы, с другой стороны, хотите пометить сгенерированный HTML чем-то вроде водяных знаков, дат и т.п., вы можете сделать это с помощью iText.
Итак, итоги: вы не можете тривиально интегрировать визуализированный HTML в другие контексты создания pdf, но вы можете визуализировать HTML непосредственно в пустой документ PDF.
с iText pdfHTML на самом деле существует метод renderElements, который делает именно то, что, по вашему мнению, невозможно. Он отображает синтаксис HTML для блоков элементов iText, таких как абзац, таблица и т. д.
Самый простой способ сделать это - использовать pdfHTML. Это надстройка iText7, которая преобразует HTML5 (+ CSS3) в синтаксис pdf.
Код довольно прост:
HtmlConverter.convertToPdf(
"<b>This text should be written in bold.</b>", // html to be converted
new PdfWriter(
new File("C://users/mark/documents/output.pdf") // destination file
)
);
Чтобы узнать больше, перейдите на http://itextpdf.com/itext7/pdfHTML
Использовать библиотеку itext:
Вот пример кода. Он работает отлично:
String htmlFilePath = filePath + ".html";
String pdfFilePath = filePath + ".pdf";
// create an html file on given file path
Writer unicodeFileWriter = new OutputStreamWriter(new FileOutputStream(htmlFilePath), "UTF-8");
unicodeFileWriter.write(document.toString());
unicodeFileWriter.close();
ConverterProperties properties = new ConverterProperties();
properties.setCharset("UTF-8");
if (url.contains(".kr") || url.contains(".tw") || url.contains(".cn") || url.contains(".jp")) {
properties.setFontProvider(new DefaultFontProvider(false, false, true));
}
// convert the html file to pdf file.
HtmlConverter.convertToPdf(new File(htmlFilePath), new File(pdfFilePath), properties);
Зависимости Maven
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.6</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.3</version>
</dependency>
ОБНОВЛЕНИЕ: iText конвертирует HTML в PDF, но его поддержка таблиц стилей нестабильна. 5.0.6 был выпущен в феврале 2011 года и включал капитальный ремонт связанного кода с небольшими видимыми изменениями в поведении. В следующем выпуске запланированы значительные улучшения в функциональности HTML-> PDF.