Comment exécuter IronPDF for Java dans une fonction Azure
- IronPDF pour Java ne prend en charge que le déploiement Docker.
- Le déploiement Zip n'est pas pris en charge, car IronPDF nécessite l'exécution des binaires au moment de l'exécution.
- Suivez le Guide officiel de Microsoft pour créer une fonction sur Linux en utilisant une image personnalisée
- Pour
Choose a programming language-> sélectionnezJava - Suivez le guide jusqu'à ce que votre application soit opérationnelle.
- Pour
-
Ajoutez la dépendance IronPDF
- Ajoutez ceci à votre fichier pom avec la dernière version
<version>:
<dependencies> <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>2022.xx.x</version> </dependency> <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf-engine-linux-x64</artifactId> <version>2022.xx.x</version> </dependency> </dependencies><dependencies> <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf</artifactId> <version>2022.xx.x</version> </dependency> <dependency> <groupId>com.ironsoftware</groupId> <artifactId>ironpdf-engine-linux-x64</artifactId> <version>2022.xx.x</version> </dependency> </dependencies>XML- Remarque :
ironpdf-engine-linux-x64est requis pour exécuter IronPDF dans Docker.
- Ajoutez ceci à votre fichier pom avec la dernière version
-
Ajouter une fonction
RenderPdf- Ajouter une nouvelle fonction dans
Function.java - Cette fonction recevra une URL et renverra un PDF rendu.
import com.microsoft.azure.functions.*; import com.ironsoftware.ironpdf.PdfDocument; import java.util.Optional; public class Function { /** * Azure function to render a URL as a PDF and return it. * Triggered by an HTTP request with a URL query string parameter. */ @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("Java HTTP trigger processed a request. (RenderPdf)"); // Parse query parameter for the URL final String url = request.getQueryParameters().get("url"); // Check if the URL parameter is provided if (url == null) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST) .body("Please pass a url on the query string") .build(); } else { try { context.getLogger().info("IronPDF is attempting to render the URL: " + url); // Render the given URL as a PDF PdfDocument pdfDocument = PdfDocument.renderUrlAsPdf(url); // Convert the PDF document to binary data byte[] content = pdfDocument.getBinaryData(); // Return the PDF as an attachment in the response return request.createResponseBuilder(HttpStatus.OK) .body(content) .header("Content-Disposition", "attachment; filename=ironpdf_result.pdf") .build(); } catch (Exception e) { context.getLogger().severe("Failed to render PDF: " + e.getMessage()); return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR) .body("An error occurred while rendering the PDF.") .build(); } } } }import com.microsoft.azure.functions.*; import com.ironsoftware.ironpdf.PdfDocument; import java.util.Optional; public class Function { /** * Azure function to render a URL as a PDF and return it. * Triggered by an HTTP request with a URL query string parameter. */ @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("Java HTTP trigger processed a request. (RenderPdf)"); // Parse query parameter for the URL final String url = request.getQueryParameters().get("url"); // Check if the URL parameter is provided if (url == null) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST) .body("Please pass a url on the query string") .build(); } else { try { context.getLogger().info("IronPDF is attempting to render the URL: " + url); // Render the given URL as a PDF PdfDocument pdfDocument = PdfDocument.renderUrlAsPdf(url); // Convert the PDF document to binary data byte[] content = pdfDocument.getBinaryData(); // Return the PDF as an attachment in the response return request.createResponseBuilder(HttpStatus.OK) .body(content) .header("Content-Disposition", "attachment; filename=ironpdf_result.pdf") .build(); } catch (Exception e) { context.getLogger().severe("Failed to render PDF: " + e.getMessage()); return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR) .body("An error occurred while rendering the PDF.") .build(); } } } }JAVA - Ajouter une nouvelle fonction dans
-
Mettez à jour Dockerfile
- Ajoutez les paquets requis par IronPDF pour Linux. D'après l'exemple, l'image Docker de base est
mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build, qui est basée surDebian 11. Nous devons donc ajouter ces paquets au Dockerfile.
RUN apt update \ && apt 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 RUN apt-get install -y xvfb libva-dev libgdiplus- Pour les autres distros Linux, veuillez consulter Guide d'installation d'IronPdf Linux
- Ajoutez les paquets requis par IronPDF pour Linux. D'après l'exemple, l'image Docker de base est
-
Redéployez votre fonction sur Azure
- Compilation et empaquetage :
mvn clean package - Créer une image Docker :
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 . - Envoyer l'image Docker :
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0 - Mettez à jour la fonction Azure :
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> \ --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan \ --deployment-container-image-name <DOCKER_ID>/azurefunctionsimage:v1.0.0az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> \ --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan \ --deployment-container-image-name <DOCKER_ID>/azurefunctionsimage:v1.0.0SHELL
- Compilation et empaquetage :
- Profitez d'IronPDF
- Fonction de déclenchement à :
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.google.com - Remarque : La première fois que la fonction est déclenchée, elle peut être lente ou échouer en raison de l'initialisation, mais après cela, elle devrait fonctionner de manière cohérente.
- Fonction de déclenchement à :
Questions Fréquemment Posées
Comment puis-je créer un générateur de PDF en Java en utilisant Azure Functions?
Vous pouvez créer un générateur de PDF en Java en utilisant Azure Functions en déployant IronPDF via Docker. Cela implique d'utiliser la bibliothèque IronPDF pour gérer les tâches de génération de PDF dans un environnement Azure Function.
Pourquoi le déploiement Docker est-il nécessaire pour IronPDF sur Azure Functions?
Le déploiement Docker est nécessaire pour IronPDF sur Azure Functions car il nécessite l'exécution de binaires au moment de l'exécution, ce qui n'est pas pris en charge par les méthodes de déploiement Zip.
Quelles sont les étapes pour ajouter des dépendances IronPDF à un projet Maven?
Pour ajouter des dépendances IronPDF à un projet Maven, incluez les bibliothèques IronPDF et `ironpdf-engine-linux-x64` dans le fichier `pom.xml`. Assurez-vous d'utiliser les derniers numéros de version pour la compatibilité.
Comment fonctionne la fonction RenderPdf dans une Azure Function?
La fonction RenderPdf dans une Azure Function lit une URL à partir d'une requête HTTP, utilise la méthode `PdfDocument.renderUrlAsPdf` d'IronPDF pour rendre l’URL en PDF et retourne le PDF en pièce jointe dans la réponse.
Quels paquets Linux sont requis dans le Dockerfile pour IronPDF?
Le Dockerfile pour IronPDF devrait inclure des paquets Linux comme `libgdiplus`, `libxkbcommon-x11-0`, `libc6`, et `libgtk2.0-0` pour assurer un bon fonctionnement avec une image basée sur Debian.
Que devrais-je attendre la première fois que je déclenche la fonction de génération de PDF?
La première fois que vous déclenchez la fonction de génération de PDF, il se peut qu'elle soit lente ou échoue en raison des processus d'initialisation. Les exécutions ultérieures devraient être plus cohérentes.
Comment puis-je déployer une image Docker pour une Azure Function?
Pour déployer une image Docker pour une Azure Function, construisez votre projet avec `mvn clean package`, créez l'image Docker, poussez-la vers un registre Docker, et mettez à jour la fonction Azure pour utiliser cette nouvelle image.
Quel est le format d'URL correct pour déclencher une fonction de génération de PDF dans Azure?
Pour déclencher la fonction de génération de PDF, utilisez le format d'URL : `https://
Où puis-je trouver des ressources pour configurer une Azure Function avec une image Docker personnalisée?
Pour configurer une Azure Function avec une image Docker personnalisée, vous pouvez vous référer au Guide Officiel de Microsoft pour Créer une Azure Function sur Linux en Utilisant une Image Personnalisée.

