Wie führt man HTML zu PDF mit .NET auf Azure aus?
Ja. IronPDF kann verwendet werden, um PDF-Dokumente auf Azure zu erzeugen, zu bearbeiten und zu lesen. IronPDF wurde gründlich auf mehreren Azure-Plattformen getestet, darunter MVC-Websites, Azure Functions und viele mehr.
Azure-Funktionen auf Docker
Wenn Sie Azure Functions innerhalb eines Docker Containers ausführen, lesen Sie bittedieses Azure Docker Linux Tutorial stattdessen.
PDF-Generator in Azure-Funktion erstellen
- C#-Bibliothek zum Erzeugen von PDFs in Azure installieren
- Wählen Sie die Hosting-Stufe Azure Basic B1 oder höher
- Deaktivieren Sie das Kontrollkästchen
Ausführen aus der Paketdatei
option bei der Veröffentlichung - Befolgen Sie die empfohlenen Konfigurationsanweisungen
- Verwenden Sie das Codebeispiel, um einen PDF-Generator mit Azure zu erstellen
Anleitung zum Tutorial
Ihr Projekt einrichten
Installation von IronPDF für den Einstieg
Der erste Schritt besteht darin, IronPDF mit NuGet zu installieren:
- Verwenden Sie für Windows-basierte Azure-Funktionen das Paket "IronPdf"NuGet IronPdf-Paket für Windows
- Auf Linux-basierten Azure-Funktionen verwenden Sie das
IronPdf.Linux
-Paket -NuGet IronPdf-Paket für Linux
Install-Package IronPdf
Alternativ können Sie die .dll auch manuell installieren, indem Sie dieIronPDF direktes Download-Paket für Azure link.
Richtige Azure-Optionen auswählen
Auswahl der richtigen Hosting-Ebene Azure Tier
Azure Basic B1 ist die Mindest-Hosting-Ebene, die für die Rendering-Anforderungen unserer Endnutzer erforderlich ist. Wenn Sie ein System mit hohem Durchsatz aufbauen, muss dieses möglicherweise aufgerüstet werden.
Bevor Sie fortfahren
Das Kontrollkästchen "Aus Paketdatei ausführen
Wenn Sie Ihre Azure Functions-Anwendung veröffentlichen, stellen Sie sicher, dass "Aus Paketdatei ausführen" NICHT ausgewählt ist.
Konfiguration für .NET 6
Microsoft hat kürzlich die Imaging-Bibliotheken aus .NET 6+ entfernt, wodurch viele Legacy-APIs zerstört wurden. Daher ist es notwendig, Ihr Projekt so zu konfigurieren, dass diese Legacy-API-Aufrufe weiterhin möglich sind.
Unter Linux setzen Sie
Installation.LinuxAndDockerDependenciesAutoConfig=true;
um sicherzustellen, dasslibgdiplus
auf dem Rechner installiert istFügen Sie der .csproj-Datei für Ihr .NET 6-Projekt Folgendes hinzu:
<GenerateRuntimeConfigurationFiles>wahr</GenerateRuntimeConfigurationFiles>
- Erstellen Sie in Ihrem Projekt eine Datei mit dem Namen
runtimeconfig.template.json
und füllen Sie sie mit folgendem Inhalt:
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
If True Then
"configProperties":
If True Then
"System.Drawing.EnableUnixSupport": True
End If
End If
- Zum Schluss fügen Sie die folgende Zeile am Anfang Ihres Programms ein:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
Verwendung von Docker auf Azure
Eine Möglichkeit, die Kontrolle, den Zugriff auf SVG-Schriften und die Leistung auf Azure zu kontrollieren, ist die Verwendung von IronPDF-Anwendungen und -Funktionen innerhalb von Docker-Containern.
Wir haben ein umfassendesIronPDF Azure Docker-Anleitung das Buch ist für Linux- und Windows-Instanzen geeignet und wird zur Lektüre empfohlen.
Azure Funktionscode Beispiel
Dieses Beispiel gibt automatisch Protokolleinträge an den integrierten Azure-Logger aus(siehe ILogger log
):
[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";
// Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("finished rendering pdf...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf", e);
}
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";
// Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
IronPdf.Logging.Logger.EnableDebugging = false;
// Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = false;
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
try
{
log.LogInformation("About to render pdf...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF
var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
log.LogInformation("finished rendering pdf...");
return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
}
catch (Exception e)
{
log.LogError(e, "Error while rendering pdf", e);
}
return new OkObjectResult("OK");
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
log.LogInformation("Entered PrintPdf API function...")
' Apply license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
' Enable log
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
IronPdf.Logging.Logger.CustomLogger = log
IronPdf.Logging.Logger.EnableDebugging = False
' Configure IronPdf
Installation.LinuxAndDockerDependenciesAutoConfig = False
Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Try
log.LogInformation("About to render pdf...")
Dim renderer As New ChromePdfRenderer()
' Render PDF
Dim pdf = renderer.RenderUrlAsPdf("https://www.google.com/")
log.LogInformation("finished rendering pdf...")
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {.FileDownloadName = "google.pdf"}
Catch e As Exception
log.LogError(e, "Error while rendering pdf", e)
End Try
Return New OkObjectResult("OK")
End Function
Bekannte Probleme
Das Rendern von SVG-Schriften ist bei Shared-Hosting-Angeboten nicht verfügbar
Eine Einschränkung, die wir festgestellt haben, ist, dass dieÜberblick über die Azure-Hosting-Plattform unterstützt keine Server, die SVG-Schriften, wie z. B. Google Fonts, in ihren billigeren, gemeinsam genutzten Webapplikations-Tiers laden. Der Grund dafür ist, dass diese Shared-Hosting-Plattformen aus Sicherheitsgründen nicht auf Windows-GDI+-Grafikobjekte zugreifen dürfen.
Wir empfehlen die Verwendung einesWindows oder Linux Docker Container Anleitung für IronPDF oder vielleicht einen VPS auf Azure, um dieses Problem zu lösen, wenn die beste Schriftartwiedergabe erforderlich ist.
Azure Free Tier Hosting ist langsam
Azure Free und Shared Tiers sowie der Consumption Plan sind für das PDF-Rendering nicht geeignet. Wir empfehlen Azure B1 Hosting/Premium Plan, den wir selbst nutzen. Der Prozess der Umwandlung von HTML in PDF ist für jeden Computer mit erheblicher "Arbeit" verbunden - ähnlich wie das Öffnen und Rendern einer Webseite auf Ihrem eigenen Computer. Es wird eine echte Browser-Engine verwendet, daher müssen wir entsprechende Vorkehrungen treffen und ähnliche Renderzeiten wie bei einem Desktop-Rechner mit ähnlicher Leistung erwarten.
Erstellen eines Tickets für eine technische Supportanfrage
Um ein Anfrage-Ticket zu erstellen, wenden Sie sich bitte an dieSo stellen Sie eine technische Supportanfrage für IronPDF leitfaden.