У цій статті ми покажемо, як генерувати PDF з HTML за допомогою Java. Ви можете легко маніпулювати та рендерити HTML‑документи, включаючи CSS‑стилі.
Aspose.HTML for Java
дозволяє вашим застосункам виконувати широкий спектр завдань з маніпуляції HTML і підтримує HTML5, CSS3, SVG та функції HTML Canvas. За допомогою нашого API ви можете завантажувати веб‑сторінки, аналізувати, редагувати вміст та зберігати і конвертувати сторінки.
Популярні формати, які ви можете обробляти: XHTML, MHTML, SVG, MD, PDF, XPS, EPUB, PNG, TIFF, JPEG, BMP та інші.
PDF from HTML in Java
Багатий набір функцій
Aspose.HTML for Java пропонує безліч можливостей у різних областях:
• Document object model — дозволяє редагувати, створювати та видаляти вузли і побудований згідно офіційної документації HTML.
• High-performance converters. Для отримання додаткової інформації про підтримувані формати файлів відвідайте 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;
// Для повних прикладів і файлів даних, будь ласка, перейдіть до 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 відповідно до ваших потреб, найкращим рішенням є наше [Платне консультування].