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();
        }
    }
}
JAVA

!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Índice

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:

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

ImportanteIronPDF for Java requer o artefato 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
SHELL

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).

ObserveO arquétipo Maven do Azure Functions gera um 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>
XML

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.

PontasVerifique as notas de lançamento do IronPDF for Java para a versão estável mais recente. Usar a versão mais recente garante compatibilidade com o mecanismo de renderização Chromium mais recente e evita bugs conhecidos.

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();
        }
    }
}
JAVA

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.

ImportanteA configuração 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.

ObserveSe a versão da imagem base do Azure Functions mudar ou for usada uma distro Linux diferente como base, os pacotes necessários podem diferir. Consulte o Guia de Instalação do IronPDF Linux para uma matriz de dependência completa entre Debian, Ubuntu, CentOS e Alpine.

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
SHELL

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 .
SHELL

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
SHELL

PontasAzure Container Registry (ACR) é uma alternativa privada ao Docker Hub. ACR se integra diretamente ao Azure Active Directory e é a escolha recomendada para cargas de trabalho de produção onde a privacidade da imagem é importante.

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
SHELL

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"
SHELL

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.

AvisoO plano de Consumo (Serverless) não é recomendado para IronPDF no Azure Functions. A renderização de PDF com Chromium requer mais memória do que o plano de Consumo aloca. Use um plano Premium ou Dedicado (App Service) para evitar erros de out-of-memory.

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"
SHELL

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.

ImportanteA primeira solicitação após um início a frio pode levar 20-60 segundos enquanto o Azure baixa a imagem do contêiner e o IronPDF inicializa o Chromium. Solicitações subsequentes dentro do mesmo tempo de vida do contêiner são muito mais rápidas. O recurso de instância pré-aquecida do plano Premium elimina inícios a frio mantendo pelo menos uma instância em execução continuamente.

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 authLevel por FUNCTION e 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:

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.

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.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

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