Renderer – Rendern von HTML, MHTML, EPUB und SVG in C#

Renderer

Der Aspose.Html.Rendering Namespace besteht aus zahlreichen Renderer-Objekten und entsprechenden Low-Level Options-Klassen, die für das Rendering von Dokumenten in der IDevice Implementierung verantwortlich sind. Aspose.HTML for .NET API bietet die folgende Realisierung von Renderern: HtmlRenderer, SvgRenderer, MhtmlRenderer, und EpubRenderer, die zum Rendern von HTML-, SVG-, MHTML- bzw. EPUB-Dokumenten verwendet werden.

Während die Methode RenderTo() der Dokumentenklasse Ihnen die Möglichkeit gibt, ein einzelnes Dokument an das Ausgaberendergerät zu senden, können Sie mit den Renderer Instanzen direkt mehrere Dateien auf einmal senden. So können Sie HTML, MHTML-, EPUB- und SVG-Dokumente zusammenführen und Rendering-Optionen anwenden, um die Ausgabedatei zu drehen.

Der aktuelle Artikel beschreibt unterstützte Szenarien für die Konvertierung und Zusammenführung von HTML-basierten Dateien in andere gängige Formate unter Verwendung der Render()-Methoden der Klasse Renderer.

HtmlRenderer

Die Verwendung der Klasse HtmlRenderer zum Rendern von HTML-Dateien in andere gängige Formate ist eine weitere Möglichkeit, HTML zu konvertieren, indem man die Rendering-Optionen anpasst und die Ausgabe des Rendering-Prozesses kontrolliert. Sehen wir uns die Verwendung der Klasse HtmlRenderer zum Rendern von HTML in PDF mit benutzerdefinierten Rendering-Optionen an:

  1. Initialisieren Sie ein HTML-Dokument. Verwenden Sie einen der HTMLDocument() Konstruktoren, um eine HTMLDocument-Instanz zu erstellen.
  2. Erstellen Sie ein neues HtmlRenderer-Objekt.
  3. Erstellen Sie die Instanz von PdfRenderingOptions und legen Sie benutzerdefinierte Optionen für das PDF-Ausgabedokument fest. Im Beispiel geben wir die Eigenschaft AnyPage der Klasse PageSetup an, die ein neues Page-Objekt mit einer Seitengröße von 600 x 200 Pixeln festlegt, sowie die Eigenschaft Encryption, die die Passwörter von Benutzer und Eigentümer, die zulässigen Berechtigungen und den Verschlüsselungsalgorithmus für die PDF-Ausgabedatei angibt.
  4. Verwenden Sie den PdfDevice(options, savePath) Konstruktor, um ein Objekt der Klasse PdfDevice zu erstellen.
  5. Und schließlich rufen Sie die Methode Render(device, document) auf, um das HTML-Dokument mit den angegebenen Rendering-Optionen in die PDF-Ausgabedatei zu übertragen.
 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);

Rendering-Optionen geben Ihnen zusätzliche Kontrolle über den Rendering-Prozess. Um mehr über sie zu erfahren, lesen Sie bitte den Artikel Rendering-Optionen.

Um mehr über den Rendering-Prozess zu erfahren, lesen Sie bitte den Artikel Rendering Device.

Wenn Sie daran interessiert sind, wie Sie die Rendering-Optionen nutzen können, um die Größe der Dokumentseiten an die Größe des Inhalts anzupassen und umgekehrt, lesen Sie bitte den Artikel Wie kann man die Größe eines Dokuments bei der Konvertierung von HTML ändern?

SvgRenderer

Mit dem SvgRenderer können Sie SVG-Dateien in andere Dateiformate wie PDF, XPS, DOCX und Bildformate rendern. Dabei können Sie die Ausgabedatei mit verschiedenen Rendering-Optionen anpassen. Das folgende Beispiel zeigt, wie die Klasse SvgRenderer verwendet wird, um SVG-Dateien in PDF-Dateien mit einer benutzerdefinierten Seitengröße zu rendern:

  1. Initialisieren Sie ein SVG-Dokument. Verwenden Sie einen der SVGDocument() Konstruktoren, um eine SVGDocument-Instanz zu erstellen.
  2. Erstellen Sie ein neues SvgRenderer-Objekt.
  3. Erstellen Sie eine Instanz von PdfRenderingOptions und legen Sie benutzerdefinierte Optionen für das PDF-Ausgabedokument fest. Im Beispiel geben wir die Eigenschaft PageSetup.AnyPage an, die ein neues Seitenobjekt mit einer Seitengröße von 600x500 Pixeln festlegt.
  4. Verwenden Sie den PdfDevice(options, savePath) Konstruktor, um ein Objekt der Klasse PdfDevice zu erstellen.
  5. Und schließlich rufen Sie die Methode Render(device, document) auf, um das SVG-Dokument mit den angegebenen Rendering-Optionen in die PDF-Ausgabedatei zu übertragen.
 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

