Renderers – Rendre HTML, MHTML, EPUB et SVG en C#
Renderers
L’espace de noms Aspose.Html.Rendering comprend de nombreux objets de rendu et des classes d’options de bas niveau appropriées, qui sont responsables du rendu des documents dans l’implémentation IDevice. L’API Aspose.HTML for .NET fournit les objets de rendu suivants : HtmlRenderer, SvgRenderer, MhtmlRenderer et EpubRenderer, qui sont utilisés pour rendre les documents HTML, SVG, MHTML et EPUB, respectivement.
Alors que la méthode RenderTo() de la classe Document vous permet d’envoyer un seul document au dispositif de rendu de sortie, l’utilisation directe des instances Renderer vous permet d’envoyer plusieurs fichiers à la fois. Ainsi, vous pouvez fusionner des documents HTML, MHTML, EPUB et SVG et appliquer des options de rendu pour transformer le fichier de sortie.
Cet article décrit les scénarios pris en charge pour la conversion et la fusion de fichiers HTML vers d’autres formats populaires à l’aide des méthodes Render() de la classe Renderer.
HtmlRenderer
L’utilisation de la classe HtmlRenderer pour convertir des fichiers HTML en d’autres formats populaires est un moyen supplémentaire de convertir du HTML en personnalisant les options de rendu et en contrôlant le résultat du processus de rendu. Voyons comment utiliser la classe HtmlRenderer pour convertir du HTML en PDF avec des options de rendu personnalisées :
- Initialiser un document HTML. Utilisez l’un des constructeurs HTMLDocument() pour créer une instance de document HTML.
- Créer un nouvel objet HtmlRenderer.
- Créez l’instance de PdfRenderingOptions et définissez des options personnalisées pour le document PDF de sortie. Dans l’exemple, nous spécifions la propriété AnyPage de la classe PageSetup qui définit un nouvel objet Page avec une taille de page de 600 pixels par 200 pixels et la propriété Encryption qui identifie les mots de passe de l’utilisateur et du propriétaire, les permissions autorisées et l’algorithme de cryptage pour le fichier PDF de sortie.
- Utilisez le constructeur
PdfDevice(
options
,savePath
) pour créer un objet de la classe PdfDevice. - Enfin, appelez la méthode
Render(
device
,document
) pour rendre le document HTML dans le fichier PDF de sortie avec les options de rendu spécifiées.
1// Render HTML to PDF with custom page settings using C#
2
3// Prepare a path to a source HTML file
4string documentPath = Path.Combine(DataDir, "file.html");
5
6// Initialize an HTML document from the file
7using HTMLDocument document = new HTMLDocument(documentPath);
8
9// Create an instance of HTML Renderer
10using HtmlRenderer renderer = new HtmlRenderer();
11
12// Prepare a path to save the converted file
13string savePath = Path.Combine(OutputDir, "convert-html-options.pdf");
14
15// Create the instance of Rendering Options and set a custom page-size
16PdfRenderingOptions options = new PdfRenderingOptions();
17options.PageSetup.AnyPage = new Page(new Size(600, 200));
18options.Encryption = new PdfEncryptionInfo(
19 "user_pwd",
20 "owner_pwd",
21 PdfPermissions.PrintDocument,
22 PdfEncryptionAlgorithm.RC4_128);
23
24// Create an instance of PDF device
25using PdfDevice device = new PdfDevice(options, savePath);
26
27// Render HTML to PDF
28renderer.Render(device, document);
Les options de rendu vous donnent un contrôle supplémentaire sur le processus de rendu. Pour en savoir plus, lisez l’article Options de rendu.
Pour en savoir plus sur le processus de rendu, veuillez lire l’article Dispositif de rendu – Rendering Device.
Si vous souhaitez savoir comment utiliser les options de rendu pour redimensionner les pages d’un document en fonction de la taille du contenu et vice versa, veuillez consulter l’article Comment redimensionner un document lors d’une conversion à partir de HTML?
SvgRenderer
Le SvgRenderer vous permet de convertir des fichiers SVG en d’autres formats de fichiers, tels que PDF, XPS, DOCX et des formats d’images. Vous pouvez ainsi personnaliser le fichier de sortie à l’aide de diverses options de rendu. L’exemple suivant montre comment utiliser la classe SvgRenderer pour rendre un fichier SVG au format PDF en spécifiant une taille de page personnalisée :
- Initialiser un document SVG. Utilisez l’un des constructeurs SVGDocument() pour créer une instance de SVGDocument.
- Créer un nouvel objet SvgRenderer.
- Créez une instance de PdfRenderingOptions et définissez des options personnalisées pour le document PDF de sortie. Dans l’exemple, nous spécifions la propriété PageSetup.AnyPage qui définit un nouvel objet Page avec une taille de page de 600x500 pixels.
- Utilisez le constructeur
PdfDevice(
options
,savePath
) pour créer un objet de la classe PdfDevice. - Enfin, appelez la méthode
Render(
device
,document
) pour effectuer le rendu du document SVG dans le fichier PDF de sortie avec les options de rendu spécifiées.
1// Render SVG to PDF using C#
2
3// Initialize an SVG document from the file
4using SVGDocument document = new SVGDocument(Path.Combine(DataDir, "shapes.svg"));
5
6// Create an instance of SVG Renderer
7using SvgRenderer renderer = new SvgRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "rendering-svg.pdf");
11
12// Create the instance of Rendering Options and set a custom page-size
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(600, 500));
15
16// Create an instance of the Pdfdevice class
17using PdfDevice device = new PdfDevice(options, savePath);
18
19// Render SVG to PDF
20renderer.Render(device, document);
MhtmlRenderer
L’exemple suivant montre comment convertir du MHTML en PDF en spécifiant les options de rendu à l’aide de la classe MhtmlRenderer :
- Ouvrir un document MHTML existant.
- Créez une instance de MhtmlRenderer en utilisant le constructeur MhtmlRenderer().
- Initialiser la classe PdfRenderingOptions et définir les options de rendu.
- Créer une instance de la classe PdfDevice.
- Appeler la méthode
Render(
device
,stream
) pour convertir le MHTML en PDF.
1// Convert MHTML to PDF with custom page settings using C#
2
3// Open an existing MHTML file for reading
4using FileStream stream = File.OpenRead(DataDir + "sample.mht");
5
6// Create an instance of MHTML Renderer
7using MhtmlRenderer renderer = new MhtmlRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "convert-mhtml-options.pdf");
11
12// Create the instance of Rendering Options and set a custom page-size and background color
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(600, 200));
15options.BackgroundColor = System.Drawing.Color.Azure;
16
17// Create an instance of PDF device
18using PdfDevice device = new PdfDevice(options, savePath);
19
20// Convert MHTML to PDF
21renderer.Render(device, stream);
EpubRenderer
La classe EpubRenderer vous permet de convertir des fichiers EPUB en d’autres formats tels que PDF, XPS, DOCX et images. L’exemple C# suivant montre comment convertir un EPUB en DOCX avec un paramètre de taille de page personnalisé :
- Ouvrir un fichier EPUB existant.
- Créer une instance de la classe EpubRenderer.
- Initialiser la classe DocRenderingOptions et définir les options de rendu.
- Créer une instance de la classe DocDevice.
- Appeler la méthode
Render(
device
,stream
) pour convertir l’EPUB en DOCX.
1// Convert EPUB to DOCX with custom page size using C#
2
3// Open an existing EPUB file for reading
4using FileStream stream = File.OpenRead(DataDir + "input.epub");
5
6// Create an instance of EPUB Renderer
7using EpubRenderer renderer = new EpubRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "convert-epub-options.docx");
11
12// Create the instance of Rendering Options and set a custom page-size
13DocRenderingOptions options = new DocRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(800, 400));
15
16// Create an instance of the DocDevice class
17using DocDevice device = new DocDevice(options, savePath);
18
19// Render EPUB to DOCX
20renderer.Render(device, stream);
Fusionner HTML
l’API
Aspose.HTML for .NET API fournit la classe
Renderer pour le rendu et la fusion de documents HTML, MHTML, EPUB et SVG dans les formats les plus courants. Alors que la méthode
RenderTo() vous permet d’envoyer un seul document au dispositif de rendu de sortie, l’utilisation directe des instances Renderer
vous permet d’envoyer plusieurs fichiers à la fois.
En utilisant l’implémentation des moteurs de rendu : HtmlRenderer, SvgRenderer, MhtmlRenderer et EpubRenderer, vous pouvez fusionner des 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 C#
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
9using HTMLDocument document1 = new HTMLDocument(code1, ".");
10using HTMLDocument document2 = new HTMLDocument(code2, ".");
11using HTMLDocument document3 = new HTMLDocument(code3, ".");
12
13// Create an instance of HTML Renderer
14using HtmlRenderer renderer = new HtmlRenderer();
15
16// Prepare a path to save the converted file
17string savePath = Path.Combine(OutputDir, "merge-html.pdf");
18
19// Create an instance of PDF device
20using PdfDevice device = new PdfDevice(savePath);
21
22// Merge all HTML documents into PDF
23renderer.Render(device, document1, document2, document3);
Définir le délai d’attente
Une autre fonction importante disponible pour les moteurs de rendu est le 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 temporisations 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 le paramètre timeout :
1// Render HTML to PDF with timeout settings using C#
2
3// Prepare HTML code
4string code = @"
5<script>
6 var count = 0;
7 setInterval(function()
8 {
9 var element = document.createElement('div');
10 var message = (++count) + '. ' + 'Hello, World!! I know how to use Renderers!';
11 var text = document.createTextNode(message);
12 element.appendChild(text);
13 document.body.appendChild(element);
14 }, 1000);
15</script>";
16
17// Initialize an HTML document based on prepared HTML code
18using HTMLDocument document = new HTMLDocument(code, ".");
19
20// Create an instance of HTML Renderer
21using HtmlRenderer renderer = new HtmlRenderer();
22
23// Prepare a path to save the converted file
24string savePath = Path.Combine(OutputDir, "output-timeout.pdf");
25
26// Create an instance of the PdfDevice class
27using PdfDevice device = new PdfDevice(savePath);
28
29// Render HTML to PDF
30renderer.Render(device, TimeSpan.FromSeconds(5), document);
Dans cet exemple, nous créons un document HTML qui ajoute un nouvel élément <div>
toutes les secondes avec un numéro séquentiel et le message “Hello, World !!” Nous utilisons le paramètre TimeSpan
dans la méthode
Render(device
, timeout
, document
) pour définir le timeout. Ce paramètre spécifie le temps maximum que le moteur de rendu passera à rendre le document. Dans ce cas, le temps total est fixé à 5 secondes. Si le moteur de rendu n’a pas généré de document dans le délai spécifié, il s’arrêtera et rendra un document partiellement rendu. En exécutant cet exemple, vous obtiendrez un document contenant cinq lignes de “Hello, World ! Je sais comment utiliser les moteurs de rendu”, comme suit :
Vous pouvez télécharger les exemples C# complets et les fichiers de données sur GitHub.
Aspose.HTML propose des Convertisseurs gratuits en ligne qui permettent de convertir des fichiers HTML, XHTML, MHTML, EPUB, XML et Markdown dans toute une série de formats populaires. Vous pouvez facilement convertir vos documents HTML en PDF, XPS, DOCX, JPG, PNG, GIF, TIFF et autres. Il vous suffit de sélectionner un fichier, de choisir le format à convertir et le tour est joué. Cerise sur le gâteau, c’est entièrement gratuit !