Мы постараемся, чтобы этот урок был коротким и приятным. Здесь вы можете найти простые инструкции о том, как преобразовать любую исходную страницу 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”