How to Run & Deploy IronPDF .NET on Azure Function

This article was translated from English: Does it need improvement?
Translated
View the article in English
Azure 1 related to How to Run & Deploy IronPDF .NET on 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.


Tutorial de Cómo Hacer

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.

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.

Install-Package IronPdf
Azure Package File related to Aplicación de función de Azure (Windows)

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

Install-Package IronPdf.Slim

Seleccionar las opciones correctas de Azure

Cómo 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.

AdvertenciaNota: No seleccionar un Tipo de Plan de plan de servicio de aplicación puede resultar en que IronPdf falle al renderizar documentos PDF.

Choosing the correct hosting level Azure Tier

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.

  1. En Linux, establezca Installation.LinuxAndDockerDependenciesAutoConfig=true; para asegurar que libgdiplus esté instalado en la máquina
  2. Agregue lo siguiente al archivo .csproj para su proyecto .NET 6:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
XML
  1. Cree un archivo en su proyecto llamado runtimeconfig.template.json y péplelo con lo siguiente:
{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}
  1. 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);
$vbLabelText   $csharpLabel

Ejemplo de código de función de Azure

Este ejemplo está convirtiendo HTML a PDF y automáticamente envía entradas de registro al registrador incorporado de Azure (ver 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}");
    }
}
$vbLabelText   $csharpLabel

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

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

Problemas conocidos

La representación 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.

El alojamiento de nivel gratuito de Azure 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 de HTML to PDF es un 'trabajo' significativo para cualquier computadora, similar a abrir y renderizar una página web en su propia máquina. Se utiliza un motor de navegador real, por lo tanto, necesitamos aprovisionar acorde y esperar tiempos de renderización similares a los de una máquina de escritorio de poder 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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 17,012,929 | Versión: 2025.12 recién lanzado