So funktioniert das Zusammenführen von MHTML in C#
Aspose.HTML for .NET
rendert mehrere MHTML- oder MHT-Archivstreams mit einem MhtmlRenderer und schreibt deren Inhalt an ein gemeinsames Ausgabegerät. Übergeben Sie die Streams in der gewünschten Reihenfolge an MhtmlRenderer.Render(), um eine PDF-, XPS-, DOCX- oder TIFF-Datei zu erstellen. Dieser Workflow verbindet den gerenderten Archivinhalt, erstellt jedoch kein neues editierbares MHTML-Archiv.
MHTML in C# zusammenführen und interaktives Beispiel
Mit dem interaktiven Beispiel können Sie die Archivreihenfolge festlegen und einen passenden C#-Workflow erzeugen. Fügen Sie die MHTML- oder MHT-Dateien in der gewünschten Reihenfolge hinzu und wählen Sie PDF, XPS, DOCX oder TIFF. Das Code-Panel aktualisiert Dateinamen, Renderer, Ausgabegerät und Dateierweiterung, sobald sich die Auswahl ändert. Sie können den konfigurierten Vorgang außerdem online ausführen, um das Ergebnis zu prüfen.
using System.IO;
using Aspose.Html.Rendering;
using Aspose.Html.Rendering.Pdf;
// Open the MHTML files as streams in the required merge order.
using FileStream stream1 = File.OpenRead("first.mhtml");
using FileStream stream2 = File.OpenRead("second.mhtml");
// Create the renderer and the PDF output device.
using MhtmlRenderer renderer = new MhtmlRenderer();
using PdfDevice device = new PdfDevice("merged.pdf");
// Render the sources into one PDF file.
renderer.Render(device, stream1, stream2);
Workflow zum Zusammenführen von MHTML
PDF ist standardmäßig ausgewählt. Der Renderer bleibt MhtmlRenderer; das Ausgabegerät ändert sich entsprechend dem gewählten Zielformat.
- Öffnen Sie jede
.mhtml- oder.mht-Quelldatei mitFile.OpenRead()oder stellen Sie eine andere lesbareStream-Implementierung bereit. - Halten Sie die Streams in der Reihenfolge, in der ihr gerenderter Inhalt in der Ausgabe erscheinen soll.
- Erstellen Sie eine
MhtmlRenderer-Instanz. - Erstellen Sie das Ausgabegerät, beispielsweise
PdfDevicefür PDF. - Übergeben Sie das Gerät und alle Archivstreams an
MhtmlRenderer.Render().
Ausgabeformat für den MHTML-Merger auswählen
- PDF – ein Dokument mit festem Layout für Verteilung oder Druck erstellen.
- XPS – die Webarchive in ein XPS-Dokument rendern.
- DOCX – ein Dokument für Microsoft Word oder einen anderen kompatiblen Editor erzeugen.
- TIFF – die zusammengeführten gerenderten Seiten als Rasterbild speichern.
Der generierte C#-Code wählt je nach Zielformat PdfDevice, XpsDevice, DocDevice oder ImageDevice. Einstellungen für Seiten, Bilder und Dokumente finden Sie unter
Rendering Devices in C#
.
Hinweise zum Zusammenführen von MHTML
- Die Reihenfolge der Quellen bestimmt die Reihenfolge der Ausgabe. Die Archive werden in derselben Abfolge gerendert, in der ihre Streams an
MhtmlRenderer.Render()übergeben werden. - Jeder Eingabestream muss geöffnet bleiben. Geben Sie einen Stream erst frei, nachdem der Renderer die zusammengeführte Ausgabe vollständig geschrieben hat.
- Das Ergebnis ist kein neues MHTML-Archiv. Die MIME-Teile werden interpretiert und gerendert, nicht in einem anderen editierbaren Webarchiv zusammengefasst.
- Layouteinstellungen gehören zum Ausgabegerät. Seitengröße, Ränder, Auflösung und andere zielspezifische Optionen werden über die passende Klasse mit Rendering-Optionen konfiguriert.
Aspose.HTML for .NET installieren
Installieren Sie Aspose.HTML for .NET aus NuGet mit der .NET CLI:
dotnet add package Aspose.HTML
Alternativ können Sie die Benutzeroberfläche des NuGet-Paket-Managers verwenden oder Install-Package Aspose.HTML in der Paket-Manager-Konsole ausführen. Einzelheiten zur Einrichtung finden Sie in der
Installationsanleitung
. Mit einer
temporären Lizenz
können Sie die API ohne Einschränkungen der Evaluierung testen.
Häufige Fragen zum MHTML-Merger
1. Unterscheidet sich die Verarbeitung von MHTML- und MHT-Dateien?
MHTML und MHT sind gebräuchliche Dateierweiterungen für dasselbe MIME-HTML-Webarchivformat. MhtmlRenderer verarbeitet die Archivstreams im selben Workflow, sofern die MIME-Struktur und die referenzierten Teile gültig sind.
2. Kann ich die zulässige Rendering-Zeit für MHTML begrenzen?
Ja. Verwenden Sie eine Überladung von MhtmlRenderer.Render(), die TimeSpan oder CancellationToken akzeptiert. Ein Zeitlimit ist hilfreich, wenn Archive komplexe Seiten, Skripte oder Ressourcen enthalten, die den Abschluss verzögern könnten.
3. Werden eingebettete Bilder, Stile und Schriftarten in die Ausgabe übernommen?
Der Renderer verwendet gültige MIME-Teile, auf die die archivierte Seite verweist. Fehlende Teile, fehlerhafte Inhaltsadressen oder nicht verfügbare externe Ressourcen können zu unvollständigen Stilen, Bildern oder Schriftarten führen.
4. Kann ich HTML-Dokumente und MHTML-Streams im selben Renderer-Aufruf übergeben?
Nein. MhtmlRenderer erwartet MHTML-Streams, während HtmlRenderer HTMLDocument-Objekte erwartet. Verwenden Sie den zum Quellsatz passenden Renderer oder normalisieren Sie die Eingaben zuvor in einem separat definierten Workflow.
5. Kann die zusammengeführte PDF-Datei in einen Stream geschrieben werden?
Ja. Erstellen Sie PdfDevice mit einem beschreibbaren Stream und übergeben Sie anschließend das Gerät sowie die MHTML-Eingabestreams an MhtmlRenderer.Render(). Halten Sie den Ausgabestream bis zum Abschluss des Renderings geöffnet, wenn die Anwendung das Ergebnis danach lesen oder übertragen muss.
Weitere Möglichkeiten zum Zusammenführen von Dateien
Wählen Sie ein anderes Quellformat oder kehren Sie zur Übersicht der Merger-Workflows zurück.