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// Prepare HTML code
2String code = "<span>Hello, World!!</span>";
3
4// Initialize an HTML document from HTML code
5HTMLDocument document = new HTMLDocument(code, ".");
6
7// Create an instance of the PdfDevice class and specify the output file to render
8PdfDevice device = new PdfDevice("output.pdf");
9
10// Render HTML to PDF
11document.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// Prepare HTML code
2String code = "<span>Hello, World!!</span>";
3
4// Initialize a HTML document from the HTML code
5HTMLDocument document = new HTMLDocument(code, ".");
6
7// Create an instance of PdfRenderingOptions and set a custom page-size
8PdfRenderingOptions options = new PdfRenderingOptions();
9PageSetup pageSetup = new PageSetup();
10Page anyPage = new Page();
11anyPage.setSize(
12 new Size(
13 Length.fromInches(5),
14 Length.fromInches(2)
15 )
16);
17pageSetup.setAnyPage(anyPage);
18options.setPageSetup(pageSetup);
19
20// Create a PDF Device and specify options and output file
21PdfDevice device = new PdfDevice(options, "output.pdf");
22
23// Render HTML to PDF
24document.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// Prepare HTML code and save it to a file
2String code = "< style >\n" +
3 " p\n" +
4 " {\n" +
5 " background:\n" +
6 " blue;\n" +
7 " }\n" +
8 " @media(min - resolution:300dpi)\n" +
9 " {\n" +
10 " p\n" +
11 " {\n" +
12 " /* high resolution screen color */\n" +
13 " background:\n" +
14 " green\n" +
15 " }\n" +
16 " }\n" +
17 " </style >\n" +
18 " <p > Hello World !! </p >\n";
19
20try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
21 fileWriter.write(code);
22}
23
24// Create an instance of the HTMLDocument class
25HTMLDocument document = new HTMLDocument("document.html");
26
27// Create options for low-resolution screens
28PdfRenderingOptions options = new PdfRenderingOptions();
29options.setHorizontalResolution(Resolution.to_Resolution(50d));
30options.setVerticalResolution(Resolution.to_Resolution(50d));
31
32// Create an instance of the PdfDevice
33PdfDevice device = new PdfDevice(
34 options,
35 "output_resolution_50.pdf"
36);
37
38// Render HTML to PDF
39document.renderTo(device);
40
41// Create options for high-resolution screens
42options = new PdfRenderingOptions();
43options.setHorizontalResolution(Resolution.to_Resolution(300d));
44options.setVerticalResolution(Resolution.to_Resolution(300d));
45
46// Create an instance of PDF device
47device = new PdfDevice(
48 options,
49 "output_resolution_300.pdf"
50);
51
52// Render HTML to PDF
53document.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// Prepare HTML code
2String code = "<span>Hello, World!!</span>";
3
4// Initialize an HTML document from the HTML code
5HTMLDocument document = new HTMLDocument(code, ".");
6
7// Create an instance of the PdfRenderingOptions class
8PdfRenderingOptions options = new PdfRenderingOptions();
9// Set the 'screen' media-type
10options.getCss().setMediaType(MediaType.Screen);
11
12// Create a PDF Device and specify options and output file
13PdfDevice device = new PdfDevice(options, "output.pdf");
14
15// Render HTML to PDF
16document.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// Prepare HTML code and save it to a file
2String code = "<p>Hello, World!!</p>";
3try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
4 fileWriter.write(code);
5}
6
7// Create an instance of the HTMLDocument class
8HTMLDocument document = new HTMLDocument("document.html");
9
10// Initialize options with 'cyan' as a background-color
11PdfRenderingOptions options = new PdfRenderingOptions();
12options.setBackgroundColor(Color.getCyan());
13
14// Create an instance of the PdfDevice class
15PdfDevice device = new PdfDevice(options, "output.pdf");
16
17// Render HTML to PDF
18document.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// Prepare HTML code
2String code = " <style>\n" +
3 " div {\n" +
4 " page - break -after:always;\n" +
5 " }\n" +
6 " </style >\n" +
7 " <div style = 'border: 1px solid red; width: 400px' > First Page</div >\n" +
8 " <div style = 'border: 1px solid red; width: 600px' > Second Page</div >\n";
9// Initialize an HTML document from HTML code
10HTMLDocument document = new HTMLDocument(code, ".");
11
12// Create an instance of the PdfRenderingOptions class and set a custom page-size
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.getPageSetup().setAnyPage(new Page(new Size(500, 200)));
15
16// Enable auto-adjusting for the page size
17options.getPageSetup().setAdjustToWidestPage(true);
18
19// Create an instance of the PdfDevice class and specify options and output file
20PdfDevice device = new PdfDevice(options, "output.pdf");
21
22// Render HTML to PDF
23document.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// Prepare HTML code
2String code = "<div>Hello, World!!</div>";
3
4// Initialize an HTML document from the HTML code
5HTMLDocument document = new HTMLDocument(code, ".");
6
7// Create the instance of the PdfRenderingOptions class
8PdfRenderingOptions options = new PdfRenderingOptions();
9
10// Set file permissions
11options.setEncryption(
12 new PdfEncryptionInfo(
13 "user_pwd",
14 "owner_pwd",
15 PdfPermissions.PrintDocument,
16 PdfEncryptionAlgorithm.RC4_128
17 )
18);
19
20// Create a PDF Device and specify options and output file
21PdfDevice device = new PdfDevice(options, "output.pdf");
22
23// Render HTML to PDF
24document.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// Prepare HTML code
2String code = "<div>Hello, World!!</div>";
3
4// Initialize an instance of the HTMLDocument class based on prepared code
5HTMLDocument document = new HTMLDocument(code, ".");
6
7// Create an instance of the ImageRenderingOptions class
8ImageRenderingOptions options = new ImageRenderingOptions();
9options.setFormat(ImageFormat.Jpeg);
10
11// Disable smoothing mode
12options.setSmoothingMode(SmoothingMode.None);
13
14// Set the image resolution as 75 dpi
15options.setVerticalResolution(Resolution.fromDotsPerInch(75));
16options.setHorizontalResolution(Resolution.fromDotsPerInch(75));
17
18// Create an instance of the ImageDevice class
19ImageDevice device = new ImageDevice(options, "output.jpg");
20
21// Render HTML to Image
22document.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// Prepare HTML code
2String code1 = "<br><span style='color: green'>Hello, World!!</span>";
3String code2 = "<br><span style='color: blue'>Hello, World!!</span>";
4String code3 = "<br><span style='color: red'>Hello, World!!</span>";
5
6// Create three HTML documents to merge later
7HTMLDocument document1 = new HTMLDocument(code1, ".");
8HTMLDocument document2 = new HTMLDocument(code2, ".");
9HTMLDocument document3 = new HTMLDocument(code3, ".");
10
11// Create an instance of HTML Renderer
12HtmlRenderer renderer = new HtmlRenderer();
13
14// Create an instance of the PdfDevice class
15PdfDevice device = new PdfDevice("output.pdf");
16
17// Merge all HTML documents to PDF
18renderer.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// Prepare HTML code
2String code = "< script >\n" +
3 " var count = 0;\n" +
4 " setInterval(function()\n" +
5 " {\n" +
6 " var element = document.createElement('div');\n" +
7 " var message = (++count) + '. ' + 'Hello, World!!';\n" +
8 " var text = document.createTextNode(message);\n" +
9 " element.appendChild(text);\n" +
10 " document.body.appendChild(element);\n" +
11 " },1000);\n" +
12 "</script >\n";
13
14// Initialize an HTML document based on prepared HTML code
15HTMLDocument document = new HTMLDocument(code, ".");
16
17// Create an instance of HTML Renderer
18HtmlRenderer renderer = new HtmlRenderer();
19
20// Create an instance of the PdfDevice class
21PdfDevice device = new PdfDevice("output.pdf");
22
23// Render HTML to PDF
24renderer.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é.