Das folgende Beispiel zeigt, wie MHTML in PDF konvertiert wird, wobei die Rendering-Optionen mit der Klasse MhtmlRenderer angegeben werden:

  1. Öffnen Sie ein vorhandenes MHTML-Dokument.
  2. Erstellen Sie eine Instanz von MhtmlRenderer mit dem MhtmlRenderer() Konstruktor.
  3. Initialisieren Sie die Klasse PdfRenderingOptions und legen Sie Rendering-Optionen fest.
  4. Erstellen Sie eine Instanz der Klasse PdfDevice.
  5. Rufen Sie die Methode Render(device, stream) auf, um MHTML in PDF umzuwandeln.
 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

Mit der Klasse EpubRenderer können Sie EPUB-Dateien in andere Formate wie PDF, XPS, DOCX und Bilder konvertieren. Das folgende C#-Beispiel zeigt, wie Sie EPUB in DOCX mit einer benutzerdefinierten Seitengrößeneinstellung konvertieren:

  1. Öffnen Sie eine vorhandene EPUB-Datei.
  2. Erstellen Sie eine Instanz der EpubRenderer-Klasse.
  3. Initialisieren Sie die Klasse DocRenderingOptions und legen Sie Rendering-Optionen fest.
  4. Erstellen Sie eine Instanz der Klasse DocDevice.
  5. Rufen Sie die Methode Render(device, stream) auf, um EPUB in DOCX zu rendern.
 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);

HTML zusammenführen

die Aspose.HTML for .NET API bietet die Klasse Renderer zum Rendern und Zusammenführen von HTML-, MHTML-, EPUB- und SVG-Dokumenten in gängigen Formaten. Während die Methode RenderTo() Ihnen die Möglichkeit gibt, ein einzelnes Dokument an das Ausgaberendergerät zu senden, können Sie durch die direkte Verwendung der Renderer-Instanzen mehrere Dateien auf einmal senden. Die Verwendung der Implementierung von Renderern: HtmlRenderer, SvgRenderer, MhtmlRenderer und EpubRenderer, können Sie HTML-, SVG-, MHTML- bzw. EPUB-Dokumente zusammenführen. Das nächste Beispiel zeigt, wie Sie HtmlRenderer verwenden, um mehrere HTML-Dokumente zu rendern:

 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);

Zeitüberschreitung einstellen

Eine weitere wichtige Funktion, die für Renderer zur Verfügung steht, ist die Zeitüberschreitung. Damit können Sie angeben, wie lange Sie bereit sind zu warten, 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 Sie den Timeout-Parameter verwenden können:

 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);

In diesem Beispiel erstellen wir ein HTML-Dokument, das jede Sekunde ein neues <div>-Element mit einer fortlaufenden Nummer und der Nachricht “Hello, World!!” einfügt Wir verwenden den Parameter TimeSpan in der Methode Render(device, timeout, document), um die Zeitüberschreitung festzulegen. Diese Einstellung gibt die maximale Zeit an, die der Renderer für das Rendern des Dokuments benötigt. In diesem Fall wird die Gesamtzeit auf 5 Sekunden festgelegt. Wenn der Renderer innerhalb der angegebenen Zeit kein Dokument erzeugt hat, wird er anhalten und ein teilweise gerendertes Dokument rendern. Wenn Sie dieses Beispiel ausführen, erhalten Sie ein Dokument mit fünf Zeilen von “Hello, World!! I know how to use Renderers!"-Meldung, wie folgt:

Fünf Zeilen “Hallo, Welt! Ich weiß, wie man Renderer benutzt!”

Sie können die vollständigen C#-Beispiele und Datendateien von GitHub herunterladen.

Aspose.HTML bietet kostenlose Online- Konverter, die HTML-, XHTML-, MHTML-, EPUB-, XML- und Markdown-Dateien in eine Reihe von gängigen Formaten konvertieren können. Sie können Ihre HTML-basierten Dokumente ganz einfach in PDF, XPS, DOCX, JPG, PNG, GIF, TIFF und andere konvertieren. Wählen Sie einfach eine Datei aus, wählen Sie das zu konvertierende Format, und schon sind Sie fertig. Und das Beste daran: Es ist völlig kostenlos!

Text “Kostenlose Online-Konverter”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.