Создание PDF из HTML с помощью Java [Пошагово]
Эта статья покажет, как генерировать PDF из HTML с помощью Java. Вы сможете легко манипулировать и рендерить HTML‑документы, включая CSS‑стили.
Aspose.HTML для Java
позволяет вашим приложениям выполнять широкий спектр задач по работе с HTML и поддерживает HTML5, CSS3, SVG и функции HTML Canvas. С помощью нашего API вы можете загружать веб‑страницы, анализировать, редактировать содержимое, а также сохранять и конвертировать страницы.
Популярные форматы, которые можно обрабатывать: XHTML, MHTML, SVG, MD, PDF, XPS, EPUB, PNG, TIFF, JPEG, BMP и другие.
Широкий набор функций
Aspose.HTML for Java предлагает множество возможностей в различных областях:
• Document object model — позволяет редактировать, создавать и удалять узлы и построен в соответствии с официальной HTML‑документацией.
• Высокопроизводительные конвертеры. Для получения дополнительной информации о поддерживаемых форматах файлов посетите статьи Features List
или Converting
.
• Обработка CSS, JavaScript и других встроенных форматов.
Создание PDF из HTML одной строкой кода Java
Вы можете легко генерировать PDF из HTML в вашем Java‑приложении буквально одной строкой кода, используя статические методы класса Converter .
// Invoke the ConvertHTML method to convert the HTML to PDF.
com.aspose.html.converters.Converter.convertHTML(
"<span>Hello World!!</span>",
".",
new com.aspose.html.saving.PdfSaveOptions(),
"output.pdf"
);
Создание PDF из HTML построчно с помощью Java
Ниже перечислены шаги для построчного создания PDF из HTML:
- С помощью класса HtmlDocument сначала загрузите HTML‑файл.
- Затем создайте экземпляр PdfSaveOptions .
- С помощью метода ConvertHTML() класса Converter сохраните HTML как PDF‑файл. Вам потребуется передать HTMLDocument , PdfSaveOptions и путь к выходному файлу в метод ConvertHTML() для генерации PDF из HTML.
// Prepare an HTML code and save it to the file.
String code = "<span>Hello World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
fileWriter.write(code);
}
// Initialize an HTML document from the file
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("document.html");
try {
// Initialize PdfSaveOptions
com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();
// Convert HTML to PDF
com.aspose.html.converters.Converter.convertHTML(
document,
options,
"output.pdf"
);
} finally {
if (document != null) {
document.dispose();
}
}
Настройка процесса рендеринга с помощью параметра Save
Вы можете настроить процесс рендеринга с помощью PdfSaveOptions и указать page size , file permissions , margins , CSS media type и многое другое. В примере ниже показано, как использовать PdfSaveOptions для создания PDF‑файла с пользовательским размером страницы и цветом фона:
// Prepare an HTML code and save it to the file
String code = "<span>Hello</span> <span>World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
fileWriter.write(code);
}
// Set A5 as a page-size and change the background color to green
com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();
com.aspose.html.rendering.PageSetup pageSetup = new com.aspose.html.rendering.PageSetup();
com.aspose.html.drawing.Page anyPage = new com.aspose.html.drawing.Page();
anyPage.setSize(
new com.aspose.html.drawing.Size(
com.aspose.html.drawing.Length.fromInches(8.3f),
com.aspose.html.drawing.Length.fromInches(5.8f)
)
);
pageSetup.setAnyPage(anyPage);
options.setPageSetup(pageSetup);
options.setBackgroundColor(com.aspose.html.drawing.Color.getGreen());
// Convert HTML document to PDF
com.aspose.html.converters.Converter.convertHTML(
"document.html",
options,
"output.pdf"
);
В статье Fine-Tuning Converters вы найдёте дополнительную информацию о PdfSaveOptions .
Провайдер выходного потока
Вы можете реализовать интерфейс MemoryStreamProvider
, если хотите сохранять файлы в удалённом хранилище, например в облаке или базе данных.
Интерфейс MemoryStreamProvider предназначен как объект‑обратный вызов для создания потока и освобождения ранее созданного потока после рендеринга страницы или документа.
Мы покажем пример использования MemoryStreamProvider ниже:
package com.aspose.html.examples.java;
// For complete examples and data files, please go to https://github.com/aspose-html/Aspose.HTML-for-Java
public class MemoryStreamProvider implements java.io.Closeable {
// List of InputStream objects created during the document rendering
public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();
@Override
public void close() throws java.io.IOException {
for (java.io.InputStream stream : lStream) {
stream.close();
}
}
}
// Create an instance of MemoryStreamProvider
try (MemoryStreamProvider streamProvider = new MemoryStreamProvider()) {
// Initialize an HTML document
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("<span>Hello World!!</span>", ".");
try {
// Convert HTML to PDF by using the MemoryStreamProvider
com.aspose.html.converters.Converter.convertHTML(
document,
new com.aspose.html.saving.PdfSaveOptions(),
streamProvider.lStream
);
// Get access to the memory stream that contains the result data
java.io.InputStream inputStream = streamProvider.lStream.stream().findFirst().get();
// Flush the result data to the output file
try (java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream("output.pdf")) {
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
fileOutputStream.write(buffer);
}
} finally {
if (document != null) {
document.dispose();
}
}
}
Aspose предоставляет техническую поддержку для всех своих продуктов, включая статьи базы знаний
, документацию
, блог
, примеры кода
, и демо
, а также Бесплатную поддержку
и высокодоступную Платную поддержку
.
Если вам нужны эксперты, которые будут работать вместе с вами и помогут внедрить Aspose.HTML for Java в соответствии с вашими требованиями, лучшим решением будет наша Платные консультации
.