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

Darrius Serrant
Darrius Serrant
22 de enero, 2023
Actualizado 20 de octubre, 2024
Compartir:
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.
Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Informática de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde una edad temprana, veía la computación como algo misterioso y accesible, lo que la convertía en el medio perfecto para la creatividad y la resolución de problemas.

En Iron Software, Darrius disfruta creando cosas nuevas y simplificando conceptos complejos para hacerlos más comprensibles. Como uno de nuestros desarrolladores residentes, también se ha ofrecido como voluntario para enseñar a los estudiantes, compartiendo su experiencia con la próxima generación.

Para Darrius, su trabajo es gratificante porque es valorado y tiene un impacto real.