Como executar o IronPDF for Java em uma Função do Azure

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

  • O IronPDF for Java suporta apenas implantação em Docker.
  • A implantação em formato Zip não é suportada, pois o IronPDF requer a execução de binários em tempo de execução.

  1. Siga o Guia Oficial da Microsoft para Criar Funções no Linux Usando uma Imagem Personalizada.
    • Para Choose a programming language -> selecione Java Siga o guia até que seu aplicativo esteja funcionando corretamente.
  2. Adicione a dependência do IronPDF

    • Adicione isto ao seu pom com a versão mais recente <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>
    <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
    • Observação: ironpdf-engine-linux-x64 é necessário para executar o IronPDF no Docker.
  3. Adicione uma função RenderPdf

    • Adicionar uma nova função em Function.java
    • Esta função receberá uma URL e retornará um PDF renderizado.
    import com.microsoft.azure.functions.*;
    import com.ironsoftware.ironpdf.PdfDocument;
    import java.util.Optional;
    
    public class Function {
    
        /**
         * Azure function to render a URL as a PDF and return it.
         * Triggered by an HTTP request with a URL query string parameter.
         */
        @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 for the URL
            final String url = request.getQueryParameters().get("url");
    
            // Check if the URL parameter is provided
            if (url == null) {
                return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                        .body("Please pass a url on the query string")
                        .build();
            } else {
                try {
                    context.getLogger().info("IronPDF is attempting to render the URL: " + url);
    
                    // Render the given URL as a PDF
                    PdfDocument pdfDocument = PdfDocument.renderUrlAsPdf(url);
    
                    // Convert the PDF document to binary data
                    byte[] content = pdfDocument.getBinaryData();
    
                    // Return the PDF as an attachment in the response
                    return request.createResponseBuilder(HttpStatus.OK)
                            .body(content)
                            .header("Content-Disposition", "attachment; filename=ironpdf_result.pdf")
                            .build();
                } catch (Exception e) {
                    context.getLogger().severe("Failed to render PDF: " + e.getMessage());
                    return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
                            .body("An error occurred while rendering the PDF.")
                            .build();
                }
            }
        }
    }
    import com.microsoft.azure.functions.*;
    import com.ironsoftware.ironpdf.PdfDocument;
    import java.util.Optional;
    
    public class Function {
    
        /**
         * Azure function to render a URL as a PDF and return it.
         * Triggered by an HTTP request with a URL query string parameter.
         */
        @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 for the URL
            final String url = request.getQueryParameters().get("url");
    
            // Check if the URL parameter is provided
            if (url == null) {
                return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                        .body("Please pass a url on the query string")
                        .build();
            } else {
                try {
                    context.getLogger().info("IronPDF is attempting to render the URL: " + url);
    
                    // Render the given URL as a PDF
                    PdfDocument pdfDocument = PdfDocument.renderUrlAsPdf(url);
    
                    // Convert the PDF document to binary data
                    byte[] content = pdfDocument.getBinaryData();
    
                    // Return the PDF as an attachment in the response
                    return request.createResponseBuilder(HttpStatus.OK)
                            .body(content)
                            .header("Content-Disposition", "attachment; filename=ironpdf_result.pdf")
                            .build();
                } catch (Exception e) {
                    context.getLogger().severe("Failed to render PDF: " + e.getMessage());
                    return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
                            .body("An error occurred while rendering the PDF.")
                            .build();
                }
            }
        }
    }
    JAVA
  4. Atualizar Dockerfile

    • Adicione os pacotes necessários do IronPDF para Linux. A partir do exemplo, a imagem base do Docker é mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build, que é baseada em Debian 11. Portanto, precisamos adicionar esses pacotes ao Dockerfile.
    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
  5. Reimplante sua função no Azure

    1. Construir e empacotar: mvn clean package
    2. Criar imagem Docker: docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    3. Enviar imagem Docker: docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    4. Atualizar função do Azure:
      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
      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
      SHELL
  6. Aproveite o IronPDF
    • Acione a função em: https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.google.com
    • Observação: Na primeira vez que a função for acionada, ela poderá ser lenta ou falhar devido à inicialização, mas depois disso, deverá funcionar de forma consistente.

Perguntas frequentes

Como posso criar um gerador de PDF em Java usando o Azure Functions?

Você pode criar um gerador de PDF em Java usando o Azure Functions, implantando o IronPDF por meio do Docker. Isso envolve o uso da biblioteca IronPDF para lidar com as tarefas de geração de PDF em um ambiente do Azure Functions.

Por que a implantação do Docker é necessária para o IronPDF no Azure Functions?

A implantação do Docker é necessária para o IronPDF no Azure Functions porque exige a execução de binários em tempo de execução, o que não é suportado pelos métodos de implantação Zip.

Quais são os passos para adicionar as dependências do IronPDF a um projeto Maven?

Para adicionar as dependências do IronPDF a um projeto Maven, inclua as bibliotecas `IronPDF` e `ironpdf-engine-linux-x64` no arquivo `pom.xml`. Certifique-se de usar os números de versão mais recentes para garantir a compatibilidade.

Como funciona a função RenderPdf em uma Função do Azure?

A função RenderPdf em uma Função do Azure lê uma URL de uma solicitação HTTP, usa o método `PdfDocument.renderUrlAsPdf` do IronPDF para renderizar a URL como um PDF e retorna o PDF como um anexo na resposta.

Quais pacotes Linux são necessários no Dockerfile para o IronPDF?

O Dockerfile para o IronPDF deve incluir pacotes Linux como `libgdiplus`, `libxkbcommon-x11-0`, `libc6` e `libgtk2.0-0` para garantir o funcionamento adequado em uma imagem baseada em Debian.

O que devo esperar na primeira vez que acionar a função de geração de PDF?

Na primeira vez que você acionar a função de geração de PDF, ela poderá ser lenta ou falhar devido aos processos de inicialização. As execuções subsequentes deverão apresentar um desempenho mais consistente.

Como posso implantar uma imagem Docker para uma Função do Azure?

Para implantar uma imagem Docker para uma Função do Azure, compile seu projeto com ` mvn clean package , crie a imagem Docker, envie-a para um registro Docker e atualize a Função do Azure para usar essa nova imagem.

Qual é o formato de URL correto para acionar uma função de geração de PDF no Azure?

Para ativar a função de geração de PDF, use o seguinte formato de URL: `https:// .azurewebsites.net/api/RenderPdf?url= `.

Onde posso encontrar recursos para configurar uma Função do Azure com uma imagem Docker personalizada?

Para configurar uma Função do Azure com uma imagem Docker personalizada, você pode consultar o Guia Oficial da Microsoft para Criar uma Função do Azure no Linux usando uma imagem personalizada.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas?
executar um exemplo Veja seu HTML se transformar em um PDF.