Como executar o IronPDF for Java em uma Função do Azure
- 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.
- Siga o Guia Oficial da Microsoft para Criar Funções no Linux Usando uma Imagem Personalizada.
- Para
Choose a programming language-> selecioneJavaSiga o guia até que seu aplicativo esteja funcionando corretamente.
- Para
-
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.
- Adicione isto ao seu pom com a versão mais recente
-
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 - Adicionar uma nova função em
-
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 emDebian 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- Para outras distribuições Linux, consulte o Guia de Instalação do IronPDF para Linux.
- Adicione os pacotes necessários do IronPDF para Linux. A partir do exemplo, a imagem base do Docker é
-
Reimplante sua função no Azure
- Construir e empacotar:
mvn clean package - Criar imagem Docker:
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 . - Enviar imagem Docker:
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0 - 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.0az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> \ --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan \ --deployment-container-image-name <DOCKER_ID>/azurefunctionsimage:v1.0.0SHELL
- Construir e empacotar:
- 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.
- Acione a função em:
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://
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.

