Este guia cobre tudo o que é necessário para implantar IronPDF for Java dentro de um contêiner Azure Functions e gerar PDFs sob demanda a partir de um endpoint HTTP sem servidor. Como o IronPDF fornece um mecanismo de renderização nativo Chromium, ele deve ser empacotado como uma imagem Docker — a implantação padrão Zip no Azure Functions não pode executar os binários dos quais o IronPDF depende em tempo de execução. Seguindo este guia, uma Azure Function funcional aceitará um URL como um parâmetro de consulta e retornará um PDF totalmente renderizado como um arquivo para download.
A abordagem usa o fluxo de trabalho de contêiner personalizado recomendado pela Microsoft para Azure Functions baseados em Linux. Um projeto Maven fornece o código da função e o gerenciamento de dependências. O Docker constrói a imagem do contêiner, que é empurrada para um registro e referenciada pelo Azure Function App. Uma vez implantado, o tempo de início a frio é a principal consideração de desempenho — invocações subsequentes são rápidas e consistentes.
Antes de começar, certifique-se de que o CLI do Azure, Docker Desktop, Maven 3.8+ e JDK 11 ou JDK 17 estejam instalados localmente. Também é necessária uma assinatura ativa do Azure com permissão para criar Aplicativos de Função e contas de armazenamento.
Início Rápido: Implante IronPDF for Java no Azure Functions
O código abaixo mostra a função completa do Azure RenderPdf. Ele aceita um parâmetro de consulta url e retorna um fluxo de bytes PDF. Adicione isto a Function.java após concluir a configuração de dependências do Maven nas seções que se seguem.
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@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("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@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("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Índice
- Quais são os Pré-requisitos?
- Como Você Configura o Projeto de Azure Function?
- Como Você Adiciona Dependências do IronPDF ao Seu Projeto Maven?
- Como Você Escreve a Função RenderPdf?
- Como Você Configura o Dockerfile para o IronPDF?
- Como Você Constrói e Empurra a Imagem Docker?
- Como Você Implanta a Função no Azure?
- Como Você Aciona e Testa a Função?
- Quais são os próximos passos?
Quais são os Pré-requisitos? {#pré-requisitos}
Antes de começar, confirme que todas as ferramentas necessárias estão instaladas e que uma assinatura Azure está ativa. Ignorar essas verificações geralmente resulta em falhas de construção durante o processo de implantação.
Ferramentas locais necessárias:
- CLI do Azure (versão 2.40 ou posterior)
- Docker Desktop com contêineres Linux habilitados
- Maven 3.8 ou posterior
- JDK 11 ou JDK 17 (JDK 17 é a versão LTS recomendada)
- Core Tools do Azure Functions v4
Recursos do Azure necessários:
- Uma assinatura Azure ativa
- Permissões para criar Grupos de Recursos, Contas de Armazenamento e Planos de Aplicativos de Função
- Uma conta Docker Hub (ou Registro de Contêineres Azure) para hospedar a imagem construída
ironpdf-engine-linux-x64 ao ser executado dentro de qualquer contêiner Docker. A implantação padrão Zip no Azure Functions não pode executar os binários nativos do IronPDF — Docker é o único método de implantação suportado.Execute az login para autenticar a CLI do Azure antes de prosseguir para a próxima seção.
Como Você Configura o Projeto de Azure Function? {#set-up-project}
O guia da Microsoft para criar uma função no Linux usando uma imagem personalizada cobre todo o processo de estruturação. Siga essas etapas com uma seleção importante: escolha Java quando solicitado para uma linguagem de programação.
Percorra o guia até que o projeto estruturado seja construído e a função de espaço reservado seja executada localmente usando o Core Tools do Azure Functions. Verifique isso com:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
Uma vez que o espaço reservado responda a uma solicitação HTTP local, a estrutura do projeto está correta e pronta para integração do IronPDF. Os arquivos principais são pom.xml (configuração do Maven ), Function.java (código da função) e Dockerfile (definição do contêiner).
host.json e local.settings.json juntamente com pom.xml. O arquivo local.settings.json armazena variáveis de ambiente para desenvolvimento local — ele é excluído do controle de versão por padrão e nunca deve ser incluído no commit.Como Você Adiciona Dependências do IronPDF ao Seu Projeto Maven? {#add-IronPDF-dependencies}
IronPDF for Java é distribuído através do Maven Central. São necessários dois artefatos: a biblioteca principal ironpdf, que fornece a API Java, e o artefato ironpdf-engine-linux-x64, que inclui o mecanismo Chromium nativo compilado para Linux x86-64. O artefato do mecanismo é o que torna a implantação do Docker obrigatória — ele fornece binários que devem ser executados em tempo de execução.
Abra o bloco pom.xml e adicione o seguinte dentro do bloco <dependencies>. Substitua LATEST_VERSION pela versão atual disponível no Maven Central :
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
Ambos os artefatos devem usar o mesmo número de versão. Versões incompatíveis entre ironpdf e ironpdf-engine-linux-x64 causam uma exceção em tempo de execução quando a função tenta renderizar um PDF pela primeira vez.
Após atualizar pom.xml, execute mvn dependency:resolve para verificar se o Maven consegue baixar ambos os artefatos do Central antes de investir tempo na construção da imagem Docker.
Como Você Escreve a Função RenderPdf? {#write-renderpdf-function}
A função RenderPdf é uma Função do Azure acionada por HTTP que aceita um parâmetro de consulta url, renderiza a página de destino usando o mecanismo baseado no Chromium do IronPDF e retorna o PDF resultante como uma resposta binária com um cabeçalho Content-Disposition: attachment. Este cabeçalho informa ao navegador (ou cliente HTTP) que deve baixar o PDF em vez de exibi-lo em linha.
O código completo da função é mostrado no Início Rápido acima. Coloque-o em src/main/java/com/example/Function.java, substituindo ou estendendo o espaço reservado gerado pelo arquétipo Maven .
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
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) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
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) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
PdfDocument.renderUrlAsPdf(url) inicia uma instância do Chromium sem interface gráfica dentro do contêiner, carrega completamente a URL de destino (incluindo JavaScript) e captura a saída renderizada como um PDF. Isso produz uma saída que é visualmente idêntica ao que o usuário vê em um navegador, tornando-o adequado para capturar aplicativos web modernos, painéis e páginas de relatório.
authLevel = AuthorizationLevel.ANONYMOUS no gatilho da função torna o endpoint publicamente acessível. Para implantações em produção, altere isso para FUNCTION ou ADMIN e passe a chave da função no cabeçalho da solicitação.Como Você Configura o Dockerfile para o IronPDF? {#configure-dockerfile}
O mecanismo Chromium do IronPDF depende de um conjunto de bibliotecas Linux compartilhadas que não estão incluídas na imagem base do Azure Functions. A imagem base mcr.microsoft.com/azure-functions/java:4-java17-build é construída no Debian 11, portanto os pacotes devem ser instalados usando apt.
Os seguintes comandos RUN devem ser adicionados ao Dockerfile gerado pelo arquétipo Maven do Azure Functions. Coloque-os após a instrução FROM e antes das etapas COPY que adicionam o arquivo JAR do aplicativo:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/Dockerfile
FROM mcr.microsoft.com/azure-functions/java:4-java17-build AS installer-env
# Install system dependencies required by IronPDF's Chromium renderer
RUN apt-get update && apt-get 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 \
&& apt-get install -y xvfb libva-dev libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Copy the built function JAR
COPY --from=installer-env /home/site/wwwroot /home/site/wwwroot
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
O pacote libgdiplus fornece compatibilidade com GDI+ para renderização gráfica. Os códigos libnss3 e libatk-bridge2.0-0 são necessários para as camadas de sandbox e acessibilidade do Chromium. xvfb fornece um framebuffer virtual, que o Chromium requer mesmo no modo headless em algumas configurações do Debian. A etapa rm -rf /var/lib/apt/lists/* no final do bloco RUN remove o cache do gerenciador de pacotes, mantendo o tamanho final da imagem o menor possível.
Como Você Constrói e Empurra a Imagem Docker? {#build-push-docker}
Com o projeto Maven construído e o Dockerfile atualizado, a imagem contêiner pode ser montada e carregada em um registro Docker. O Azure Functions puxa esta imagem quando o Aplicativo de Função é criado ou atualizado.
Passo 1 — Compile e empacote o projeto Maven:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
O Maven compila o código da função, resolve todas as dependências (incluindo ambos os artefatos do IronPDF ) e produz um JAR implantável no diretório target/. Corrija quaisquer erros de compilação antes de prosseguir.
Passo 2 — Construa a imagem Docker:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
A construção instala os pacotes Linux listados no Dockerfile, copia o JAR e coloca tudo em camadas em uma imagem final. Na primeira construção, pode levar vários minutos enquanto downloads de pacotes e cache de camadas são estabelecidos. Construções subsequentes usando a mesma imagem base são significativamente mais rápidas.
Passo 3 — Empurre a imagem para o Docker Hub:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
Como Você Implanta a Função no Azure? {#deploy-to-azure}
Com a imagem no registro, o Aplicativo de Função do Azure pode ser criado (ou atualizado) para referenciá-la. O comando az functionapp create provisiona o aplicativo de funções, o vincula a uma conta de armazenamento e define a imagem do contêiner em uma única etapa.
Passo 1 — Crie ou atualize o Aplicativo de Função:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
Substitua <APP_NAME> por um nome globalmente exclusivo para o Aplicativo de Funções, <STORAGE_NAME> por um nome de conta de Armazenamento do Azure existente e <DOCKER_ID> pelo nome de usuário do Docker Hub ou servidor de login do ACR usado na etapa anterior.
A flag --plan myPremiumPlan seleciona um plano de hospedagem Premium. O mecanismo Chromium do IronPDF consome memória significativa durante a renderização; O limite de memória de 1.5 GB do plano de Consumo geralmente é insuficiente. O plano Premium fornece pelo menos 3.5 GB e suporta instâncias pré-aquecidas que eliminam a latência de início a frio.
Passo 2 — Verifique a implantação:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
O comando retorna "Running" quando o contêiner é iniciado com sucesso. Se retornar "Starting" ou um erro, verifique o Fluxo de Logs do portal do Azure no Aplicativo de Funções para erros de inicialização ou de extração do contêiner.
Como Você Aciona e Testa a Função? {#trigger-and-test}
Assim que o aplicativo de funções reportar um estado Running, o endpoint RenderPdf estará pronto para aceitar solicitações. O URL do endpoint segue um padrão previsível com base no nome do aplicativo de funções e no nome da função definido na anotação @FunctionName.
Teste usando um navegador ou curl:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
Uma resposta bem-sucedida salva um arquivo PDF chamado output.pdf no diretório atual. A flag -o no curl grava o corpo da resposta binária em um arquivo em vez de imprimi-lo no terminal.
Ao testar em um navegador, navegue para:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com
O navegador irá solicitar o download de um PDF. Abra-o para verificar se a página foi renderizada corretamente.
Verificando logs para erros: Navegue até o portal do Azure, abra o Aplicativo de Função e selecione Stream de Log em Monitoramento. Os registros de chamadas context.getLogger() aparecem aqui quase em tempo real, o que facilita o diagnóstico de falhas de renderização.
Quais são os próximos passos? {#próximos-passos}
Este guia demonstrou como implantar o IronPDF for Java dentro de um contêiner Docker do Azure Functions, escrever uma função acionada por HTTP que renderiza URLs como PDFs, configurar o Dockerfile com as dependências Linux necessárias e testar o endpoint ao vivo. O mesmo padrão se estende para casos de uso mais avançados com mudanças mínimas.
Estenda a função:
- Renderizar strings HTML diretamente usando
PdfDocument.renderHtmlAsPdf(htmlString)em vez de uma URL - Aplique marcas d'água, mescle vários PDFs ou adicione assinaturas digitais usando a API completa de PDF Java do IronPDF
- Leia cabeçalhos de solicitação ou corpo de POST para passar conteúdo HTML personalizado ou opções de renderização
Melhore a prontidão para produção:
- Troque
authLevelporFUNCTIONe alterne as teclas de função regularmente. - Use Azure Key Vault para armazenar quaisquer segredos referenciados nas configurações do aplicativo
- Configure Application Insights para observabilidade de ponta a ponta da latência de renderização e taxas de falha
- Configure um webhook de atualização de imagem Docker para que o Azure faça o redeploy automático quando uma nova versão de imagem for enviada
Explore mais guias do IronPDF for Java:
- IronPDF for Java: Guia de Instalação no Linux
- Gerar PDFs a partir de HTML no Java
- IronPDF for Java: Guia de Implantação com Docker
- Referência Completa da API IronPDF Java
Inicie uma avaliação gratuita do IronPDF para acessar todos os recursos de renderização e manipulação sem marca d'água durante o período de avaliação. Quando estiver pronto para implantar em produção, veja as opções de licenciamento do IronPDF para encontrar o plano que se adapta à escala do projeto.
Perguntas frequentes
Por que é necessário a implantação de Docker para o IronPDF no Azure Functions?
IronPDF vem com um mecanismo de renderização Chromium nativo que deve executar binários em tempo de execução. A implantação Zip do Azure Functions não pode executar binários nativos, portanto, uma imagem de contêiner Docker é o único caminho de implantação suportado.
Quais artefatos Maven são necessários para executar o IronPDF dentro de um contêiner Docker?
São necessários dois artefatos em pom.xml: com.ironsoftware:ironpdf para a API Java e com.ironsoftware:ironpdf-engine-linux-x64 para o mecanismo Chromium nativo. Ambos devem compartilhar o mesmo número de versão.
Quais pacotes Linux o Dockerfile deve instalar para o IronPDF?
O Dockerfile deve instalar 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, xvfb e libva-dev.
O que a função RenderPdf faz?
A função RenderPdf é uma função Azure acionada por HTTP que lê um parâmetro de consulta url, o passa para PdfDocument.renderUrlAsPdf, e retorna os bytes resultantes do PDF com um cabeçalho Content-Disposition: attachment para que o chamador receba um arquivo PDF para download.
Qual plano de hospedagem no Azure Functions deve ser usado para o IronPDF?
O plano Premium é recomendado. O mecanismo Chromium do IronPDF requer memória significativa — muitas vezes mais do que o limite de 1,5 GB no plano de Consumo. O plano Premium fornece pelo menos 3,5 GB e suporta instâncias pré-aquecidas para eliminar a latência de início a frio.
Por que a primeira solicitação para uma função recém-implantada é lenta?
A primeira solicitação após um início a frio pode levar de 20 a 60 segundos porque o Azure deve puxar a imagem do contêiner e o IronPDF deve inicializar seu mecanismo Chromium. As solicitações subsequentes dentro do mesmo tempo de vida do contêiner respondem muito mais rapidamente. O recurso de instâncias pré-aquecidas do plano Premium pode eliminar esse atraso.
Como você atualiza um Function App do Azure existente para usar uma nova imagem Docker?
Reconstrua e envie a nova imagem com uma tag atualizada, depois execute az functionapp create novamente com o novo valor --deployment-container-image-name, ou atualize as configurações do contêiner no portal Azure sob o centro de implantação do Function App.
O IronPDF pode renderizar strings HTML em uma função Azure, não apenas URLs?
Sim. Substitua PdfDocument.renderUrlAsPdf(url) por PdfDocument.renderHtmlAsPdf(htmlString) para renderizar diretamente uma string HTML. A estrutura da função e o manuseio da resposta permanecem os mesmos.
O que acontece se o parâmetro de consulta url estiver ausente da solicitação?
A função verifica se o parâmetro url é null e retorna uma resposta HTTP 400 Bad Request com uma mensagem descritiva antes de tentar qualquer renderização de PDF.


