Wie man HTML zu PDF mit .NET auf Azure generiert

Wie man C#35; für HTML-zu-PDF mit IronPDF auf Azure Function verwendet

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF generiert, bearbeitet und liest PDF-Dokumente auf Azure-Plattformen, einschließlich MVC-Websites und Azure-Funktionen. Dieser Leitfaden zeigt, wie die HTML-zu-PDF-Konvertierung in Azure Functions mit der richtigen Konfiguration und Optimierung für Produktionsumgebungen implementiert werden kann.

Wenn Sie Azure Functions innerhalb eines Docker-Containers betreiben, lesen Sie bitte stattdessen dieses Azure Docker Linux Tutorial.

Schnellstart: HTML-zu-PDF-Konvertierung mit IronPDF auf Azure

Beginnen Sie mit der Konvertierung von HTML in PDF in Ihren Azure-Anwendungen mit IronPDF. Diese Kurzanleitung zeigt, wie man eine URL mit den API-Methoden von IronPDF als PDF-Dokument rendert. Dieses Beispiel verdeutlicht die Einfachheit von IronPDF bei der Integration von PDF-Funktionen in Azure-Lösungen. Folgen Sie dem Beispiel, um PDFs ohne Formatierungsverluste zu erstellen und Ihr Azure-Projekt schnell zum Laufen zu bringen.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronPDF mit dem NuGet-Paketmanager.

    PM > Install-Package IronPdf

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Hello Azure!</h1>")
        .SaveAs("output-azure.pdf");
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronPDF in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Anleitung zum Tutorial

Wie richte ich mein Projekt ein?

Welches IronPDF-Paket sollte ich installieren?

Der erste Schritt besteht darin, IronPDF mit NuGet zu installieren:

Install-Package IronPdf

Alternativ können Sie die .dll manuell über den Link IronPDF direct download package for Azure installieren.

Weitere fortgeschrittene Installationsoptionen finden Sie in unserem umfassenden Leitfaden für NuGet-Pakete.

Welche Azure-Optionen muss ich konfigurieren?

Welche Azure-Hosting-Stufe sollte ich wählen?

Azure Basic B1 ist die Mindest-Hosting-Stufe, die für die Rendering-Anforderungen erforderlich ist. Wenn Sie ein System mit hohem Durchsatz erstellen, muss dies möglicherweise aktualisiert werden. Die B1-Ebene bietet ausreichende Ressourcen für die Chrome PDF Rendering Engine, die IronPDFs HTML-zu-PDF-Konvertierung ermöglicht.

WarnungWenn der Plan Type App Service Plan nicht ausgewählt wird, kann IronPdf keine PDF-Dokumente darstellen.

Azure Function App-Erstellungsformular mit hervorgehobener Option für den App-Serviceplan im Dropdown-Menü Plan Type

Warum sollte ich die Option "Aus Paketdatei ausführen" deaktivieren?

Stellen Sie bei der Veröffentlichung Ihrer Azure Functions-Anwendung sicher, dass Run from package file NICHT ausgewählt ist. Mit dieser Option wird eine schreibgeschützte Bereitstellung erstellt, die IronPDF daran hindert, während der Ausführung notwendige Laufzeitabhängigkeiten zu extrahieren.

Der Veröffentlichungsdialog von Azure Functions zeigt die nicht aktivierte Option

Wie konfiguriere ich mich für .NET 6?

Microsoft hat kürzlich Bildbibliotheken aus .NET 6+ entfernt, was viele Legacy-APIs beeinträchtigt. Daher ist es notwendig, Ihr Projekt so zu konfigurieren, dass diese Legacy-API-Aufrufe weiterhin möglich sind.

  1. Unter Linux setzen Sie Installation.LinuxAndDockerDependenciesAutoConfig=true;, um sicherzustellen, dass libgdiplus auf dem Rechner installiert ist
  2. Fügen Sie das folgende in die .csproj-Datei für Ihr .NET 6-Projekt ein:
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    XML
  3. Erstellen Sie eine Datei in Ihrem Projekt mit dem Namen runtimeconfig.template.json und füllen Sie sie mit dem folgenden Inhalt:

    {
      "configProperties": {
        "System.Drawing.EnableUnixSupport": true
      }
    }
  4. Fügen Sie schließlich die folgende Zeile am Anfang Ihres Programms hinzu, um Unix-Unterstützung für System.Drawing zu aktivieren:
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    $vbLabelText   $csharpLabel

