Diese Anleitung deckt alles ab, was erforderlich ist, um IronPDF for Java in einem Azure Functions-Container bereitzustellen und PDFs nach Bedarf von einem serverlosen HTTP-Endpunkt zu generieren. Da IronPDF eine native Chromium-Rendering-Engine liefert, muss es als Docker-Image verpackt werden — standardmäßige Zip-Bereitstellung auf Azure Functions kann die Binärdateien, auf die IronPDF zur Laufzeit angewiesen ist, nicht ausführen. Durch Befolgen dieser Anleitung akzeptiert eine funktionierende Azure-Funktion eine URL als Abfrageparameter und gibt ein vollständig gerendertes PDF als herunterladbare Datei zurück.
Die Methode nutzt den von Microsoft empfohlenen benutzerdefinierten Container-Workflow für Linux-basierte Azure Functions. Ein Maven-Projekt bietet den Funktionscode und die Abhängigkeitsverwaltung. Docker erstellt das Container-Image, das zu einem Registry hochgeladen und von der Azure Function App referenziert wird. Sobald bereitgestellt, ist die Kaltstartzeit der wichtigste Leistungsfaktor — nachfolgende Aufrufe sind schnell und konsistent.
Bevor Sie beginnen, stellen Sie sicher, dass das Azure CLI, Docker Desktop, Maven 3.8+ und JDK 11 oder JDK 17 lokal installiert sind. Ein aktives Azure-Abonnement mit Berechtigung zum Erstellen von Function Apps und Speicherkonten ist ebenfalls erforderlich.
Schnellstart: IronPDF for Java auf Azure Functions bereitstellen
Der folgende Code zeigt die vollständige RenderPdf Azure-Funktion. Sie akzeptiert einen url-Abfrageparameter und gibt einen PDF-Byte-Stream zurück. Fügen Sie dies nach Abschluss der Einrichtung der Maven-Abhängigkeiten in den folgenden Abschnitten zu Function.java hinzu.
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.
Inhaltsverzeichnis
- Was sind die Voraussetzungen?
- Wie richten Sie das Azure Function-Projekt ein?
- Wie fügen Sie IronPDF-Abhängigkeiten zu Ihrem Maven-Projekt hinzu?
- Wie schreiben Sie die RenderPdf-Funktion?
- Wie konfigurieren Sie die Docker-Datei für IronPDF?
- Wie erstellen und laden Sie das Docker-Image hoch?
- Wie stellen Sie die Funktion auf Azure bereit?
- Wie lösen und testen Sie die Funktion aus?
- Was sind die nächsten Schritte?
Was sind die Voraussetzungen? {#voraussetzungen}
Bevor Sie beginnen, überprüfen Sie, dass alle erforderlichen Tools installiert sind und ein Azure-Abonnement aktiv ist. Das Überspringen dieser Prüfungen führt häufig zu Build-Fehlern im Verlauf des Bereitstellungsprozesses.
Erforderliche lokale Werkzeuge:
- Azure CLI (Version 2.40 oder neuer)
- Docker Desktop mit aktivierten Linux-Containern
- Maven 3.8 oder neuer
- JDK 11 oder JDK 17 (JDK 17 ist die empfohlene LTS-Version)
- Azure Functions Core Tools v4
Erforderliche Azure-Ressourcen:
- Ein aktives Azure-Abonnement
- Berechtigungen zum Erstellen von Ressourcengruppen, Speicherkonten und Function App-Plänen
- Ein Docker Hub-Konto (oder Azure Container Registry), um das erstellte Image zu hosten
ironpdf-engine-linux-x64-Artefakt, wenn es in einem Docker-Container ausgeführt wird. Standard-Zip-Bereitstellung auf Azure Functions kann die nativen Binärdateien von IronPDF nicht ausführen — Docker ist die einzige unterstützte Bereitstellungsmethode.Führen Sie az login aus, um die Azure-CLI zu authentifizieren, bevor Sie mit dem nächsten Abschnitt fortfahren.
Wie richten Sie das Azure Function-Projekt ein? {#set-up-project}
Der Microsoft-Leitfaden zum Erstellen einer Funktion auf Linux unter Verwendung eines benutzerdefinierten Images deckt den gesamten Gerüstbauprozess ab. Befolgen Sie diese Schritte mit einer wichtigen Auswahl: Wählen Sie Java, wenn Sie nach einer Programmiersprache gefragt werden.
Arbeiten Sie sich durch den Leitfaden, bis das Gerüstprojekt gebaut wird und die Platzhalterfunktion lokal mit den Azure Functions Core Tools läuft. Überprüfen Sie dies mit:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
Sobald der Platzhalter auf eine lokale HTTP-Anfrage antwortet, ist die Projektstruktur korrekt und bereit für die IronPDF-Integration. Die wichtigsten Dateien sind pom.xml (Maven-Konfiguration), Function.java (Funktionscode) und Dockerfile (Container-Definition).
pom.xml auch host.json und local.settings.json. Die Datei local.settings.json speichert Umgebungsvariablen für die lokale Entwicklung – sie ist standardmäßig von der Quellcodeverwaltung ausgeschlossen und sollte niemals committet werden.Wie fügen Sie IronPDF-Abhängigkeiten zu Ihrem Maven-Projekt hinzu? {#add-IronPDF-dependencies}
IronPDF for Java wird über Maven Central vertrieben. Zwei Artefakte sind erforderlich: die Kernbibliothek ironpdf, die die Java-API bereitstellt, und ironpdf-engine-linux-x64, das die für Linux x86-64 kompilierte native Chromium-Engine bündelt. Das Engine-Artefakt macht den Docker-Einsatz zwingend erforderlich – es enthält Binärdateien, die zur Laufzeit ausgeführt werden müssen.
Öffnen Sie pom.xml und fügen Sie Folgendes innerhalb des Blocks <dependencies> ein. Ersetzen Sie LATEST_VERSION durch die aktuelle Version, die auf Maven Central verfügbar ist:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
Beide Artefakte müssen dieselbe Versionsnummer verwenden. Nicht übereinstimmende Versionen zwischen ironpdf und ironpdf-engine-linux-x64 verursachen eine Laufzeitausnahme, wenn die Funktion zum ersten Mal versucht, eine PDF-Datei zu rendern.
Führen Sie nach der Aktualisierung von pom.xml den Befehl mvn dependency:resolve aus, um zu überprüfen, ob Maven beide Artefakte aus Central herunterladen kann, bevor Sie Zeit in die Erstellung des Docker-Images investieren.
Wie schreiben Sie die RenderPdf-Funktion? {#write-renderpdf-function}
Die Funktion RenderPdf ist eine HTTP-gesteuerte Azure-Funktion, die einen Abfrageparameter url akzeptiert, die Zielseite mithilfe der Chromium-basierten Engine von IronPDF rendert und die resultierende PDF-Datei als binäre Antwort mit einem Header Content-Disposition: attachment zurückgibt. Dieser Header weist den Browser (oder HTTP-Client) an, das PDF herunterzuladen, anstatt es inline darzustellen.
Der vollständige Funktionscode ist im Schnellstart oben gezeigt. Fügen Sie sie in src/main/java/com/example/Function.java ein und ersetzen oder ergänzen Sie dabei den vom Maven-Archetyp generierten Platzhalter.
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
PdfDocument.renderUrlAsPdf(url) startet eine Headless-Chromium-Instanz innerhalb des Containers, lädt die Ziel-URL vollständig (einschließlich JavaScript) und erfasst die gerenderte Ausgabe als PDF. Dies erzeugt eine Ausgabe, die visuell identisch mit dem ist, was ein Benutzer in einem Browser sieht, was es geeignet macht, moderne Webanwendungen, Dashboards und Berichtseiten zu erfassen.
authLevel = AuthorizationLevel.ANONYMOUS im Funktionstrigger macht den Endpunkt öffentlich zugänglich. Für Produktionsbereitstellungen ändern Sie dies in FUNCTION oder ADMIN und übergeben Sie den Funktionsschlüssel im Request-Header.Wie konfigurieren Sie die Docker-Datei für IronPDF? {#configure-dockerfile}
Die Chromium-Engine von IronPDF ist auf eine Reihe gemeinsamer Linux-Bibliotheken angewiesen, die nicht im Basis-Azure Functions-Image enthalten sind. Das Basis-Image mcr.microsoft.com/azure-functions/java:4-java17-build basiert auf Debian 11, daher müssen die Pakete mit apt installiert werden.
Die folgenden RUN-Befehle müssen zu der vom Azure Functions Maven-Archetyp generierten Dockerfile hinzugefügt werden. Fügen Sie diese nach der Anweisung FROM und vor den Schritten COPY ein, die die Anwendungs-JAR hinzufügen:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/Dockerfile
FROM mcr.microsoft.com/azure-functions/java:4-java17-build AS installer-env
# Install system dependencies required by IronPDF's Chromium renderer
RUN apt-get update && apt-get install -y \
libgdiplus \
libxkbcommon-x11-0 \
libc6 \
libc6-dev \
libgtk2.0-0 \
libnss3 \
libatk-bridge2.0-0 \
libx11-xcb1 \
libxcb-dri3-0 \
libdrm-common \
libgbm1 \
libasound2 \
libxrender1 \
libfontconfig1 \
libxshmfence1 \
&& apt-get install -y xvfb libva-dev libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Copy the built function JAR
COPY --from=installer-env /home/site/wwwroot /home/site/wwwroot
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
Das libgdiplus-Paket bietet GDI+-Kompatibilität für die Grafikdarstellung. libnss3 und libatk-bridge2.0-0 werden von den Sandboxing- und Barrierefreiheits-Ebenen von Chromium benötigt. xvfb stellt einen virtuellen Framebuffer bereit, den Chromium bei einigen Debian-Konfigurationen sogar im Headless-Modus benötigt. Der Schritt rm -rf /var/lib/apt/lists/* am Ende des Blocks RUN löscht den Cache des Paketmanagers, wodurch die endgültige Image-Größe so gering wie möglich gehalten wird.
Wie erstellen und laden Sie das Docker-Image hoch? {#build-push-docker}
Mit dem erstellten Maven-Projekt und der aktualisierten Docker-Datei kann das Container-Image zusammengestellt und in ein Docker-Registry hochgeladen werden. Azure Functions zieht dieses Image ab, wenn die Function App erstellt oder aktualisiert wird.
Schritt 1 — Erstellen und packen Sie das Maven-Projekt:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
Maven kompiliert den Funktionscode, löst alle Abhängigkeiten auf (einschließlich beider IronPDF-Artefakte) und erzeugt eine bereitstellbare JAR-Datei im Verzeichnis target/. Beheben Sie alle Kompilierungsfehler, bevor Sie fortfahren.
Schritt 2 — Erstellen des Docker-Images:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
Der Build installiert die im Dockerfile aufgelisteten Linux-Pakete, kopiert das JAR und legt alles in ein endgültiges Image. Beim ersten Build kann dies mehrere Minuten dauern, da Paketdownloads und Schicht-Caching etabliert werden. Nachfolgende Builds, die dasselbe Basis-Image verwenden, sind erheblich schneller.
Schritt 3 — Laden Sie das Bild nach Docker Hub hoch:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
Wie stellen Sie die Funktion auf Azure bereit? {#deploy-to-azure}
Mit dem Image im Registry kann die Azure Function App erstellt (oder aktualisiert) werden, um darauf zu verweisen. Der Befehl az functionapp create stellt die Function App bereit, verknüpft sie mit einem Speicherkonto und legt das Container-Image in einem einzigen Schritt fest.
Schritt 1 — Erstellen oder Aktualisieren der Function App:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
Ersetzen Sie <APP_NAME> durch einen global eindeutigen Namen für die Function App, <STORAGE_NAME> durch einen bestehenden Azure Storage-Kontonamen und <DOCKER_ID> durch den Docker Hub-Benutzernamen oder den ACR-Anmeldeserver, der im vorherigen Schritt verwendet wurde.
Das Flag --plan myPremiumPlan wählt einen Premium-Hosting-Tarif aus. Die Chromium-Engine von IronPDF verbraucht während des Renderings erheblichen Speicher; das 1,5 GB Speicherlimit des Consumption-Plans ist oft nicht ausreichend. Der Premium-Plan bietet mindestens 3,5 GB und unterstützt vorgewärmte Instanzen, die Kaltstartlatenz eliminieren.
Schritt 2 — Überprüfen Sie die Bereitstellung:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
Der Befehl gibt "Running" zurück, wenn der Container erfolgreich gestartet wurde. Wenn "Starting" oder ein Fehler zurückgegeben wird, überprüfen Sie den Log Stream im Azure-Portal unter der Function App auf Container-Pull- oder Startfehler.
Wie lösen und testen Sie die Funktion aus? {#trigger-and-test}
Sobald die Function App den Status Running meldet, ist der Endpunkt RenderPdf bereit, Anfragen anzunehmen. Die Endpunkt-URL folgt einem vorhersehbaren Muster, das auf dem Namen der Function App und dem in der Anmerkung @FunctionName definierten Funktionsnamen basiert.
Testen mit einem Browser oder curl:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
Eine erfolgreiche Antwort speichert eine PDF-Datei mit dem Namen output.pdf im aktuellen Verzeichnis. Das Flag -o in curl schreibt den binären Antworttext in eine Datei, anstatt ihn auf dem Terminal auszugeben.
Beim Testen in einem Browser navigieren Sie zu:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com
Der Browser fordert zum Herunterladen eines PDFs auf. Öffnen Sie es, um zu überprüfen, dass die Seite korrekt gerendert wurde.
Protokolle auf Fehler überprüfen: Navigieren Sie zum Azure-Portal, öffnen Sie die Function App und wählen Sie Log Stream unter Monitoring. Protokolleinträge von context.getLogger()-Aufrufen werden hier nahezu in Echtzeit angezeigt, was die Diagnose von Rendering-Fehlern vereinfacht.
Was sind die nächsten Schritte? {#next-steps}
Diese Anleitung zeigte, wie man IronPDF for Java innerhalb eines Azure Functions Docker-Containers bereitstellt, eine HTTP-getriggerte Funktion schreibt, die URLs als PDFs rendert, das Dockerfile mit den notwendigen Linux-Abhängigkeiten konfiguriert und den Live-Endpunkt testet. Muster ist auf fortgeschrittene Anwendungsfälle mit minimalen Änderungen erweiterbar.
Funktion erweitern:
- HTML-Strings direkt mit
PdfDocument.renderHtmlAsPdf(htmlString)anstelle einer URL rendern - Wasserzeichen anwenden, mehrere PDFs zusammenführen oder digitale Unterschriften mit IronPDF's vollständiger Java PDF API hinzufügen
- Anforderungsheader oder POST-Body lesen, um benutzerdefinierte HTML-Inhalte oder Rendering-Optionen zu übergeben
Verbessern Sie die Produktionsbereitschaft:
- Ersetzen Sie
authLeveldurchFUNCTIONund wechseln Sie regelmäßig die Funktionstasten - Verwenden Sie Azure Key Vault, um alle Geheimnisse zu speichern, die in Anwendungseinstellungen referenziert werden
- Konfigurieren Sie Application Insights für eine vollständige Beobachtung der Rendering-Latenz und Fehlerquoten
- Richten Sie einen Docker-Image-Update-Webhook ein, damit Azure automatisch eine neue Version bereitstellt, wenn eine neue Image-Version hochgeladen wird
Entdecken Sie weitere IronPDF for Java Anleitungen:
- IronPDF for Java: Linux Installationsanleitung
- Erstellen Sie PDFs aus HTML in Java
- IronPDF for Java: Docker Bereitstellungsanleitung
- Vollständige IronPDF Java API Referenz
Starten Sie eine kostenlose IronPDF-Testphase, um alle Rendering- und Manipulationsfunktionen ohne Wasserzeichen während der Bewertungszeit zu nutzen. Wenn Sie bereit sind, in die Produktion zu gehen, sehen Sie sich die IronPDF-Lizenzierungsoptionen an, um den Plan zu finden, der zum Projektumfang passt.
Häufig gestellte Fragen
Warum ist die Docker-Bereitstellung für IronPDF auf Azure Functions erforderlich?
IronPDF enthält eine native Chromium-Rendering-Engine, die Binärdateien zur Laufzeit ausführen muss. Azure Functions Zip-Bereitstellung kann keine nativen Binärdateien ausführen, daher ist ein Docker-Container-Image der einzige unterstützte Bereitstellungspfad.
Welche Maven-Artefakte sind erforderlich, um IronPDF in einem Docker-Container auszuführen?
Zwei Artefakte sind in pom.xml erforderlich: com.ironsoftware:ironpdf für die Java API und com.ironsoftware:ironpdf-engine-linux-x64 für die native Chromium-Engine. Beide müssen dieselbe Versionsnummer haben.
Welche Linux-Pakete muss das Dockerfile für IronPDF installieren?
Das Dockerfile muss libgdiplus, libxkbcommon-x11-0, libc6, libc6-dev, libgtk2.0-0, libnss3, libatk-bridge2.0-0, libx11-xcb1, libxcb-dri3-0, libdrm-common, libgbm1, libasound2, libxrender1, libfontconfig1, libxshmfence1, xvfb und libva-dev installieren.
Was macht die Funktion RenderPdf?
Die Funktion RenderPdf ist eine HTTP-aktivierte Azure-Funktion, die einen url-Abfrageparameter liest, ihn an PdfDocument.renderUrlAsPdf weitergibt und die resultierenden PDF-Bytes mit einem Content-Disposition: attachment-Header zurückgibt, sodass der Anrufer eine herunterladbare PDF-Datei erhält.
Welcher Azure-Functions-Hosting-Plan sollte für IronPDF verwendet werden?
Der Premium-Plan wird empfohlen. Die Chromium-Engine von IronPDF erfordert signifikanten Speicher — oft mehr als das 1,5 GB Limit des Consumption-Plans. Der Premium-Plan bietet mindestens 3,5 GB und unterstützt vorgewärmte Instanzen, um Kaltstartverzögerungen zu eliminieren.
Warum ist die erste Anfrage an eine neu bereitgestellte Funktion langsam?
Die erste Anfrage nach einem Kaltstart kann 20–60 Sekunden dauern, da Azure das Container-Image laden und IronPDF seine Chromium-Engine initialisieren muss. Nachfolgende Anfragen innerhalb derselben Containerlebensdauer reagieren viel schneller. Die vorgewärmte Instanzen-Funktion des Premium-Plans kann diese Verzögerung eliminieren.
Wie aktualisiert man eine bestehende Azure Function App, um ein neues Docker-Image zu verwenden?
Bauen Sie das neue Image mit einem aktualisierten Tag neu und pushen Sie es, dann führen Sie erneut az functionapp create mit dem neuen --deployment-container-image-name-Wert aus oder aktualisieren Sie die Containereinstellungen im Azure-Portal unter dem Bereitstellungszentrum der Function App.
Kann IronPDF HTML-Strings in einer Azure-Funktion rendern, nicht nur URLs?
Ja. Ersetzen Sie PdfDocument.renderUrlAsPdf(url) durch PdfDocument.renderHtmlAsPdf(htmlString), um einen HTML-String direkt zu rendern. Die Funktionsstruktur und das Antworthandling bleiben gleich.
Was passiert, wenn der url-Abfrageparameter in der Anfrage fehlt?
Die Funktion prüft, ob der url-Parameter null ist, und gibt eine HTTP 400 Bad Request Antwort mit einer beschreibenden Nachricht zurück, bevor eine PDF-Renderung versucht wird.


