Como executar e implantar o IronPDF .NET no Azure Functions

This article was translated from English: Does it need improvement?
Translated
View the article in English
Azure 1 related to Como executar e implantar o IronPDF .NET no Azure Functions

Sim. O IronPDF pode ser usado para gerar, manipular e ler documentos PDF no Azure. O IronPDF foi exaustivamente testado em diversas plataformas Azure, incluindo sites MVC, Azure Functions e muitas outras.


Tutorial de Como Fazer

Instale o pacote IronPdf

O Azure Function Apps possui três ambientes distintos: Linux , Windows e Container . Este artigo explica como configurar o IronPdf nos três ambientes. Dentre essas opções, o Azure Function App Container é recomendado por fornecer um ambiente isolado. Para começar, vamos selecionar o pacote apropriado para instalar.

Contêiner de Aplicativo de Funções do Azure

O contêiner do Azure Function App envolve o mínimo de complicações, tornando-se a maneira recomendada de implantar o IronPdf.

Install-Package IronPdf.Linux

Configurar arquivo Docker

Configure o arquivo Docker com base na distribuição Linux que você está usando. Consulte este artigo para obter instruções detalhadas.

Aplicativo de Funções do Azure (Windows)

Para usar o pacote IronPdf padrão, certifique-se de que a opção "Executar a partir do arquivo de pacote" esteja desmarcada. Habilitar esta opção implanta o projeto como um arquivo ZIP, o que interfere na configuração de arquivos do IronPdf. Se preferir ativar a opção "Executar a partir do arquivo de pacote" , instale o pacote IronPdf.Slim .

Install-Package IronPdf
Azure Package File related to Aplicativo de Funções do Azure (Windows)

Aplicativo de Funções do Azure (Linux)

Para o Azure Function App (Linux), o projeto é implantado como um arquivo ZIP por padrão, e esse comportamento não pode ser desativado. Isso é semelhante a habilitar a opção "Executar a partir de um arquivo de pacote" no Azure Function App (Windows).

Install-Package IronPdf.Linux

Selecione as opções corretas do Azure

Como escolher o plano de hospedagem correto

O Azure Basic B1 é o nível mínimo de hospedagem necessário para atender às necessidades de renderização de nossos usuários finais. Se você estiver criando um sistema de alto rendimento, talvez seja necessário atualizá-lo.

Aviso Observação : A não seleção de um tipo de plano de serviço do aplicativo pode resultar na falha do IronPdf em renderizar documentos PDF.

Escolher o nível de hospedagem correto do Azure Tier

Configuração for .NET 6

A Microsoft removeu recentemente as bibliotecas de imagens do .NET 6+, o que quebrou muitas APIs legadas. Portanto, é necessário configurar seu projeto para ainda permitir chamadas a essas APIs legadas.

  1. No Linux, defina Installation.LinuxAndDockerDependenciesAutoConfig=true; para garantir que libgdiplus esteja instalado na máquina.
  2. Adicione o seguinte ao arquivo .csproj do seu projeto .NET 6:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
XML
  1. Crie um arquivo em seu projeto chamado runtimeconfig.template.json e preencha-o com o seguinte:
{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}
  1. Por fim, adicione a seguinte linha ao início do seu programa:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

Exemplo de código de função do Azure

Este exemplo converte HTML em PDF e gera automaticamente entradas de log no logger integrado do Azure (consulte ILogger log).