Wann sollte ich Docker auf Azure verwenden?

Eine Möglichkeit zur Kontrolle, Zugriff auf SVG-Schriften und zur Steuerung der Leistung auf Azure ist die Nutzung von IronPDF-Anwendungen und -Funktionen innerhalb von Docker-Containern. Dieser Ansatz bietet eine bessere Kontrolle über die Laufzeitumgebung und beseitigt viele plattformspezifische Einschränkungen.

Wir haben ein umfassendes IronPDF Azure Docker Tutorial für Linux- und Windows-Instanzen, das als Lektüre empfohlen wird.

Wie sieht der Azure-Funktionscode aus?

Dieses Beispiel gibt automatisch Protokolleinträge an den integrierten Azure-Logger aus (siehe ILogger log). Ausführliche Informationen zur Konfiguration der Protokollierung finden Sie in unserem Leitfaden zur benutzerdefinierten Protokollierung.

[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
$vbLabelText   $csharpLabel

Erweitertes HTML String Rendering Beispiel

Für komplexere Szenarien, die benutzerdefiniertes HTML mit CSS-Styling beinhalten, können Sie die HTML String to PDF-Funktionen nutzen:

[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
$vbLabelText   $csharpLabel

Informationen zur Verwaltung von Lizenzen in Ihren Azure Functions finden Sie in unserer Verwendung von Lizenzschlüsseln-Dokumentation.

Was sind die bekannten Probleme?

Warum werden SVG-Schriften bei Shared-Hosting-Angeboten nicht gerendert?

Ein Einschränkung besteht darin, dass die Azure-Hosting-Plattformübersicht keine Server unterstützt, die SVG-Schriften wie Google Fonts in ihren günstigeren Shared-Web-App-Ebenen laden. Dies liegt an Sicherheitsbeschränkungen, die den Zugriff auf Windows GDI+ Grafikobjekte verhindern.

Wir empfehlen die Verwendung eines Windows- oder Linux-Docker-Container-Leitfadens für IronPDF oder eventuell eines VPS auf Azure, um dieses Problem zu umgehen, wenn die beste Schriftenrendarbeitung erforderlich ist.

Warum ist Azure Free Tier Hosting langsam?

Die kostenlosen und geteilten Azure-Stufen sowie der Verbrauchsplan sind nicht für die PDF-Renderung geeignet. Wir empfehlen das Azure B1 Hosting/Premium-Plan, welches wir selbst verwenden. Der Prozess von HTML to PDF ist eine bedeutende 'Arbeit' für jeden Computer - ähnlich wie das Öffnen und Rendern einer Webseite auf Ihrem eigenen Computer. Ein echtes Browser-Engine wird verwendet, daher müssen wir entsprechend bereitstellen und ähnliche Renderzeiten wie bei einem Desktop-Rechner von ähnlicher Leistung erwarten.

Wie kann ich Azure Functions lokal debuggen?

Für die lokale Entwicklung und das Testen lesen Sie bitte unseren Leitfaden Debugging Azure Functions Project on Local Machine. Dies hilft Ihnen, Probleme zu erkennen und zu beheben, bevor Sie Azure einsetzen.

Wo kann ich Azure Logs finden?

Bei der Behebung von Problemen mit der PDF-Erzeugung sind die Azure-Protokolle von unschätzbarem Wert. In unserem Leitfaden für Azure-Protokolldateien finden Sie Anleitungen für den Zugriff auf und die Interpretation von Protokollen, die für IronPDF-Operationen spezifisch sind.

Wie erstelle ich eine technische Support-Anfrage?

Um ein Anfrage-Ticket zu erstellen, lesen Sie den Leitfaden Wie man eine technische Support-Anfrage für IronPDF stellt.

Beste Praktiken für die Produktion

  1. Benutzen Sie immer eine geeignete Hosting-Ebene - B1 oder höher für eine zuverlässige Leistung
  2. Protokollierung richtig konfigurieren - Azure Application Insights für die Produktionsüberwachung verwenden
  3. Handle exceptions gracefully - Implementiere Wiederholungslogik für transiente Fehler
  4. Optimierung des HTML-Inhalts - Minimierung externer Ressourcen und Verwendung von base64-kodierten Bildern, wenn möglich
  5. Testen Sie gründlich - Validieren Sie die PDF-Erzeugung lokal vor der Bereitstellung in Azure
  6. Überwachung der Ressourcennutzung - Verfolgen Sie den Speicher- und CPU-Verbrauch, um eine angemessene Skalierung zu erreichen

Häufig gestellte Fragen

Welche Azure-Hosting-Ebene ist für die PDF-Erstellung mindestens erforderlich?

IronPDF benötigt Azure Basic B1 Tier als Mindest-Hosting-Level für PDF-Rendering-Anforderungen. Die B1-Ebene bietet ausreichend Ressourcen für die Chrome PDF Rendering Engine, die IronPDFs HTML-zu-PDF-Konvertierungsfunktionen unterstützt.

Welches Paket sollte ich für Windows-basierte Azure-Funktionen installieren?

Für Windows-basierte Azure-Funktionen installieren Sie das IronPdf-Paket von NuGet. Dieses Paket ist für Windows-Umgebungen optimiert und bietet vollständige PDF-Erstellungsfunktionen mit der Chrome-Rendering-Engine.

Wie konvertiere ich in Azure Functions HTML in PDF?

Mit dem ChromePdfRenderer von IronPDF können Sie HTML mit einer einzigen Codezeile in PDF umwandeln. Erstellen Sie einfach eine neue Instanz und rufen Sie RenderHtmlAsPdf() mit Ihrem HTML-Inhalt auf, dann speichern Sie die resultierende PDF-Datei.

Was passiert, wenn ich nicht den richtigen App Service Plan wähle?

Wird kein Plan Type of App Service Plan ausgewählt, kann IronPDF keine PDF-Dokumente rendern. Eine ordnungsgemäße Konfiguration der Azure-Hosting-Umgebung ist für die korrekte Funktion der PDF-Rendering-Engine unerlässlich.

Warum muss die Option "Aus Paketdatei ausführen" bei der Veröffentlichung deaktiviert werden?

Bei der Veröffentlichung Ihrer Azure Functions-Anwendung muss die Option "Aus Paketdatei ausführen" deaktiviert werden, damit IronPDF ordnungsgemäß auf seine Rendering-Komponenten und Abhängigkeiten innerhalb der Azure-Umgebung zugreifen und diese nutzen kann.

Kann ich Linux-basierte Azure-Funktionen für die PDF-Erstellung verwenden?

Ja, für Linux-basierte Azure-Funktionen können Sie das IronPdf.Linux-Paket von NuGet verwenden. Dieses Paket ist speziell für Linux-Umgebungen optimiert und bietet dieselben PDF-Erstellungsfunktionen.

Was ist, wenn ich einen höheren Durchsatz für die PDF-Generierung benötige?

Für Systeme mit hohem Durchsatz ist möglicherweise ein Upgrade über die B1-Stufe hinaus erforderlich. IronPDF lässt sich mit Ihren Azure-Ressourcen skalieren, so dass Sie durch die Auswahl höherer Leistungsstufen die steigenden Anforderungen an die PDF-Erstellung bewältigen können.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 17,012,929 | Version: 2025.12 gerade veröffentlicht