How to Run IronPDF for Java in an Azure Function

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

  • IronPDF for 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.

  1. Suivez le Guide officiel de Microsoft pour la création d'une fonction sur Linux à l'aide d'une image personnalisée
    • Pour Choisir un langage de programmation -> sélectionner Java
    • Suivez le guide jusqu'à ce que votre application soit opérationnelle.
  2. Ajouter la dépendance IronPDF

    • Ajoutez ceci à votre pom avec la dernière <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-x64 est nécessaire pour exécuter IronPDF dans Docker.
  3. Ajouter une fonction RenderPdf

    • Ajouter une nouvelle fonction dans Function.java
    • Cette fonction reçoit une URL et renvoie 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
  4. Mise à jour de Dockerfile

    • Ajouter les paquets IronPdf Linux requis. Dans l'exemple, l'image Docker de base est mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build, qui est basée sur Debian 11. Nous devons donc ajouter ces paquets au fichier Docker.
    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
  5. Redéployez votre fonction sur Azure

    1. Construire et empaqueter : mvn clean package
    2. Construire une image Docker : docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    3. Pousser une image Docker : docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    4. Mise à jour de 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.0
      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.0
      SHELL
  6. Profitez d'IronPDF
    • Déclenchez la fonction à l'adresse suivante 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 par la suite, elle devrait fonctionner de manière cohérente.

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://.azurewebsites.net/api/RenderPdf?url=`.

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.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Version : 2025.11 vient de sortir