Ejecutar IronPDF en Linux: Guía de instalación

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF para Linux ocupa aproximadamente 280 MB (incluyendo tanto el código IronPDF como el navegador Chrome completo). Las imágenes de Docker son de aproximadamente 500 MB.

Chrome también requiere algunos paquetes básicos que varían según su distribución de Linux. La mayoría de las distribuciones de Linux ya tienen instalados estos paquetes, ya que son utilizados por varias aplicaciones y bibliotecas en Linux.

Sin embargo, si estás utilizando una distribución minimalista, necesitarás instalar los paquetes de Linux necesarios para que Chrome funcione en Linux.

Para equipos de facturación electrónica española en Linux: IronPDF sobre Linux es la arquitectura recomendada para pipelines de procesamiento de lotes SII de la AEAT, generación de PDFs representativos VERI*FACTU y microservicios de Facturae para FACe. Las instancias en AWS eu-south-2 Madrid (Amazon Linux 2023, Ubuntu 22.04) son una elección habitual para estos workloads. Los despliegues en el sector público bajo clasificación ENS Medio o Alto también se realizan frecuentemente sobre Linux, eliminando las dependencias de System.Drawing de Windows.

Nota: Para facilitar la depuración, puedes configurar lo siguiente:

// Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = true;

// Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log";

// Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
// Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = true;

// Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log";

// Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
' Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = True

' Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log"

' Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
$vbLabelText   $csharpLabel

Cómo hacer una imagen Docker más pequeña

Para servicios que generan PDFs en lotes de SII (Suministro Inmediato de Información) o en pipelines VERI*FACTU con alta frecuencia de despliegue, optimizar el tamaño de la imagen Docker es relevante tanto para el coste operativo como para el tiempo de despliegue en AWS eu-south-2 Madrid.

1. Instalación de paquetes en tiempo de ejecución

Una forma de reducir el tamaño es ejecutar comandos apt-get en tiempo de ejecución, en lugar de hacerlo al construir la imagen de docker:

  1. Elimine los comandos apt-get de su Dockerfile.
  2. Establezca Installation.LinuxAndDockerDependenciesAutoConfig = true; antes de inicializar IronPDF o renderizar un documento.
  3. Asegúrese de que su aplicación se ejecute con permisos suficientes para ejecutar comandos apt-get.

Nota: Su primera inicialización será más lenta, ya que los comandos apt-get deben completarse antes de renderizar su primer documento, y este proceso se repetirá cada vez que tenga que volver a implementar la imagen.

Nota: Deberías ver entradas en la consola/registro que indican la instalación exitosa de paquetes:

Executing command 'apt install -y libnss3' in '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libnspr4
The following NEW packages will be installed:
  libnspr4 libnss3
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Executing command 'apt install -y libnss3' in '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libnspr4
The following NEW packages will be installed:
  libnspr4 libnss3
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
SHELL

2. Utilizar IronPdf.Slim

También puedes optar por solo incluir IronPDF.dll y descargar los archivos necesarios en tiempo de ejecución.

  1. Elimine IronPdf.Linux (y cualquier otro paquete de IronPDF) de su proyecto y agregue IronPdf.Slim.
  2. Establezca Installation.AutomaticallyDownloadNativeBinaries = true; antes de inicializar IronPDF o renderizar un documento.
  3. Asegúrese de que su Dockerfile otorgue permisos de lectura y escritura a todo el directorio de trabajo de su aplicación (ej., cambie RUN chmod +rwx /app/runtimes/linux-x64/native/IronCefSubprocess a RUN chmod +rwx /app/).

Nota: Tu primera inicialización será más lenta, ya que el paquete NuGet se descargará y extraerá antes de procesar tu primer documento, y este proceso se repetirá cada vez que tengas que volver a desplegar la imagen.

Nota: Deberías ver entradas en la consola/registro que indican una descarga y extracción exitosa:

