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

  • IronPDF para 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 esta guía oficial de Microsoft
  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)");
        //  Parámetro de consulta Parse
        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
  • Para otras distribuciones de Linux, consulte /how-to/linux/
    1. Vuelva a implementar su función en Azure
    2. Construir y empaquetar mvn clean package.
      1. 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``.
    5. 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 que se ralentice o falle debido a la inicialización, pero después irá bien.