Konverter zur Feinabstimmung – Konvertieren von HTML, MHTML, EPUB und SVG in Java
Mit Aspose.HTML for Java können Sie HTML auf verschiedene Arten in verschiedene gängige Formate konvertieren:
- Durch die Verwendung der
convertHTML() Methoden der Klasse
Converter
. Dies ist die gebräuchlichste Methode, um HTML in verschiedene Formate zu konvertieren. - Durch Verwendung der Methode
renderTo(
device
) der KlasseHTMLDocument
oder der Methoderender()
der Klasse Renderer. Diese alternative Methode zum Rendern von HTML-Dokumenten kann Ihnen mehr Kontrolle über den HTML-Rendering-Prozess in Ihrer Java-Anwendung geben.
Rendering-Gerät
Das Rendering-(Ausgabe-)Gerät kapselt eine 2D-Zeichenfläche, deren API über die Schnittstelle IDevice implementiert wird. Derzeit implementiert Aspose.HTML for Java API eine Reihe von Rendering-Geräten – PdfDevice, XpsDevice, DocDevice und ImageDevice, die zur Erzeugung von PDF-, XPS-, DOCX- bzw. Bilddateiformaten verwendet werden.
Das nächste Beispiel zeigt, wie das PdfDevice verwendet wird, um ein HTML-Dokument in eine PDF-Datei umzuwandeln. Der Prozess erfolgt mit den Standard-Rendering-Optionen:
- Laden Sie ein HTML-Dokument.
- Erstellen Sie eine Instanz der PdfDevice-Klasse mit einem der PdfDevice() Konstruktoren.
- Aufruf der Methode
renderTo(
device
) der KlasseHTMLDocument
.
1// Render HTML to PDF using Java
2
3// Prepare HTML code
4String code = "<span>Hello, World!!</span>";
5
6// Initialize an HTML document from HTML code
7HTMLDocument document = new HTMLDocument(code, ".");
8
9// Create an instance of the PdfDevice class and specify the output file to render
10PdfDevice device = new PdfDevice("output.pdf");
11
12// Render HTML to PDF
13document.renderTo(device);
Rendering-Optionen
Rendering-Optionen geben Ihnen zusätzliche Kontrolle über das Ausgabegerät. Jedes Rendering-Gerät PdfDevice, XpsDevice und ImageDevice hat einen eigenen Satz von Optionen, die mit den Klassen PdfRenderingOptions, XpsRenderingOptions, DocRenderingOptions bzw. ImageRenderingOptions implementiert sind. Sie können z. B. die Seitengröße ändern, die Ränder und die Hintergrundfarbe anpassen, die Dateigröße durch Anpassung der Bildqualität und -auflösung verringern, ein Sicherheitskennwort festlegen, wenn Sie PdfDevice verwenden, usw.
Nachfolgend wird demonstriert, wie die Seitengröße bei der Umwandlung von HTML in PDF mithilfe von PdfRenderingOptions
angepasst werden kann:
1// Render HTML to PDF in Java with custom page size
2
3// Prepare HTML code
4String code = "<span>Hello, World!!</span>";
5
6// Initialize a HTML document from the HTML code
7HTMLDocument document = new HTMLDocument(code, ".");
8
9// Create an instance of PdfRenderingOptions and set a custom page-size
10PdfRenderingOptions options = new PdfRenderingOptions();
11PageSetup pageSetup = new PageSetup();
12Page anyPage = new Page();
13anyPage.setSize(
14 new Size(
15 Length.fromInches(5),
16 Length.fromInches(2)
17 )
18);
19pageSetup.setAnyPage(anyPage);
20options.setPageSetup(pageSetup);
21
22// Create a PDF Device and specify options and output file
23PdfDevice device = new PdfDevice(options, "output.pdf");
24
25// Render HTML to PDF
26document.renderTo(device);
Allgemeine Optionen
Rendering Options gibt Ihnen zusätzliche Kontrolle über das Ausgabegerät. Das Paket com.aspose.html.rendering besteht aus zahlreichen Renderer-Objekten und entsprechenden Low-Level-Optionen-Klassen, die für das Rendering von Dokumenten in der IDevice-Implementierung verantwortlich sind. Die Klassen RenderingOptions und CssOptions repräsentieren Rendering-Optionen, oder mit anderen Worten, allgemeine Rendering-Optionen.
die Allgemeinen Optionen gelten für alle Rendering-Geräte und alle Rendering-Verfahren von HTML bis PDF, XPS, DOCX und Bilder. Schauen wir uns einige von ihnen an:
Horizontale und vertikale Auflösung
Die Einstellungen für die horizontale und vertikale Auflösung sind entscheidend für eine qualitativ hochwertige Ausgabe beim Rendern von HTML in andere Formate, z. B. HTML in PDF. Horizontale und vertikale Auflösungen werden in Pixeln pro Zoll (dpi) gemessen (abrufen und einstellen), mit einem Standardwert von 300 dpi. Diese Einstellung gewährleistet scharfe Details und eine gleichmäßige Darstellung von Elementen wie Text, Bildern und horizontalen und vertikalen Linien in PDF.
Das folgende Beispiel zeigt, wie die Auflösung der resultierenden PDF-Datei gesteuert werden kann, was sich letztlich auf ihre Größe und Qualität auswirkt:
1// Render HTML to PDF with custom resolution using Java
2
3// Prepare HTML code and save it to a file
4String code = "< style >\n" +
5 " p\n" +
6 " {\n" +
7 " background:\n" +
8 " blue;\n" +
9 " }\n" +
10 " @media(min - resolution:300dpi)\n" +
11 " {\n" +
12 " p\n" +
13 " {\n" +
14 " /* high resolution screen color */\n" +
15 " background:\n" +
16 " green\n" +
17 " }\n" +
18 " }\n" +
19 " </style >\n" +
20 " <p > Hello World !! </p >\n";
21
22try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
23 fileWriter.write(code);
24}
25
26// Create an instance of the HTMLDocument class
27HTMLDocument document = new HTMLDocument("document.html");
28
29// Create options for low-resolution screens
30PdfRenderingOptions options = new PdfRenderingOptions();
31options.setHorizontalResolution(Resolution.to_Resolution(50d));
32options.setVerticalResolution(Resolution.to_Resolution(50d));
33
34// Create an instance of the PdfDevice
35PdfDevice device = new PdfDevice(options, "output_resolution_50.pdf");
36
37// Render HTML to PDF
38document.renderTo(device);
39
40// Create options for high-resolution screens
41options = new PdfRenderingOptions();
42options.setHorizontalResolution(Resolution.to_Resolution(300d));
43options.setVerticalResolution(Resolution.to_Resolution(300d));
44
45// Create an instance of PDF device
46device = new PdfDevice(options, "output_resolution_300.pdf");
47
48// Render HTML to PDF
49document.renderTo(device);
CSS Media Type
Der CSS-Medientyp ist ein wichtiges Merkmal, das angibt, wie ein Dokument auf verschiedenen Medien dargestellt werden soll: auf dem Bildschirm, auf Papier, mit einer Blindenschriftvorrichtung usw. Es gibt nur wenige Möglichkeiten, den Medientyp für eine Stilvorlage festzulegen: über verknüpfte Stilvorlagen oder Inline-Stilvorlagen:
Linked Style Sheet
1 <link rel="stylesheet" type="text/css" media="print" href="style.javas">
Inline Style Sheet
1<style type="text/css">
2@media print {
3 body{ color: #000000; }
4}
5</style>
Aspose.HTML for Java unterstützt diese Funktion, so dass Sie HTML-Dokumente so konvertieren können, wie sie auf dem Bildschirm oder im Druck aussehen, indem Sie die entsprechenden Medientypen und Stilvorlagen anwenden. Das folgende Beispiel zeigt, wie man den Medientyp einrichtet:
1// Render HTML to PDF with custom MediaType settings with Java
2
3// Prepare HTML code
4String code = "<span>Hello, World!!</span>";
5
6// Initialize an HTML document from the HTML code
7HTMLDocument document = new HTMLDocument(code, ".");
8
9// Create an instance of the PdfRenderingOptions class
10PdfRenderingOptions options = new PdfRenderingOptions();
11// Set the 'screen' media-type
12options.getCss().setMediaType(MediaType.Screen);
13
14// Create a PDF Device and specify options and output file
15PdfDevice device = new PdfDevice(options, "output.pdf");
16
17// Render HTML to PDF
18document.renderTo(device);
Bitte beachten Sie, dass der Standardwert von
CssOptions.MediaType Print
ist. Dies bedeutet, dass das Dokument unter Anwendung von Stilvorlagen für das Druckgerät konvertiert wird und wie auf Papier aussieht (Sie können die Druckvorschau Ihres Browsers verwenden, um den Unterschied zu sehen). Wenn Sie möchten, dass das Dokument so aussieht, wie es auf dem Bildschirm dargestellt wird, sollten Sie
MediaType.Screen verwenden.
Hintergrundfarbe - Background Color
Die Einstellung Hintergrundfarbe ist eine wichtige Funktion zur Anpassung des Erscheinungsbildes des gerenderten Dokuments. Sie ermöglicht es Entwicklern, die Farbe festzulegen, mit der der Hintergrund jeder Seite in der Ausgabedatei gefüllt werden soll. Standardmäßig ist diese Eigenschaft auf Transparent eingestellt, was bedeutet, dass der Hintergrund keine sichtbare Füllung hat, es sei denn, dies wird ausdrücklich angegeben. Die Anpassung der Hintergrundfarbe kann die Lesbarkeit eines Dokuments verbessern, Branding-Anforderungen erfüllen oder visuell ansprechende Designs erstellen.
1// Render HTML to PDF with custom background color using Java
2
3// Prepare HTML code and save it to a file
4String code = "<p>Hello, World!!</p>";
5try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
6 fileWriter.write(code);
7}
8
9// Create an instance of the HTMLDocument class
10HTMLDocument document = new HTMLDocument("document.html");
11
12// Initialize options with 'cyan' as a background-color
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.setBackgroundColor(Color.getCyan());
15
16// Create an instance of the PdfDevice class
17PdfDevice device = new PdfDevice(options, "output.pdf");
18
19// Render HTML to PDF
20document.renderTo(device);
Seite einrichten - Page Setup
Die Seiteneinrichtung ist eine Reihe von Parametern, die das Layout einer gedruckten Seite bestimmen. Diese Parameter umfassen alles von der Seitengröße, den Rändern und der automatischen Größenanpassung bis hin zu den @Seitenprioritätsregeln. Mithilfe dieser Parameter können Sie problemlos ein individuelles Layout für jede Seite einrichten.
In einigen Fällen kann der Inhalt der HTML-Seite breiter sein als die mit den Optionen festgelegte Seitengröße. Wenn Sie den Seiteninhalt nicht abschneiden wollen, können Sie AdjustToWidestPage
der Klasse
PageSetup verwenden. Das folgende Beispiel zeigt, wie man die Seitengröße an den Inhalt anpasst.
1// Render HTML to PDF and adjust to the widest page with Java
2
3// Prepare HTML code
4String code = " <style>\n" +
5 " div {\n" +
6 " page - break -after:always;\n" +
7 " }\n" +
8 " </style >\n" +
9 " <div style = 'border: 1px solid red; width: 400px' > First Page</div >\n" +
10 " <div style = 'border: 1px solid red; width: 600px' > Second Page</div >\n";
11// Initialize an HTML document from HTML code
12HTMLDocument document = new HTMLDocument(code, ".");
13
14// Create an instance of the PdfRenderingOptions class and set a custom page-size
15PdfRenderingOptions options = new PdfRenderingOptions();
16options.getPageSetup().setAnyPage(new Page(new Size(500, 200)));
17
18// Enable auto-adjusting for the page size
19options.getPageSetup().setAdjustToWidestPage(true);
20
21// Create an instance of the PdfDevice class and specify options and output file
22PdfDevice device = new PdfDevice(options, "output.pdf");
23
24// Render HTML to PDF
25document.renderTo(device);
PDF-Optionen
Die Klasse PdfRenderingOptions gibt Entwicklern umfassende Kontrolle über den Rendering-Prozess bei der Konvertierung von HTML in PDF. Sie ermöglicht die Anpassung aller allgemeinen Optionen und bietet darüber hinaus spezielle Optionen für die Umwandlung in das PDF-Format – DocumentInfo, Encryption, FormFieldBehaviour und JpegQuality.
Das folgende Beispiel veranschaulicht die Funktionalität des Festlegens von Berechtigungen für eine PDF-Datei.
1// Render HTML to PDF with password protection using Java
2
3// Prepare HTML code
4String code = "<div>Hello, World!!</div>";
5
6// Initialize an HTML document from the HTML code
7HTMLDocument document = new HTMLDocument(code, ".");
8
9// Create the instance of the PdfRenderingOptions class
10PdfRenderingOptions options = new PdfRenderingOptions();
11
12// Set file permissions
13options.setEncryption(
14 new PdfEncryptionInfo(
15 "user_pwd",
16 "owner_pwd",
17 PdfPermissions.PrintDocument,
18 PdfEncryptionAlgorithm.RC4_128
19 )
20);
21
22// Create a PDF Device and specify options and output file
23PdfDevice device = new PdfDevice(options, "output.pdf");
24
25// Render HTML to PDF
26document.renderTo(device);
Bild-Optionen
mit ImageRenderingOptions können Sie eine Vielzahl von Einstellungen vornehmen, von der Glättung (Antialiasing) über die Bildauflösung und -formate bis hin zur Bildkompression. Das folgende Beispiel zeigt, wie die Auflösung und das Antialiasing für das Ergebnisbild geändert werden können:
1// Render HTML to JPG with custom resolution and antialiasing settings with Java
2
3// Prepare HTML code
4String code = "<div>Hello, World!!</div>";
5
6// Initialize an instance of the HTMLDocument class based on prepared code
7HTMLDocument document = new HTMLDocument(code, ".");
8
9// Create an instance of the ImageRenderingOptions class
10ImageRenderingOptions options = new ImageRenderingOptions();
11options.setFormat(ImageFormat.Jpeg);
12
13// Disable smoothing mode
14options.setSmoothingMode(SmoothingMode.None);
15
16// Set the image resolution as 75 dpi
17options.setVerticalResolution(Resolution.fromDotsPerInch(75));
18options.setHorizontalResolution(Resolution.fromDotsPerInch(75));
19
20// Create an instance of the ImageDevice class
21ImageDevice device = new ImageDevice(options, "output.jpg");
22
23// Render HTML to Image
24document.renderTo(device);
Renderer
Während die
renderTo(device
) Methode der
Document Klasse Ihnen die Möglichkeit gibt, ein einzelnes Dokument an das Ausgabegerät zu senden, können Sie mit den
Renderer Instanzen direkt mehrere Dateien auf einmal senden. Aspose.HTML for Java bietet die folgende Implementierung von Renderern:
HtmlRenderer,
SvgRenderer,
MhtmlRenderer und
EpubRenderer, die jeweils zum Rendern von HTML-, SVG-, MHTML- und EPUB-Dokumenten verwendet werden.
Das nächste Beispiel zeigt, wie man HtmlRenderer
verwendet, um mehrere HTML-Dokumente zu rendern:
1// Merge HTML to PDF using Java
2
3// Prepare HTML code
4String code1 = "<br><span style='color: green'>Hello, World!!</span>";
5String code2 = "<br><span style='color: blue'>Hello, World!!</span>";
6String code3 = "<br><span style='color: red'>Hello, World!!</span>";
7
8// Create three HTML documents to merge later
9HTMLDocument document1 = new HTMLDocument(code1, ".");
10HTMLDocument document2 = new HTMLDocument(code2, ".");
11HTMLDocument document3 = new HTMLDocument(code3, ".");
12
13// Create an instance of HTML Renderer
14HtmlRenderer renderer = new HtmlRenderer();
15
16// Create an instance of the PdfDevice class
17PdfDevice device = new PdfDevice("output.pdf");
18
19// Merge all HTML documents to PDF
20renderer.render(device, new HTMLDocument[]{document1, document2, document3});
Zeitüberschreitung einstellen
Eine weitere wichtige Funktion, die für Renderer zur Verfügung steht, ist die Einstellung der Zeitüberschreitung. Damit können Sie festlegen, wie lange Sie warten wollen, bis alle internen Prozesse im Zusammenhang mit dem Lebenszyklus eines Dokuments abgeschlossen sind, z. B. das Laden von Ressourcen, aktive Zeitgeber usw. Natürlich können Sie eine unendliche Wartezeit angeben. Wenn das Dokument jedoch ein Skript mit einer Endlosschleife enthält, werden Sie unendlich lange warten müssen. Das folgende Beispiel zeigt, wie man die Methode
render(device
, timeout
, documents
mit dem Parameter timeout
verwendet:
1// Render HTML to PDF with timeout settings using Java
2
3// Prepare HTML code
4String code = "< script >\n" +
5 " var count = 0;\n" +
6 " setInterval(function()\n" +
7 " {\n" +
8 " var element = document.createElement('div');\n" +
9 " var message = (++count) + '. ' + 'Hello, World!!';\n" +
10 " var text = document.createTextNode(message);\n" +
11 " element.appendChild(text);\n" +
12 " document.body.appendChild(element);\n" +
13 " },1000);\n" +
14 "</script >\n";
15
16// Initialize an HTML document based on prepared HTML code
17HTMLDocument document = new HTMLDocument(code, ".");
18
19// Create an instance of HTML Renderer
20HtmlRenderer renderer = new HtmlRenderer();
21
22// Create an instance of the PdfDevice class
23PdfDevice device = new PdfDevice("output.pdf");
24
25// Render HTML to PDF
26renderer.render(device, 5, document);
Schlussfolgerung
Aspose.HTML for Java ist eine leistungsfähige und flexible Bibliothek für die Umwandlung von HTML, MHTML, EPUB und SVG in verschiedene Formate wie PDF, XPS, DOCX und Bilder. Die Klasse Converter
ist schnell und einfach zu benutzen für einfache Aufgaben. Wenn Sie jedoch mehr Kontrolle über die Rendering-Optionen benötigen, verwenden Sie die Methode renderTo(device)
.
Mit einer breiten Palette von Rendering-Optionen und konfigurierbaren Funktionen haben Entwickler die volle Kontrolle über die Ausgabe, einschließlich Auflösung, Seiteneinstellungen, CSS-Medientypen und gerätespezifische Konfigurationen. Die Flexibilität der API, die sich in der Möglichkeit zeigt, mehrere Renderer zu verwenden, allgemeine und formatspezifische Optionen zu konfigurieren und sogar Timeouts zu verwalten, macht sie zu einer hervorragenden Wahl für die Erstellung hochwertiger, benutzerdefinierter Dokumente.