[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;

    // Configure IronPdf settings
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
    IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
    IronPdf.Installation.CustomDeploymentDirectory = "/tmp";

    try
    {
        log.LogInformation("About to render PDF...");
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render PDF from a URL
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
        log.LogInformation("Finished rendering PDF...");
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering PDF");
        return new OkObjectResult($"Error while rendering PDF: {e}");
    }
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;

    // Configure IronPdf settings
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
    IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
    IronPdf.Installation.CustomDeploymentDirectory = "/tmp";

    try
    {
        log.LogInformation("About to render PDF...");
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render PDF from a URL
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
        log.LogInformation("Finished rendering PDF...");
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering PDF");
        return new OkObjectResult($"Error while rendering PDF: {e}");
    }
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
	log.LogInformation("Entered PrintPdf API function...")

	' Apply license key
	IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

	' Enable logging
	IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
	IronPdf.Logging.Logger.CustomLogger = log

	' Configure IronPdf settings
	IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
	IronPdf.Installation.AutomaticallyDownloadNativeBinaries = True
	IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
	IronPdf.Installation.CustomDeploymentDirectory = "/tmp"

	Try
		log.LogInformation("About to render PDF...")
		Dim renderer As New ChromePdfRenderer()
		' Render PDF from a URL
		Dim pdf = renderer.RenderUrlAsPdf("https://www.google.com/")
		log.LogInformation("Finished rendering PDF...")
		Return New FileContentResult(pdf.BinaryData, "application/pdf") With {.FileDownloadName = "google.pdf"}
	Catch e As Exception
		log.LogError(e, "Error while rendering PDF")
		Return New OkObjectResult($"Error while rendering PDF: {e}")
	End Try
End Function
$vbLabelText   $csharpLabel

A criação de um projeto usando o modelo de Função do Azure no Visual Studio pode resultar em um código ligeiramente diferente. Devido a essas diferenças, mesmo com o mesmo pacote instalado, um projeto pode funcionar enquanto o outro não. Caso isso ocorra, defina a propriedade CustomDeploymentDirectory como "/tmp" .

Entenda cada configuração de instalação

  • LinuxAndDockerDependenciesAutoConfig : Esta configuração verifica e tenta baixar todas as dependências necessárias para o mecanismo do Chrome. É necessária ao usar sistemas sem interface gráfica, como o Linux. Em sistemas de contêineres, as dependências geralmente são listadas no Dockerfile; portanto, você pode definir isso como falso.
  • AutomaticallyDownloadNativeBinaries : Esta opção baixa o binário nativo do Chrome em tempo de execução. É necessária ao usar o pacote IronPdf.Slim.
  • CustomDeploymentDirectory : Esta configuração é necessária para sistemas com acesso de gravação limitado.

Problemas conhecidos

A renderização de fontes SVG não está disponível em planos de hospedagem compartilhada.

Uma limitação que encontramos é que a plataforma de hospedagem Azure não oferece suporte a servidores que carregam fontes SVG, como o Google Fonts, em seus planos mais baratos de aplicativos web compartilhados. Isso ocorre porque essas plataformas de hospedagem compartilhada não têm permissão para acessar objetos gráficos GDI+ do Windows por motivos de segurança.

Recomendamos o uso de um contêiner Docker para Windows ou Linux , ou talvez um VPS no Azure, para lidar com esse problema quando a melhor renderização de fontes for necessária.

A hospedagem gratuita do Azure é lenta.

Os planos gratuitos e compartilhados do Azure, assim como o plano de consumo, não são adequados para renderização de PDFs. Recomendamos o plano de hospedagem Azure B1/Premium, que é o que nós mesmos utilizamos. O processo de HTML to PDF exige um esforço considerável de qualquer computador, semelhante a abrir e renderizar uma página da web em sua própria máquina. Um mecanismo de navegador real é utilizado , portanto, precisamos provisionar recursos adequadamente e esperar tempos de renderização semelhantes aos de um computador desktop com capacidade similar.

Criando um ticket de solicitação de suporte técnico

Para criar um ticket de solicitação, consulte o guia " Como criar uma solicitação de suporte técnico para o IronPDF ".

Perguntas frequentes

Como posso hospedar uma biblioteca geradora de PDFs no Azure?

Você pode hospedar uma biblioteca geradora de PDFs como o IronPDF no Azure configurando uma Função do Azure ou um site MVC. Certifique-se de ter os pacotes necessários instalados a partir do NuGet e configure seu ambiente de acordo com os requisitos da biblioteca.

Quais ambientes do Azure são compatíveis com uma biblioteca de PDFs?

O IronPDF é compatível com diversos ambientes do Azure, incluindo sites MVC e Funções do Azure. Ele foi projetado para funcionar perfeitamente em diferentes plataformas oferecidas pelo Azure.

Quais são os requisitos de hospedagem para uma biblioteca de PDFs no Azure?

Para obter o melhor desempenho ao usar o IronPDF no Azure, recomenda-se usar pelo menos o nível de hospedagem Azure Basic B1. Isso garante recursos suficientes para renderizar PDFs com eficiência.

Como faço para configurar uma biblioteca de PDFs para um aplicativo de funções do Azure no Linux?

Para configurar o IronPDF para um Aplicativo de Funções do Azure no Linux, instale o pacote IronPDF.Slim. Implante seu projeto como um arquivo ZIP e certifique-se de que todas as configurações estejam definidas corretamente para o ambiente Linux.

Quais configurações são necessárias para o .NET 6 ao usar uma biblioteca PDF no Azure?

Ao usar o IronPDF com .NET 6 no Azure, atualize as configurações do seu projeto para permitir chamadas à API legada. Defina Installation.LinuxAndDockerDependenciesAutoConfig=true e inclua as configurações necessárias nos arquivos do seu projeto.

Por que um contêiner Docker é recomendado para renderização de PDF no Azure?

Recomenda-se o uso de um contêiner Docker para renderização de PDFs no Azure, pois ele oferece um ambiente mais controlado, suporta melhor renderização de fontes e evita as limitações dos planos de hospedagem compartilhada.

O que pode causar lentidão na renderização de PDFs no nível gratuito do Azure?

A renderização de PDFs é lenta no nível gratuito do Azure devido aos recursos computacionais limitados. O processo exige poder computacional significativo, semelhante à renderização de uma página da web, tornando os planos de nível superior, como o B1 ou o Premium, mais adequados.

Como posso solucionar problemas em um projeto do Azure Functions que não está funcionando e que utiliza uma biblioteca PDF?

Se o seu projeto de Função do Azure com IronPDF não estiver funcionando, verifique se a propriedade CustomDeploymentDirectory está definida como '/tmp' e certifique-se de que todos os pacotes e configurações necessários estejam instalados e configurados corretamente.

Quais opções de suporte estão disponíveis para implantar uma biblioteca de PDFs no Azure?

Para obter suporte na implantação do IronPDF no Azure, consulte o guia "Como fazer uma solicitação de suporte técnico para o IronPDF" no site do IronPDF para obter assistência detalhada.

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?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.