Downloading NuGet package from 'https://www.nuget.org/api/v2/package/IronPdf.Native.Chrome.Linux/2023.1.11387'
Extracting package contents '/app/bin/Debug/netcoreapp3.1/IronPdf.Native.Chrome.Linux.2023.1.11387.nupkg/runtimes/linux-x64/native' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully deployed NuGet package 'IronPdf.Native.Chrome.Linux' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully located 'IronInterop' at '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Downloading NuGet package from 'https://www.nuget.org/api/v2/package/IronPdf.Native.Chrome.Linux/2023.1.11387'
Extracting package contents '/app/bin/Debug/netcoreapp3.1/IronPdf.Native.Chrome.Linux.2023.1.11387.nupkg/runtimes/linux-x64/native' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully deployed NuGet package 'IronPdf.Native.Chrome.Linux' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully located 'IronInterop' at '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
SHELL

3. Conclusión

En resumen, para reducir el tamaño inicial del contenedor:

  • Utiliza el paquete NuGet IronPdf.Slim.
  • Configurar IronPDF:
// Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = true;
Installation.AutomaticallyDownloadNativeBinaries = true;
// Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = true;
Installation.AutomaticallyDownloadNativeBinaries = true;
' Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = True
Installation.AutomaticallyDownloadNativeBinaries = True
$vbLabelText   $csharpLabel
  • Asegúrate de que el directorio de la aplicación sea escribible/ejecutable:
RUN chmod +rwx /app/

Una imagen de Docker muy reducida que utilice ambos puntos 1 y 2 debería reducir el tamaño de ~500MB a ~200MB.

Si es posible, verás el mejor rendimiento si NO optas por un despliegue reducido.

Algunos entornos en contenedores y en la nube no son persistentes y, por lo tanto, pueden tener que volver a descargar dependencias o ejecutar nuevamente los comandos apt-get, ¡lo que puede tomar hasta un par de minutos!

Sin embargo, entendemos que algunos desarrolladores pueden estar sujetos a estrictos requisitos de tamaño para sus despliegues.

Consideraciones para entornos ENS y facturación electrónica española

Para aplicaciones de software certificado VERI*FACTU o servicios que generan PDFs para TicketBAI (Bizkaia, Gipuzkoa, Araba) sobre Linux:

  • ENS Medio/Alto: Los organismos públicos con clasificación ENS pueden imponer restricciones sobre la descarga de binarios en tiempo de ejecución. En esos casos, incluye IronPdf.Native.Chrome.Linux directamente en el pipeline de CI/CD y deshabilita la descarga automática.
  • AWS eu-south-2 Madrid: La región de Madrid ofrece soberanía de datos para entidades bajo el Reglamento General de Protección de Datos (RGPD/LOPDGDD). Para pipelines SII o Facturae que procesan datos fiscales, mantener los datos dentro de la región eu-south-2 es una consideración de cumplimiento relevante.
  • Contenedores no persistentes (Lambda, ECS Fargate): Si tu pipeline VERI*FACTU usa AWS Lambda o ECS Fargate con almacenamiento efímero, el tiempo de inicialización de IronPdf.Slim debe tenerse en cuenta en los SLAs de procesamiento de facturas.

Preguntas frecuentes sobre IronPDF en Linux para facturación española

¿Es compatible IronPDF con Amazon Linux 2023 para procesamiento de lotes SII en AWS eu-south-2 Madrid?
Sí. Amazon Linux 2023 es compatible con IronPDF. Necesitarás instalar las dependencias de sistema necesarias (libgdiplus, libxkbcommon, libnss3, etc.) vía yum o dnf. Consulta la guía de configuración Linux de IronPDF para la lista completa de dependencias por distribución.

¿Puedo usar IronPDF en un entorno Linux con clasificación ENS Alto sin descarga de binarios en tiempo de ejecución?
Sí. Incluye el paquete IronPdf.Native.Chrome.Linux directamente en tu imagen Docker y desactiva AutomaticallyDownloadNativeBinaries. Esto garantiza que todos los binarios estén presentes en el momento del despliegue y que no se realicen conexiones externas durante el procesamiento de documentos, cumpliendo con los controles de acceso de red exigidos por el ENS.

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 19,014,616 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.