Convertisseurs à réglage fin – Convertir HTML, MHTML, EPUB et SVG en Java
Aspose.HTML for Java vous permet de convertir HTML en divers formats populaires de plusieurs manières :
- En utilisant les méthodes
convertHTML() de la classe
Converter
. C’est la façon la plus courante de convertir du HTML dans différents formats. - En utilisant la méthode
renderTo(
device
) de la classeHTMLDocument
ou les méthodesrender()
de la classe Renderer. Cette autre façon de rendre les documents HTML peut vous permettre de mieux contrôler le processus de rendu HTML dans votre application Java.
Dispositif de rendu – Rendering Device
Le dispositif de rendu encapsule une surface de dessin 2D, dont l’API est mise en œuvre à l’aide de l’interface IDevice. Actuellement, l’API Aspose.HTML for Java met en œuvre un ensemble de périphériques de rendu – PdfDevice, XpsDevice, DocDevice et ImageDevice, qui sont utilisés pour générer les formats de fichier PDF, XPS, DOCX et Image, respectivement.
L’exemple suivant montre comment utiliser le PdfDevice pour convertir un document HTML en fichier PDF. Le processus se déroule avec les options de rendu par défaut :
- Charger un document HTML.
- Créez une instance de la classe PdfDevice en utilisant l’un des constructeurs PdfDevice().
- Appeler la méthode
renderTo(
device
) de la classeHTMLDocument
.
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);
Options de rendu
Les options de rendu vous donnent un contrôle supplémentaire sur le périphérique de sortie. Chaque périphérique de rendu PdfDevice, XpsDevice et ImageDevice possède son propre ensemble d’options et est implémenté avec les classes PdfRenderingOptions, XpsRenderingOptions, DocRenderingOptions et ImageRenderingOptions, respectivement. Par exemple, vous pouvez modifier la taille de la page, ajuster les marges et la couleur d’arrière-plan, réduire la taille du fichier en ajustant la qualité et la résolution de l’image, définir un mot de passe de sécurité si vous utilisez PdfDevice, etc.
Voici une démonstration de l’utilisation de PdfRenderingOptions
pour personnaliser la taille de la page lors du rendu HTML vers PDF :
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);
Options générales
Les options de rendu vous donnent un contrôle supplémentaire sur le périphérique de sortie. Le paquetage com.aspose.html.rendering comprend de nombreux objets de rendu et des classes d’options de bas niveau appropriées responsables du rendu des documents dans l’implémentation IDevice. Les classes RenderingOptions et CssOptions représentent les options de rendu ou, en d’autres termes, les options de rendu générales.
les options générales sont valables pour tous les dispositifs de rendu et tous les processus de rendu, de HTML à PDF, XPS, DOCX et images. Examinons-en quelques-unes :
Résolution horizontale et verticale
Les paramètres de résolution horizontale et verticale sont essentiels pour obtenir une sortie de haute qualité lors de la conversion de HTML en d’autres formats, par exemple de HTML en PDF. Les résolutions horizontale et verticale sont mesurées (obtenues et définies) en pixels par pouce (ppp), avec une valeur par défaut de 300 ppp. Ce paramètre garantit la netteté des détails et la fluidité du rendu des éléments tels que le texte, les images et les lignes horizontales et verticales dans le PDF.
L’exemple suivant montre comment contrôler la résolution du fichier PDF résultant, ce qui influe sur sa taille et sa qualité :
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);
Type de média CSS
Le type de média CSS est une caractéristique importante qui spécifie comment un document doit être présenté sur différents supports : à l’écran, sur papier, avec un appareil braille, etc. Il existe plusieurs façons de spécifier le type de média pour une feuille de style, via des feuilles de style liées ou des feuilles de style en ligne :
Feuille de style liée
1 <link rel="stylesheet" type="text/css" media="print" href="style.javas">
Feuille de style en ligne
1<style type="text/css">
2@media print {
3 body{ color: #000000; }
4}
5</style>
Aspose.HTML for Java prend en charge cette fonctionnalité, ce qui vous permet de convertir des documents HTML tels qu’ils apparaissent à l’écran ou à l’impression en appliquant les types de médias et les feuilles de style correspondants. L’exemple suivant montre comment configurer le type de média :
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);
Veuillez noter que la valeur par défaut de
CssOptions.MediaType est Print
. Cela signifie que le document sera converti en appliquant les feuilles de style relatives à l’appareil d’impression et qu’il aura l’apparence d’un document papier (vous pouvez utiliser l’aperçu avant impression de votre navigateur pour voir la différence). Si vous souhaitez que le document ait l’aspect d’un document rendu à l’écran, vous devez utiliser
MediaType.Screen.
Couleur de fond
Le paramètre Couleur d’arrière-plan est une fonction essentielle pour personnaliser l’apparence du document rendu. Il permet aux développeurs de spécifier la couleur qui remplira l’arrière-plan de chaque page du fichier de sortie. Par défaut, cette propriété est définie sur Transparent, ce qui signifie que l’arrière-plan n’aura pas de remplissage visible à moins que cela ne soit explicitement spécifié. La personnalisation de la couleur d’arrière-plan peut améliorer la lisibilité d’un document, répondre à des exigences de marque ou créer des conceptions visuellement attrayantes.
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);
Mise en page
La mise en page est un ensemble de paramètres qui déterminent la disposition d’une page imprimée. Ces paramètres vont de la taille de la page, des marges et du redimensionnement automatique aux règles de priorité @page. Grâce à cet ensemble de paramètres, vous pouvez facilement définir une mise en page individuelle pour chaque page.
Dans certains cas, le contenu de la page HTML peut être plus large que la taille de la page définie avec les options. Si vous ne voulez pas couper le contenu de la page, vous pouvez utiliser AdjustToWidestPage
de la classe
PageSetup. L’exemple suivant montre comment adapter la taille de la page au contenu.
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);
Options PDF
La classe PdfRenderingOptions offre aux développeurs un contrôle étendu sur le processus de rendu lors de la conversion de HTML en PDF. Elle permet de personnaliser toutes les options générales et propose en outre des options spécifiques au rendu au format PDF : DocumentInfo, Encryption, FormFieldBehaviour et JpegQuality.
L’exemple suivant illustre la fonctionnalité de définition des autorisations pour un fichier PDF.
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);
Options d’image
ImageRenderingOptions vous permet de personnaliser un large éventail de paramètres allant du lissage (anticrénelage) à la compression de l’image en passant par la résolution et les formats. L’exemple suivant montre comment modifier la résolution et l’anticrénelage de l’image obtenue :
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);
Renderers
Alors que la méthode
renderTo(device
) de la classe
Document vous permet d’envoyer un seul document au périphérique de rendu de sortie, l’utilisation directe des instances
Renderer vous permet d’envoyer plusieurs fichiers à la fois. Aspose.HTML for Java fournit l’implémentation suivante des moteurs de rendu :
HtmlRenderer,
SvgRenderer,
MhtmlRenderer et
EpubRenderer, qui sont utilisés pour rendre les documents HTML, SVG, MHTML et EPUB, respectivement.
L’exemple suivant montre comment utiliser HtmlRenderer
pour rendre plusieurs documents HTML :
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});
Définir le délai d’attente
Une autre fonction importante disponible pour les moteurs de rendu est le réglage du délai d’attente. Vous pouvez l’utiliser pour spécifier la durée pendant laquelle vous êtes prêt à attendre que tous les processus internes liés au cycle de vie d’un document soient terminés, tels que le chargement des ressources, les minuteries actives, etc. Bien sûr, vous pouvez spécifier une période d’attente infinie. Bien sûr, vous pouvez spécifier une période d’attente infinie. Cependant, si le document contient un script avec une boucle sans fin, vous attendrez indéfiniment. L’exemple ci-dessous montre comment utiliser la méthode
render(device
, timeout
, documents
) avec le paramètre timeout
:
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);
Conclusion
Aspose.HTML for Java est une bibliothèque puissante et flexible pour le rendu de HTML, MHTML, EPUB et SVG vers différents formats, tels que PDF, XPS, DOCX et images. La classe Converter
est rapide et facile à utiliser pour les tâches simples. Cependant, si vous avez besoin de plus de contrôle sur les options de rendu, utilisez la méthode renderTo(device)
.
Grâce à un large éventail d’options de rendu et de fonctions configurables, les développeurs ont un contrôle total sur la sortie, y compris la résolution, les paramètres de page, les types de médias CSS et les configurations spécifiques à l’appareil. La flexibilité de l’API, démontrée par la possibilité d’utiliser plusieurs moteurs de rendu, de configurer des options générales et spécifiques au format, et même de gérer les délais d’attente, en fait un excellent choix pour créer des documents personnalisés de haute qualité.