HOWTO · Csharp

HTML zu PDF in C#

Konvertieren Sie eine HTML-Zeichenkette mit HtmlRenderer.PdfSharp in C# in ein A4-PDF.

Auf dieser Seite

Verwenden Sie HtmlRenderer.PdfSharp in einem C#-Projekt, um eine HTML-Zeichenkette in PDF-Seiten zu rendern und das Dokument anschließend unter einem beschreibbaren Pfad zu speichern. Das Paket verbindet einen HTML-Renderer mit PdfSharp. Einfache Formatierungen werden möglicherweise gerendert, während komplexe Layouts und erweitertes CSS von der Browserausgabe abweichen können.

Erste Schritte mit HtmlRenderer.PdfSharp

Installieren Sie HtmlRenderer.PdfSharp mit dem NuGet-Paket-Manager von Visual Studio oder führen Sie dotnet add package HtmlRenderer.PdfSharp in dem Verzeichnis aus, das Ihre Projektdatei enthält. NuGet wählt eine kompatible Paketversion aus. Wenn Ihr Projekt eine festgelegte Version erfordert, prüfen Sie vor der Auswahl, ob die Zielframeworks dieser Version zu Ihrem Projekt passen.

Die paketbasierte Konvertierung erfordert die NuGet-Assemblys in Ihrem Anwendungsprojekt. Ihre API verwendet PdfGenerator aus TheArtOfDev.HtmlRenderer.PdfSharp, PdfDocument aus PdfSharp.Pdf und PageSize.A4 aus PdfSharp. Behalten Sie diese Paketverweise in dem Projekt, das den Konverter erstellt.

Eine HTML-Zeichenkette in PDF konvertieren

Das folgende eigenständige C#-Programm führt die Konvertierung mit dem installierten Paket aus: Es erstellt ein PdfDocument, übergibt die HTML-Zeichenkette mit PageSize.A4 an PdfGenerator.AddPdfPages, speichert das Dokument unter dem Ausgabepfad und gibt das Dokument frei.

using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
        string outputPath = "monthly-report.pdf";
        using (PdfDocument document = new PdfDocument())
        {
            PdfGenerator.AddPdfPages(document, html, PageSize.A4);
            document.Save(outputPath);
        }
        Console.WriteLine("Saved " + outputPath);
    }
}
Saved monthly-report.pdf

Führen Sie dieses Programm in dem Projekt aus, in dem HtmlRenderer.PdfSharp installiert ist. Verwenden Sie in Ihrer Anwendung ein Ziel, in das der Prozess schreiben kann; ein relativer Dateiname wird ausgehend vom aktuellen Arbeitsverzeichnis aufgelöst. Verwenden Sie einen absoluten Pfad, wenn Sie ein festes Ziel benötigen.

HTML mit CSS und Bildern rendern

Fügen Sie einen <style>-Block und Bildelemente in die HTML-Zeichenkette ein, bevor Sie sie an den Generator übergeben. HtmlRenderer.PdfSharp kann einfaches CSS rendern, aber seine Ausgabe stimmt nicht garantiert mit einem Browser überein. Überprüfen Sie Dokumente, die erweiterte Selektoren, benutzerdefinierte Schriftarten oder komplexe Positionierung verwenden.

Eine Bildquelle muss der Anwendung während der Konvertierung zur Verfügung stehen. Externe Bild-URLs benötigen Netzwerkzugriff von diesem Prozess aus. Verwenden Sie für lokale Bilder ein Quellformat und einen Pfad, die von der Paketversion in Ihrem Projekt unterstützt werden, und stellen Sie sicher, dass der Prozess sie lesen kann. Wenn ein Bild fehlt, prüfen Sie, ob seine Quelle korrekt und zugänglich ist. Der verfügbare Screenshot konnte nicht anhand dieses Beispiels bestätigt werden, daher wird er weggelassen.

Einschränkungen und Fehlerbehebung

Das Rendern von HTML zu PDF unterscheidet sich davon, dieselbe Seite in einem Browser zu öffnen. Halten Sie das Markup wohlgeformt, verwenden Sie vom Renderer unterstützte Formatierungen und prüfen Sie das generierte PDF auf Layoutänderungen. Komplexe Layouts und erweitertes CSS werden möglicherweise nicht wie erwartet gerendert.

Wenn das PDF fehlt, prüfen Sie den Ausgabepfad und den Schreibzugriff der Anwendung auf dessen Verzeichnis. Wenn Formatierungen fehlen, reduzieren Sie das HTML und fügen Sie das CSS schrittweise wieder hinzu. Wenn ein Bild fehlt, bestätigen Sie, dass seine URL oder lokale Quelle während der Konvertierung verfügbar ist. Diese Prüfungen helfen zu unterscheiden, ob ein Pfad- oder Ressourcenzugriffsproblem oder ein Unterschied beim Rendern vorliegt.

FAQ

  1. Was macht HtmlRenderer.PdfSharp? Es rendert HTML-Inhalte mit PdfSharp in PDF-Seiten, sodass eine C#-Anwendung aus Markup generierte Dokumente speichern kann.
  2. Kann ich CSS verwenden? Einfaches CSS wird unterstützt. Erweitertes CSS und komplexe Layouts können anders aussehen als in einem Browser, überprüfen Sie daher das resultierende PDF.
  3. Wie funktionieren Bilder? Die Bildquelle muss dem Renderer während der Konvertierung zur Verfügung stehen. Externe URLs erfordern Netzwerkzugriff von der Anwendung aus; lokale Quellen erfordern einen Pfad, den der Prozess lesen kann.
  4. Kann ich das PDF anpassen? Legen Sie die Seitengröße über die API zur PDF-Erstellung fest und passen Sie das HTML und die unterstützten Stile an. Prüfen Sie die API auf weitere Optionen in Ihrer installierten Version.
  5. Was sollte ich bei komplexem HTML erwarten? Der Renderer unterstützt eine Teilmenge von HTML und CSS. Probieren Sie Ihr tatsächliches Dokument aus und vereinfachen oder passen Sie das Markup an, wenn sein Erscheinungsbild von Ihrer Absicht abweicht.