Использование iText для преобразования HTML в PDF

Кто-нибудь знает, можно ли преобразовать HTML-страницу (URL-адрес) в PDF с помощью iText?

Если ответ «нет», то это тоже нормально, так как я перестану тратить свое время, пытаясь разобраться, и просто потрачу немного денег на один из множества компонентов, которые, как я знаю, могут :)

Заранее благодарим за ответы!

ОБНОВЛЕНИЕ: iText конвертирует HTML в PDF, но его поддержка таблиц стилей нестабильна. 5.0.6 был выпущен в феврале 2011 года и включал капитальный ремонт связанного кода с небольшими видимыми изменениями в поведении. В следующем выпуске запланированы значительные улучшения в функциональности HTML-> PDF.

Mark Storer 07.02.2011 20:47

действительно проверьте: xmlworker дополнение к iText, он поддерживает больше CSS.

Redlab 13.05.2011 04:58

ОБНОВЛЕНИЕ: нашел этот новый поток, который очень хорошо обобщает текущие параметры stackoverflow.com/questions/4055838/…

Mark 10.08.2011 08:39

Еще одно обновление: [wkhtmltopdf] code.google.com/p/wkhtmltopdf) использует механизм рендеринга webkit для компоновки (виртуального) экрана, а затем itext для преобразования его в PDF.

peteorpeter 30.08.2011 22:58
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
41
4
133 967
8

Ответы 8

В итоге я использовал ABCPdf из webSupergoo. Он работает очень хорошо, и примерно за 350 долларов он сэкономил мне часы и часы, основываясь на ваших комментариях выше. Еще раз спасибо Дэниелу и Братчу за ваши комментарии.

Когда в начале этого года мне понадобилось преобразование HTML в PDF, я попробовал пробную версию конвертера HTML в PDF Winnovative (я думаю, что ExpertPDF - это тот же продукт). Это сработало отлично, поэтому мы купили лицензию в этой компании. После этого я не буду вдаваться в подробности.

Может быть, вы могли бы попробовать:

http://www.allcolor.org/YaHPConverter/

Я думаю это именно то, что вы искали

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

Alex Stoddard 17.03.2011 23:47

Кто-нибудь знает, как улучшить качество изображения в сгенерированных файлах PDF?

user584397 03.05.2013 14:25

@ user584397 увеличьте изображение и уменьшите его, изображение будет встроено в PDF.

ug_ 11.01.2014 03:39

Используйте HTMLWorker от iText

Пример

HTMLWorker устарел. Его преемник, XMLWorker, скоро исчезнет. Текущее состояние - это iText 7 + pdfHTML.
Amedee Van Gasse 04.09.2017 12:59

На самом деле ответ на ваш вопрос двоякий. Прежде всего вам нужно указать, что вы собираетесь делать с визуализированным 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, таких как абзац, таблица и т. д.

Joris Schellekens 12.01.2018 17:34

Самый простой способ сделать это - использовать 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>

Другие вопросы по теме