Использование iText для преобразования HTML в PDF
Кто-нибудь знает, можно ли конвертировать HTML-страницу (url) в PDF с помощью iText?
Если ответ "нет", это нормально, так как я перестану тратить время на то, чтобы попытаться его обработать и просто потратить немного денег на один из нескольких компонентов, которые, как я знаю, могут:)
Заранее благодарим за ваши ответы!
Ответы
Ответ 1
Я думаю, это именно то, что вы искали
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 - отображать на XHTML и CSS 2.1 соответствующие спецификации как компонент Swing. Хотя он был первоначально предназначен для внедрения разметки в настольные приложения (например, в iTunes Music Store), Flying Saucer также расширил работу с iText. Это упрощает визуализацию XHTML для PDF файлов, а также изображений и экрана. Для Flying Saucer требуется Java 1.4 или выше.
Ответ 2
Я закончил использование ABCPdf из webSupergoo.
Он работает очень хорошо, и примерно за 350 долларов он спас меня часы и часы, основываясь на ваших комментариях выше.
Еще раз спасибо Daniel и Bratch за ваши комментарии.
Ответ 3
Самый простой способ сделать это - использовать 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
Ответ 4
Ответ на ваш вопрос на самом деле в два раза. Прежде всего, вам нужно указать, что вы собираетесь делать с визуализированным HTML: сохранить его в новом PDF файле или использовать его в другом контексте рендеринга (т.е. Добавить его к другому документу, который вы создаете).
Первый сравнительно легко выполняется с использованием фреймворка Flying Saucer, который можно найти здесь: https://github.com/flyingsaucerproject/flyingsaucer
Последнее на самом деле представляет собой гораздо более всеобъемлющую проблему, которую необходимо классифицировать дальше.
Используя iText, вы не сможете (по крайней мере, тривиально) объединить элементы iText (т.е. Paragraph
, Phrase
, Chunk
и т.д.) Сгенерированным HTML. Вы можете избавиться от этого, используя метод ContentByte
addTemplate
и создав HTML для этого шаблона.
Если вы, с другой стороны, хотите штамповать сгенерированный HTML с чем-то вроде водяных знаков, дат или тому подобного, вы можете сделать это с помощью iText.
Итак, нижняя строка: вы не можете тривиально интегрировать отображаемый HTML в другие контексты генерации PDF, но вы можете визуализировать HTML напрямую в пустой документ PDF.
Ответ 5
Используйте itext libray:
Вот пример кода. Он отлично работает:
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>
Ответ 6
Использование iText HTMLWorker
Пример
Ответ 7
Когда мне понадобилось преобразование HTML в PDF в начале этого года, я попробовал пробную версию Winnovative HTML для конвертера PDF (я думаю, что ExpertPDF - это тот же продукт). Он отлично работал, поэтому мы приобрели лицензию у этой компании. После этого я не углубляюсь в это.
Ответ 8
Возможно, вы могли бы попробовать:
http://www.allcolor.org/YaHPConverter/