Рубрики
Без рубрики

Как распечатать HTML-страницу с помощью Flying Saucer (Java)

Мы постараемся, чтобы этот урок был коротким и приятным. Здесь вы можете найти простые инструкции о том, как вы можете конвертировать любой H… Помеченный java, html.

Мы постараемся, чтобы этот урок был коротким и приятным. Здесь вы можете найти простые инструкции о том, как преобразовать любую исходную страницу HTML в PDF-документ, включая все файлы ресурсов, такие как изображения (PNG, JPG, SVG), стили и скрипты.

Мы будем использовать Летающая тарелка библиотека с открытым исходным кодом. Эта библиотека использует модифицированную и более старую версию Itext.

Основными шагами здесь являются:

  • Создание CSS для печати (мы не будем описывать эти шаги, это отличается для каждой платформы и веб-страницы)
  • Создание пользовательского ITextRenderer (мы переопределим стандартный, простое изменение, позволяющее использовать PdfWriter на более ранней стадии)
  • Пользовательский пользовательский агент (мы переопределим стандартный, мы дадим еще одну опцию, чтобы включить отображение SVG-изображений в нашем сгенерированном PDF-файле)
  • Основной класс

Основной класс

Давайте начнем с Основного класса. В этом классе мы сделаем вызов страницы, чтобы получить исходный код. Например, мы будем использовать веб-страницу где я , потому что она проста и понятна. Вы можете получить исходный код несколькими способами, мы рекомендуем следующее:

  • Создание и выполнение HTTP-клиента (не требуется никакой библиотеки)
  • Использование ChromeDriver и Selenium (медленнее, но хорошо, если вам нужен контент после выполнения JS), подходит для динамического контента

После этого нам нужно вызвать метод HTMLCleaner().clean(html) для очистки HTML.

Теперь у нас есть более чистый и подготовленный HTML-код, который нам нужно преобразовать в PDF-документы. Прежде всего, вам нужно создать OutputStream с назначением вашего PDF-файла. Вы можете использовать динамическое создание PDF, чтобы убедиться, что ваш код не вызовет никаких исключений.

После этого вам нужно создать пользовательский Pdf Writer. Для этого вам нужно создать прямоугольник, формат A3 в нашем случае и документ (Itext). Используя прямоугольник и документ, получаем экземпляр writer. OutputStream должен быть документом PDF.

Когда вы закончите с этим, вам нужно инициализировать новый ITextRenderer, это будет измененный, в этом средстве визуализации вы должны передать два параметра, которые являются PdfWriter и Document, вы инициализируете это в конструкторе.

Далее вы можете добавлять или не добавлять ITextFontResolver, но вы должны добавить пользовательский пользовательский агент, который позаботится о отображении наших SVG-изображений (эта библиотека не поддерживает это по умолчанию).

И, наконец, используйте средство визуализации и вызовите функцию CreatePDF.

Пользовательский Текстовый Пользовательский Агент

Эта часть очень важна, когда вы создаете PDF-файл, поскольку эта библиотека не поддерживает отображение SVG-изображений, мы вынуждены делать это самостоятельно.

Прежде всего, вам нужно переопределить метод setimageresource и внутри вызвать нашу новую функцию, которая позаботится о отображении изображения SVG, если расширение .svg, в противном случае вызовите метод из родительского класса.

После этого вам понадобится ваша функция, в которой вы будете отображать SVG-изображение. Мы будем использовать Pdf Writer, который мы создали в основном классе, если мы используем другие, наш PDF-файл будет выглядеть неправильно.

Средство визуализации пользовательского текста

И последний шаг – это ваш пользовательский средство визуализации текста, нам это нужно, потому что мы хотим передать тот же PdfWriter в функцию create Pdf и в наш пользовательский пользовательский агент. Что вам нужно сделать, так это инициализировать _writer в конструкторе и установить writer на ITextOutputDevice.

Теперь вы готовы приступить к созданию своих PDF-файлов из HTML. Вот наш пример.

Оригинал: “https://dev.to/pashaliski/how-to-print-html-page-using-flying-saucer-java-g60”