Cómo ejecutar y desplegar IronPDF .NET en Azure Function
Sí. IronPDF se puede utilizar para generar, manipular y leer documentos PDF en Azure. IronPDF ha sido rigurosamente probado en múltiples plataformas Azure, incluyendo sitios web MVC, Azure Functions y muchos más.
Cómo convertir HTML a PDF en Azure Function
- Instalar biblioteca C# para convertir HTML a PDF en Azure Function
- Elige el nivel de alojamiento Azure Basic B1 o superior
- Desactive la opción `Ejecutar desde archivo de paquete` al publicar
- Sigue las instrucciones de configuración recomendadas
- Usa el ejemplo de código para crear un generador de PDF usando Azure
Tutorial de cómo hacerlo
Instalar el paquete IronPdf
Las aplicaciones Azure Function tienen tres entornos distintos: Linux, Windows y Container. Este artículo explica cómo configurar IronPdf en los tres entornos. Entre estos, se recomienda el Azure Function App Container porque proporciona un entorno aislado. Para comenzar, seleccionemos el paquete adecuado para instalar.
Contenedor de aplicaciones de funciones de Azure
Azure Function App Container implica molestias mínimas, lo que lo convierte en la forma recomendada de desplegar IronPdf.
- Paquete IronPdf.Linux
Install-Package IronPdf.Linux
Configurar Archivo Docker
Configure el archivo Docker basándose en la distribución de Linux que está utilizando. Consulte este artículo para obtener instrucciones detalladas.
Aplicación de función de Azure (Windows)
Para usar el paquete estándar IronPDF, asegúrese de que la opción Ejecutar desde archivo de paquete esté desmarcada. Habilitar esta opción despliega el proyecto como un archivo ZIP, lo que interfiere con la configuración de archivos de IronPdf. Si prefiere habilitar la opción Ejecutar desde archivo de paquete, instale el paquete IronPdf.Slim en su lugar.
- Paquete IronPDF
Install-Package IronPdf
Aplicación de función de Azure (Linux)
Para Azure Function App (Linux), el proyecto se despliega como un archivo ZIP por defecto, y este comportamiento no se puede desactivar. Esto es similar a habilitar la opción Ejecutar desde archivo de paquete en Azure Function App (Windows).
- Paquete IronPdf.Slim
Install-Package IronPdf.Slim
Seleccione las opciones correctas de Azure
Elegir el nivel de alojamiento correcto
Azure Basic B1 es el nivel mínimo de alojamiento requerido para las necesidades de renderizado de nuestros usuarios finales. Si está creando un sistema de alto rendimiento, esto puede necesitar ser actualizado.
Configuración para .NET 6
Microsoft eliminó recientemente las bibliotecas de imágenes de .NET 6+, rompiendo muchas API heredadas. Por lo tanto, es necesario configurar su proyecto para permitir aún estas llamadas a API heredadas.
- En Linux, configure
Installation.LinuxAndDockerDependenciesAutoConfig=true;para asegurarse de quelibgdiplusesté instalado en la máquina. - Agregue lo siguiente al archivo .csproj para su proyecto .NET 6:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
- Cree un archivo en su proyecto llamado
runtimeconfig.template.jsony complételo con lo siguiente:
{
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
- Finalmente, agregue la siguiente línea al inicio de su programa:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
Ejemplo de código de función Azure
Este ejemplo convierte HTML a PDF y envía automáticamente entradas de registro al registrador integrado de 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
Crear un proyecto usando la plantilla de Azure Function en Visual Studio puede resultar en un código ligeramente diferente. Debido a estas diferencias, incluso con el mismo paquete instalado, un proyecto podría funcionar mientras que el otro no. Si esto ocurre, establezca la propiedad CustomDeploymentDirectory a "/tmp".
Entender cada configuración de instalación
- LinuxAndDockerDependenciesAutoConfig: Esta configuración verifica e intenta descargar todas las dependencias necesarias para el motor de Chrome. Es requerido cuando se usan sistemas sin interfaz gráfica, como Linux. En sistemas de contenedor, las dependencias generalmente se enumeran en el Dockerfile; por lo tanto, puede establecer esto en falso.
- AutomaticallyDownloadNativeBinaries: Esta opción descarga el binario Chrome nativo en tiempo de ejecución. Es requerido cuando se usa el paquete IronPdf.Slim.
- CustomDeploymentDirectory: Esta configuración es necesaria para sistemas con acceso de escritura limitado.
Asuntos conocidos
El renderizado de fuentes SVG no está disponible en los planes de alojamiento compartido
Una limitación que hemos encontrado es que la plataforma de alojamiento Azure no soporta servidores cargando fuentes SVG, como las fuentes de Google, en sus niveles de aplicaciones web compartidas más baratos. Esto se debe a que estas plataformas de alojamiento compartido no tienen permitido acceder a objetos gráficos GDI+ de Windows por razones de seguridad.
Recomendamos usar un Contenedor Docker de Windows o Linux o quizás un VPS en Azure para navegar este problema donde se requiere la mejor renderización de fuentes.
Azure Free Tier Hosting es lento
Los niveles gratuitos y compartidos de Azure, y el plan de consumo, no son adecuados para la renderización de PDF. Recomendamos el plan de alojamiento B1 de Azure/plan Premium, que es el que usamos nosotros mismos. El proceso HTML to PDF supone un trabajo considerable para cualquier ordenador, similar a abrir y renderizar una página web en el propio equipo. Se utiliza un motor de navegador real , por lo que debemos realizar las provisiones necesarias y esperar tiempos de renderizado similares a los de un ordenador de escritorio de potencia similar.
Creación de un ticket de solicitud de soporte de ingeniería
Para crear un ticket de solicitud, consulte la guía 'Cómo Hacer una Solicitud de Soporte Técnico para IronPDF'
Preguntas Frecuentes
¿Cómo puedo alojar una biblioteca para generar PDFs en Azure?
Puedes alojar una biblioteca para generar PDFs como IronPDF en Azure configurando una Azure Function o un sitio web MVC. Asegúrate de tener instalados los paquetes necesarios de NuGet y configura tu entorno de acuerdo con los requisitos de la biblioteca.
¿Qué entornos de Azure son compatibles con una biblioteca de PDF?
IronPDF es compatible con múltiples entornos de Azure, incluidos sitios web MVC y Azure Functions. Está diseñado para funcionar sin problemas en diferentes plataformas proporcionadas por Azure.
¿Cuáles son los requisitos de alojamiento para una biblioteca de PDF en Azure?
Para un rendimiento óptimo al usar IronPDF en Azure, se recomienda usar al menos el nivel de alojamiento Azure Basic B1. Esto asegura recursos suficientes para renderizar PDFs eficientemente.
¿Cómo configuro una biblioteca de PDF para una aplicación Azure Function en Linux?
Para configurar IronPDF para una aplicación Azure Function en Linux, instala el paquete IronPDF.Slim. Implementa tu proyecto como un archivo ZIP y asegúrate de que todas las configuraciones estén correctamente establecidas para el entorno Linux.
¿Qué configuraciones se necesitan para .NET 6 al usar una biblioteca de PDF en Azure?
Al usar IronPDF con .NET 6 en Azure, actualiza la configuración de tu proyecto para permitir llamadas a API heredadas. Establece Installation.LinuxAndDockerDependenciesAutoConfig=true e incluye las configuraciones necesarias en los archivos de tu proyecto.
¿Por qué se recomienda un contenedor Docker para renderizar PDFs en Azure?
Se recomienda un contenedor Docker para renderizar PDFs en Azure porque proporciona un entorno más controlado, admite una mejor renderización de fuentes y evita las limitaciones de los planes de alojamiento compartido.
Causas de renderización lenta de PDFs en Azure Free Tier?
La renderización de PDFs es lenta en el nivel gratuito de Azure debido a los recursos de cómputo limitados. El proceso requiere un poder computacional significativo, similar a renderizar una página web, por lo que planes de mayor nivel como B1 o Premium son más adecuados.
¿Cómo puedo solucionar un proyecto de Azure Function que no funciona con una biblioteca de PDF?
Si tu proyecto Azure Function con IronPDF no funciona, verifica que la propiedad CustomDeploymentDirectory esté establecida en '/tmp', y asegúrate de que todos los paquetes y configuraciones necesarias estén correctamente instalados y configurados.
¿Qué opciones de soporte están disponibles para implementar una biblioteca de PDF en Azure?
Para soporte con la implementación de IronPDF en Azure, consulta la guía 'Cómo hacer una solicitud de soporte de ingeniería para IronPDF' en el sitio web de IronPDF para obtener asistencia detallada.

