Ausführen und Bereitstellen von IronPDF .NET auf Azure Function
Ja. IronPDF kann genutzt werden, um PDF-Dokumente auf Azure zu erzeugen, zu manipulieren und zu lesen. IronPDF wurde umfassend auf verschiedenen Azure-Plattformen getestet, darunter MVC-Websites, Azure Functions und viele mehr.
Wie man HTML in Azure Function in PDF konvertiert
- Installation einer C#-Bibliothek zur Konvertierung von HTML in PDF in Azure Function
- Wählen Sie den Azure Basic B1-Hosting-Tarif oder höher
- Deaktivieren Sie beim Veröffentlichen die Option `Aus Paketdatei ausführen`
- Befolgen Sie die empfohlenen Konfigurationsanweisungen
- Verwenden Sie das Codebeispiel, um einen PDF-Generator mit Azure zu erstellen
Anleitung zum Tutorial
IronPdf-Paket installieren
Azure Function Apps haben drei unterschiedliche Umgebungen: Linux, Windows und Container. Dieser Artikel erklärt, wie IronPdf in allen drei Umgebungen eingerichtet wird. Unter diesen wird der Azure Function App Container empfohlen, da er eine isolierte Umgebung bietet. Zu Beginn sollten wir das entsprechende Paket auswählen, das installiert werden soll.
Azure Function App Container
Der Azure Function App Container beinhaltet minimalen Aufwand und ist der empfohlene Weg, um IronPdf bereitzustellen.
- IronPdf.Linux-Paket
Install-Package IronPdf.Linux
Docker-Datei konfigurieren
Konfigurieren Sie die Docker-Datei basierend auf der von Ihnen verwendeten Linux-Distribution. Bitte beachten Sie diesen Artikel für ausführliche Anweisungen.
Azure Function App (Windows)
Um das Standard-IronPDF-Paket zu verwenden, stellen Sie sicher, dass die Run from package file-Option deaktiviert ist. Wenn diese Option aktiviert ist, wird das Projekt als ZIP-Datei bereitgestellt, was die Dateikonfiguration von IronPdf beeinträchtigt. Wenn Sie die Run from package file-Option aktivieren möchten, installieren Sie stattdessen das IronPdf.Slim-Paket.
- IronPDF-Paket
Install-Package IronPdf
Azure Function App (Linux)
Für die Azure Function App (Linux) wird das Projekt standardmäßig als ZIP-Datei bereitgestellt, und dieses Verhalten kann nicht deaktiviert werden. Dies ist vergleichbar mit der Aktivierung der Run from package file-Option bei Azure Function App (Windows).
- IronPdf.Slim-Paket
Install-Package IronPdf.Slim
Richtige Azure-Optionen auswählen
Die richtige Hosting-Stufe wählen
Azure Basic B1 ist die minimale Hosting-Stufe, die für die Rendering-Anforderungen unserer Endbenutzer erforderlich ist. Wenn Sie ein System mit hohem Durchsatz erstellen, muss dies möglicherweise aktualisiert werden.
Konfiguration 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.
- Stellen Sie unter Linux
Installation.LinuxAndDockerDependenciesAutoConfig=true;ein, um sicherzustellen, dasslibgdiplusauf dem Rechner installiert ist. - Fügen Sie Folgendes zu Ihrer .csproj-Datei für Ihr .NET 6-Projekt hinzu:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
- Erstellen Sie in Ihrem Projekt eine Datei namens
runtimeconfig.template.jsonund fügen Sie folgenden Inhalt ein:
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
- Fügen Sie schließlich die folgende Zeile am Anfang Ihres Programms hinzu:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
Azure Function Code Beispiel
Dieses Beispiel konvertiert HTML in PDF und gibt automatisch Logeinträge im 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 logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
// Configure IronPdf settings
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
try
{
log.LogInformation("About to render PDF...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF from a URL
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");
return new OkObjectResult($"Error while rendering PDF: {e}");
}
}
[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 logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
IronPdf.Logging.Logger.CustomLogger = log;
// Configure IronPdf settings
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
try
{
log.LogInformation("About to render PDF...");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render PDF from a URL
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");
return new OkObjectResult($"Error while rendering PDF: {e}");
}
}
<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 logging
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
IronPdf.Logging.Logger.CustomLogger = log
' Configure IronPdf settings
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
IronPdf.Installation.AutomaticallyDownloadNativeBinaries = True
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
IronPdf.Installation.CustomDeploymentDirectory = "/tmp"
Try
log.LogInformation("About to render PDF...")
Dim renderer As New ChromePdfRenderer()
' Render PDF from a URL
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")
Return New OkObjectResult($"Error while rendering PDF: {e}")
End Try
End Function
Das Erstellen eines Projekts mit der Azure Function-Vorlage in Visual Studio kann zu leicht abweichendem Code führen. Aufgrund dieser Unterschiede kann es sein, dass selbst bei installiertem gleichen Paket ein Projekt funktioniert, während das andere nicht funktioniert. Tritt dies auf, setzen Sie bitte die Eigenschaft CustomDeploymentDirectory auf "/tmp".
Jede Installationskonfiguration verstehen
- LinuxAndDockerDependenciesAutoConfig: Diese Einstellung überprüft und versucht, alle notwendigen Abhängigkeiten für die Chrome Engine herunterzuladen. Es ist erforderlich, wenn Systeme ohne Grafikoberfläche wie Linux verwendet werden. In Containersystemen sind die Abhängigkeiten normalerweise in der Dockerdatei aufgelistet; daher können Sie dies auf false setzen.
- AutomaticallyDownloadNativeBinaries: Diese Option lädt das native Chrome-Binary zur Laufzeit herunter. Es ist erforderlich, wenn das IronPdf.Slim-Paket verwendet wird.
- CustomDeploymentDirectory: Diese Einstellung ist erforderlich für Systeme mit begrenztem Schreibzugriff.
Bekannte Probleme
SVG-Schriftarten-Rendering ist auf Shared-Hosting-Plänen nicht verfügbar
Eine Einschränkung, die wir festgestellt haben, ist, dass die Azure-Hosting-Plattform Servern nicht erlaubt, SVG-Schriftarten wie Google Fonts in ihren günstigeren Shared-Web-App-Tiers zu laden. Dies liegt daran, dass diese Shared-Hosting-Plattformen aus Sicherheitsgründen keinen Zugriff auf Windows-GDI+-Grafikobjekte haben.
Wir empfehlen die Verwendung eines Windows- oder Linux-Docker-Containers oder möglicherweise eines VPS auf Azure, um dieses Problem zu umgehen, wo das beste Schriftrendering erforderlich ist.
Azure-Free-Tier-Hosting ist 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 stellt für jeden Computer eine erhebliche Rechenleistung dar – vergleichbar mit dem Öffnen und Rendern einer Webseite auf dem eigenen Rechner. Da eine echte Browser-Engine zum Einsatz kommt , müssen wir die Systemressourcen entsprechend anpassen und ähnliche Renderzeiten wie bei einem Desktop-Rechner vergleichbarer Leistung erwarten.
Ein Support-Ticket für Technische Unterstützung erstellen
Um ein Anforderungsticket zu erstellen, konsultieren Sie den Leitfaden 'Wie man eine Engineering-Support-Anfrage für IronPDF stellt'
Häufig gestellte Fragen
Wie kann ich eine PDF-erzeugende Bibliothek auf Azure hosten?
Sie können eine PDF-erzeugende Bibliothek wie IronPDF auf Azure hosten, indem Sie eine Azure Function oder eine MVC-Website einrichten. Stellen Sie sicher, dass Sie die erforderlichen Pakete aus NuGet installiert haben und konfigurieren Sie Ihre Umgebung gemäß den Anforderungen der Bibliothek.
Welche Azure-Umgebungen sind mit einer PDF-Bibliothek kompatibel?
IronPDF ist mit mehreren Azure-Umgebungen kompatibel, einschließlich MVC-Websites und Azure Functions. Es ist so konzipiert, dass es nahtlos über verschiedene von Azure bereitgestellte Plattformen hinweg arbeitet.
Was sind die Hosting-Anforderungen für eine PDF-Bibliothek auf Azure?
Für optimale Leistung bei der Nutzung von IronPDF auf Azure wird empfohlen, mindestens den Azure Basic B1-Hosting-Tarif zu verwenden. Dies stellt ausreichende Ressourcen für eine effiziente PDF-Darstellung sicher.
Wie richte ich eine PDF-Bibliothek für eine Azure Function App auf Linux ein?
Um IronPDF für eine Azure Function App auf Linux einzurichten, installieren Sie das IronPDF.Slim-Paket. Bereitstellen Sie Ihr Projekt als ZIP-Datei und stellen Sie sicher, dass alle Konfigurationen korrekt für die Linux-Umgebung eingestellt sind.
Welche Konfigurationen sind für .NET 6 beim Einsatz einer PDF-Bibliothek auf Azure erforderlich?
Beim Einsatz von IronPDF mit .NET 6 auf Azure aktualisieren Sie die Projekteinstellungen, um Legacy-API-Aufrufe zuzulassen. Setzen Sie Installation.LinuxAndDockerDependenciesAutoConfig=true und fügen Sie die notwendigen Konfigurationen in Ihre Projektdateien ein.
Warum wird ein Docker-Container für das Erstellen von PDFs auf Azure empfohlen?
Ein Docker-Container wird für die PDF-Erstellung auf Azure empfohlen, da er eine kontrolliertere Umgebung bietet, eine bessere Schriftwiedergabe unterstützt und die Einschränkungen von Shared-Hosting-Plänen vermeidet.
Was kann langsame PDF-Erstellung auf dem Azure-Free-Tarif verursachen?
Die PDF-Erstellung ist auf dem Azure-Free-Tarif langsam aufgrund begrenzter Computerressourcen. Der Prozess erfordert erheblichen Berechnungsaufwand, ähnlich wie das Rendern einer Webseite, weshalb höhere Tarife wie B1 oder Premium besser geeignet sind.
Wie kann ich ein nicht funktionierendes Azure Function-Projekt mit einer PDF-Bibliothek beheben?
Wenn Ihr Azure Function-Projekt mit IronPDF nicht funktioniert, prüfen Sie, ob die CustomDeploymentDirectory-Eigenschaft auf '/tmp' gesetzt ist, und stellen Sie sicher, dass alle erforderlichen Pakete und Konfigurationen korrekt installiert und eingestellt sind.
Welche Support-Optionen gibt es für die Bereitstellung einer PDF-Bibliothek auf Azure?
Für Unterstützung bei der Bereitstellung von IronPDF auf Azure konsultieren Sie den Leitfaden „How to Make an Engineering Support Request for IronPDF“ auf der IronPDF-Website für detaillierte Hilfe.

