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.
Como converter HTML para PDF em uma Função do Azure
- Instalar biblioteca C# para converter HTML em PDF em uma Função do Azure
- Escolha o nível de hospedagem Azure Basic B1 ou superior.
- Desmarque a opção `Run from package file` ao publicar.
- Siga as instruções de configuração recomendadas.
- Use o exemplo de código para criar um gerador de PDF usando o Azure.
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.
- Pacote IronPdf.Linux
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 .
- Pacote IronPdf
Install-Package IronPdf
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).
- Pacote IronPdf.Slim
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.
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.
- No Linux, defina
Installation.LinuxAndDockerDependenciesAutoConfig=true;para garantir quelibgdiplusesteja instalado na máquina. - Adicione o seguinte ao arquivo .csproj do seu projeto .NET 6:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
- Crie um arquivo em seu projeto chamado
runtimeconfig.template.jsone preencha-o com o seguinte:
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
- 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)
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
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.

