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

Chaknith Bin
Chaknith Bin
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.
Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.