Comment exécuter IronPDF for Java dans une fonction Azure ?

Darrius Serrant
Darrius Serrant
janvier 22, 2023
Mise à jour octobre 20, 2024
Partager:
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 de binaires au moment de l'exécution.

  1. Suivez lesGuide 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 le dernier <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>
XML
  • Note : ironpdf-engine-linux est required pour exécuter IronPDF dans Docker.
  1. Ajout d'une fonction RenderPdf

    • Ajouter une nouvelle fonction dans Function.java

    • Cette fonction reçoit une URL et renvoie un PDF rendu.
    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) {
        context.getLogger().info("Java HTTP trigger processed a request. (RenderPdf)");
        // Parse query parameter
        final String url = request.getQueryParameters().get("url");
        if (url == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a url on the query string").build();
        } else {
            context.getLogger().info("IronPDF try to render url: " + url);
            PdfDocument pdfDocument = com.ironsoftware.ironpdf.PdfDocument.renderUrlAsPdf(url);
            byte [] content = pdfDocument.getBinaryData();
            return request.createResponseBuilder(HttpStatus.OK)
                    .body(content)
                    .header("Content-Disposition", "attachment; filename=ironpdf_result.pdf")
                    .build();
        }
    }
    }
JAVA
  1. Mise à jour du fichier Docker

    • Ajoutez les paquets requis pour IronPDF Linux.

    Dans l'exemple, l'image Docker de base est mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build, qui est 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
  1. Redéployez votre fonction sur Azure

    1. Construire et empaqueter mvn clean package

    2. Build Docker image e.g. docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .

    3. Push Docker image e.g. docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0

    4. Mettre à jour la fonction Azure, par exemple 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
  2. Profitez d'IronPDF

    • Déclencher la fonction à l'adresse suivante : <APPhttps://.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 ensuite, tout se passera bien.
Darrius Serrant
Ingénieur Logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'une licence en informatique de l'Université de Miami et travaille en tant qu'ingénieur marketing Full Stack WebOps chez Iron Software. Attiré par le code depuis son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le support parfait pour la créativité et la résolution de problèmes.

Chez Iron Software, Darrius apprécie de créer de nouvelles choses et de simplifier des concepts complexes pour les rendre plus compréhensibles. En tant que l'un de nos développeurs résidents, il a également fait du bénévolat pour enseigner aux étudiants, partageant son expertise avec la prochaine génération.

Pour Darrius, son travail est épanouissant car il est apprécié et a un réel impact.