Cómo ejecutar IronPDF for Java en una función Azure

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

  • IronPDF for Java sólo admite la implementación en Docker.
  • No se admite la implantación Zip, ya que IronPDF requiere la ejecución de binarios en tiempo de ejecución.

  1. Siga elGuía oficial de Microsoft para la creación de funciones en Linux mediante imágenes personalizadas

    • Para Elegir un lenguaje de programación -> seleccione Java.

    • Sigue la guía hasta que tu aplicación esté en funcionamiento.
  2. Añadir la dependencia IronPDF

    • Añade esto a tu pom con la última <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
  • Nota: ironpdf-engine-linux es requerido para ejecutar IronPDF en Docker.
  1. Añadir una función `RenderPdf

    • Añade una nueva función en Function.java.

    • Esta función recibirá una URL y devolverá un PDF renderizado.
    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. Actualizar Dockerfile

    • Añada los paquetes necesarios de IronPDF Linux.

    En el ejemplo, la imagen Docker base es mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build, que es Debian 11.

    Así que tenemos que añadir estos paquetes al archivo 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. Vuelva a implementar su función en Azure

    1. Construir y empaquetar mvn clean package.

    2. Construya la imagen Docker, por ejemplo docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 ..

    3. Empuje la imagen Docker, por ejemplo docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0.

    4. Actualice la función Azure, por ejemplo, `az functionapp create --name--storage-account--resource-group AzureFunctionsContainers-rg --plan myPremiumPlan --deployment-container-image-name/azurefunctionsimage:v1.0.0``.
  2. Disfruta de IronPDF

    • Función de activación en: https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.google.com

    • Nota: La primera vez que se active la función, puede ser lenta o fallar debido a la inicialización, pero después irá bien.