Cómo crear archivos PDF en Node.js

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

Crear archivos PDF programáticamente en Node.js requiere una biblioteca que maneje el renderizado de HTML con precisión, soporte CSS moderno e integre limpiamente con los patrones asincrónicos de Node. IronPDF utiliza un motor de renderizado basado en Chromium para convertir contenido HTML en archivos PDF que coincidan con la salida de impresión de Chrome, admitiendo CSS completo, JavaScript en línea y diseños responsivos de manera automática.

Esta guía cubre el flujo de trabajo completo: instalación, generación de archivos PDF a partir de cadenas HTML, archivos HTML y URLs, configuración de opciones de salida y aplicación de características empresariales como encabezados, pies de página, firmas digitales y encriptación.

Inicio rápido: Crear un PDF en Node.js

  1. Instalar IronPDF vía npm: npm install @ironsoftware/ironpdf
  2. Importar PdfDocument desde @ironsoftware/ironpdf
  3. Llamar a PdfDocument.fromHtml() con tu contenido HTML
  4. Llamar a .saveAs() para escribir el archivo PDF en el disco
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/quickstart.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const pdf = await PdfDocument.fromHtml("<h1>Hello, PDF!</h1><p>Generated with IronPDF.</p>");
await pdf.saveAs("output.pdf");

Configura IronPdfEngine para tu plataforma antes de ejecutar en producción. Consulta la guía de instalación de IronPdfEngine para instrucciones sobre Windows, Linux, macOS y Docker.

¿Cómo instalo IronPDF for Node.js?

Instala el paquete @ironsoftware/ironpdf usando npm. El paquete funciona con Node.js 12.0 o superior y soporta ambos formatos de módulo ESM y CommonJS.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdf
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdf
SHELL

IronPDF for Node.js depende del binario de IronPDF Engine, que maneja el renderizado subyacente basado en Chromium. El motor se descarga automáticamente en la primera ejecución, pero puedes preinstalar el paquete específico de la plataforma para evitar descargas en tiempo de ejecución. Esto es útil en entornos de red restringidos o tuberías de CI basadas en Docker:

Paquetes de plataforma de IronPDF Engine para preinstalación en entornos offline o restringidos
PlataformaPaquete
Windows x64@ironsoftware/ironpdf-engine-windows-x64
Linux x64@ironsoftware/ironpdf-engine-linux-x64
macOS x64@ironsoftware/ironpdf-engine-macos-x64
macOS ARM@ironsoftware/ironpdf-engine-macos-arm64

Por favor notaUna clave de licencia válida elimina la marca de agua de los PDFs generados. Aplícalo antes de tu primera llamada a PdfDocument configurando IronPdfGlobalConfig.setConfig({ licenseKey: "YOUR-KEY" }). Sigue las instrucciones completas de configuración de la clave de licencia.

¿Cuáles son los requisitos del sistema para IronPDF?

IronPDF for Node.js se ejecuta en Node.js 12.0 o superior en entornos de Windows, Linux, macOS y Docker. La biblioteca soporta arquitecturas tanto x64 como ARM64, haciéndola adecuada para desarrollo local y despliegues en contenedores. Para entornos en la nube, IronPDF también soporta conectarse a un IronPDF Engine remoto en lugar de ejecutar el motor localmente.


¿Cómo creo un PDF a partir de HTML en Node.js?

Utiliza PdfDocument.fromHtml() para generar un PDF desde una cadena HTML. El método acepta cualquier HTML válido, incluyendo bloques de <style> integrados, fuentes externas cargadas vía CDN y sistemas de diseño como CSS Grid o Flexbox. El renderizador de Chromium resuelve todos los recursos antes de generar el PDF.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const htmlContent = `
  <!DOCTYPE html>
  <html>
  <head>
    <style>
      body { font-family: Arial, sans-serif; margin: 0; padding: 0; }
      .header { background: #2b4c8c; color: white; padding: 24px 32px; }
      .header h1 { margin: 0; font-size: 22px; }
      .body { padding: 32px; }
      table { width: 100%; border-collapse: collapse; margin-top: 16px; }
      th { background: #f0f4fb; text-align: left; padding: 8px 12px; }
      td { padding: 8px 12px; border-bottom: 1px solid #e0e0e0; }
    </style>
  </head>
  <body>
    <div class="header"><h1>Invoice #INV-2025-0042</h1></div>
    <div class="body">
      <p>Date: ${new Date().toLocaleDateString()}</p>
      <table>
        <tr><th>Item</th><th>Qty</th><th>Unit Price</th><th>Total</th></tr>
        <tr><td>IronPDF Enterprise License</td><td>1</td><td>$499.00</td><td>$499.00</td></tr>
        <tr><td>Priority Support (1 year)</td><td>1</td><td>$199.00</td><td>$199.00</td></tr>
      </table>
      <p style="text-align:right; margin-top:16px;"><strong>Total: $698.00</strong></p>
    </div>
  </body>
  </html>`;

// Generate the PDF from the HTML string
const pdf = await PdfDocument.fromHtml(htmlContent);
await pdf.saveAs("invoice.pdf");

PdfDocument.fromHtml() devuelve una instancia de PdfDocument. Llama a saveAs() con la ruta de salida deseada para escribir el archivo. El método es asincrónico, así que utiliza await o encadena un manejador .then(). El motor de Chromium maneja la carga de fuentes, hojas de estilo externas y resolución de activos antes de capturar la salida. Para más patrones, consulta el ejemplo de HTML a PDF.

¿Cómo creo un PDF a partir de un archivo HTML?

Carga un archivo existente .html desde el disco usando PdfDocument.fromFile(). Este enfoque funciona bien para documentos modelados donde el HTML se mantiene separado de la lógica de la aplicación.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Load an HTML file and render it as a PDF
const pdf = await PdfDocument.fromFile("./templates/report-template.html");
await pdf.saveAs("./output/report.pdf");

El renderizador resuelve las rutas de activos relativas desde el directorio del archivo HTML, por lo que las referencias locales a CSS e imágenes funcionan sin configuración adicional. Consulta el ejemplo de archivo HTML a PDF para opciones adicionales, incluyendo cómo anular la URL base para la resolución de activos.

¿Cómo genero un PDF a partir de una URL?

Utiliza PdfDocument.fromUrl() para renderizar una página web en vivo como un PDF. El renderizador carga la página como una sesión de navegador completa, ejecutando JavaScript, aplicando CSS y esperando contenido dinámico antes de capturar la salida.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Render a live webpage to PDF
const pdf = await PdfDocument.fromUrl("https://ironpdf.com/nodejs/");
await pdf.saveAs("ironpdf-homepage.pdf");

Para páginas que cargan contenido asincrónicamente via JavaScript, empareja esto con una opción renderDelay (en milisegundos) para permitir tiempo adicional antes de la captura. El ejemplo de URL a PDF demuestra la configuración de retraso y cabeceras de autenticación.


¿Cómo configuro las opciones de salida de PDF?

Pasa un objeto de configuración como segundo argumento para PdfDocument.fromHtml(), PdfDocument.fromFile(), o PdfDocument.fromUrl(). El objeto de configuración acepta tamaño de papel, márgenes, orientación y opciones de renderizado.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/pdf-settings.js
import { PdfDocument, PdfPaperSize } from "@ironsoftware/ironpdf";

const config = {
    paperSize: PdfPaperSize.A4,
    marginTop: 25,
    marginBottom: 25,
    marginLeft: 20,
    marginRight: 20,
    landscape: false,
    printBackground: true,
};

const pdf = await PdfDocument.fromHtml("<h1>Configured PDF</h1>", config);
await pdf.saveAs("configured-output.pdf");

Las opciones clave de configuración incluyen:

  • paperSize: acepta valores de enumeración PdfPaperSize (A4, Carta, Legal, y tamaños personalizados)
  • landscape: establece true para orientación de página horizontal
  • printBackground: incluya colores de fondo e imágenes CSS
  • marginTop/Bottom/Left/Right: márgenes de página en milímetros
  • renderDelay: milisegundos para esperar antes de capturar páginas con mucha carga de JavaScript

¿Cómo agrego encabezados y pies de página a un PDF?

Agrega encabezados y pies de página proporcionando propiedades de htmlHeader y htmlFooter en el objeto de configuración. Ambos aceptan cadenas HTML completas, permitiendo contenido estilizado con números de página, fechas y texto dinámico.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/headers-footers.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const config = {
    htmlHeader: {
        htmlFragment: "<div style='text-align:center; font-size:12px; color:#666;'>Quarterly Report - Confidential</div>",
        dividerLine: true,
    },
    htmlFooter: {
        htmlFragment: "<div style='text-align:right; font-size:10px;'>Page {page} of {total-pages}</div>",
        dividerLine: true,
    },
};

const pdf = await PdfDocument.fromHtml("<h1>Q3 Financial Summary</h1><p>See attached tables.</p>", config);
await pdf.saveAs("report-with-headers.pdf");

Utiliza tokens {page} y {total-pages} en el HTML del pie de página; IronPDF sustituye los valores correctos en el momento del renderizado. Para más patrones de encabezados y pies de página, incluyendo encabezados y pies de página HTML y técnicas avanzadas de encabezados, consulta los ejemplos enlazados.


¿Cómo añado seguridad y metadatos a un PDF?

Aplica protección con contraseña y cifrado a un PDF generado usando los métodos de seguridad PdfDocument. La biblioteca admite tanto contraseñas de propietario como de usuario, con controles granulares de permisos para impresión, copiado y edición.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/security.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const pdf = await PdfDocument.fromHtml("<h1>Confidential Document</h1>");

// Apply password protection with granular permissions
await pdf.securePdf({
    userPassword: "view-password",
    ownerPassword: "admin-password",
    allowUserAnnotations: false,
    allowUserPrinting: true,
    allowUserCopyPasteContent: false,
});

await pdf.saveAs("secured-document.pdf");

La encriptación y desencriptación utilizan encriptación AES de 256 bits por defecto cuando se aplican contraseñas. Para flujos de trabajo de autenticación de documentos, IronPDF también admite firmas digitales usando certificados X.509.

ConsejosPara documentos que requieren cumplimiento a largo plazo de archivo, utiliza PdfDocument.fromHtml() seguido del método de conversión PDF/A. IronPDF admite cumplimiento PDF/A y estándares de accesibilidad PDF/UA.


¿Cómo uno y manipulo archivos PDF existentes?

PdfDocument proporciona métodos para fusionar, dividir y modificar archivos PDF existentes. Carga un PDF existente con PdfDocument.fromFile() y usa los métodos de manipulación para agregar o eliminar páginas, estampar contenido o reemplazar texto.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/merge-pdfs.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Merge two PDF files into one
const merged = await PdfDocument.mergePdf([
    await PdfDocument.fromFile("./report-part1.pdf"),
    await PdfDocument.fromFile("./report-part2.pdf"),
]);

await merged.saveAs("./complete-report.pdf");

PdfDocument.mergePdf() acepta un array de instancias PdfDocument y devuelve un documento único fusionado. El orden de las páginas sigue el orden del arreglo, por lo que la salida preserva la secuencia de los archivos de entrada.

Otras operaciones comunes de manipulación:

Para escenarios de alto volumen, la generación de PDF multihilo te permite procesar varios documentos en paralelo. La compresión de PDF reduce el tamaño de los archivos para almacenamiento y transmisión.


¿Cómo genero PDFs para contenido complejo como gráficos y páginas Angular?

IronPDF renderiza las páginas utilizando una sesión completa del navegador Chromium, lo que significa que las bibliotecas de JavaScript que producen gráficos, diagramas o visualizaciones de datos se renderizan correctamente, incluyendo bibliotecas de gráficas de JavaScript. Las aplicaciones de una sola página construidas con frameworks como Angular también se convierten limpiamente usando el ejemplo de Angular a PDF.

Para documentos con mucho contenido Unicode o salidas en varios idiomas, IronPDF maneja Unicode y conjuntos de caracteres internacionales sin configuración adicional. El ejemplo de integración con Google Fonts muestra cómo cargar fuentes web en el HTML renderizado para una tipografía consistente en el PDF de salida.

Por favor notaEl renderizador de Chromium de IronPDF ejecuta JavaScript antes de capturar el PDF. Si tu biblioteca de gráficos o SPA requiere tiempo adicional para renderizar datos después de que el DOM cargue, establece renderDelay en milisegundos para dar a la página tiempo para renderizar completamente.


¿Cuáles son los siguientes pasos para crear PDFs en Node.js?

Esta guía ha cubierto el flujo de trabajo central de IronPDF: instalar la biblioteca, generar PDFs a partir de cadenas HTML, archivos y URLs, configurar las opciones de salida, agregar encabezados y pies de página, aplicar seguridad y manipular PDFs existentes.

Para continuar, intenta el tutorial completo de HTML a PDF para una guía más profunda de opciones de renderización, o explora la Referencia de API para la lista completa de métodos PdfDocument y propiedades de configuración.

Inicia tu prueba gratuita para generar PDFs sin marcas de agua o consulta las opciones de licencia para despliegues en producción.

Preguntas Frecuentes

¿Cuál es la forma más sencilla de crear archivos PDF en Node.js?

Instale IronPDF con npm install @ironsoftware/ironpdf, luego llame a PdfDocument.fromHtml() con su cadena HTML y guarde el resultado usando saveAs(). La biblioteca maneja toda la renderización automáticamente.

¿Cómo se instala IronPDF for Node.js?

Ejecute npm install @ironsoftware/ironpdf en su directorio de proyecto. El binario del IronPDF Engine se descarga automáticamente en el primer uso. Para entornos fuera de línea o CI, instale el paquete específico de la plataforma como @ironsoftware/ironpdf-engine-linux-x64 por separado.

¿Puedo convertir HTML a PDF conservando los estilos CSS y el formato?

Sí. IronPDF utiliza un motor de renderización basado en Chromium que preserva todos los estilos CSS, fuentes externas y ejecución de JavaScript al convertir HTML a PDF. La salida coincide con el comportamiento de vista previa de impresión de Chrome.

¿Qué características de PDF están disponibles más allá de la conversión básica de HTML?

IronPDF soporta firmas digitales, encriptación AES de 256 bits, protección con contraseña con permisos granulares, encabezados y pies de página personalizados con tokens de número de página, fusión de PDFs, eliminación de páginas, estampado HTML, extracción de texto, cumplimiento con PDF/A y generación multihilo.

¿Cómo creo un PDF a partir de un archivo HTML en disco?

Use PdfDocument.fromFile('./ruta/al/template.html'). El renderizador resuelve rutas de activos relativas desde el directorio del archivo HTML, por lo que las referencias a CSS e imágenes locales funcionan sin configuración adicional.

¿Puedo extraer texto de archivos PDF existentes usando IronPDF?

Sí. Cargue un PDF existente con PdfDocument.fromFile() y use los métodos de extracción de texto para leer el contenido de cualquier página. IronPDF soporta tanto la creación de nuevos PDFs como el procesamiento de documentos existentes.

¿IronPDF soporta la ejecución de JavaScript al renderizar HTML?

Sí. El renderizador Chromium ejecuta JavaScript antes de capturar el PDF. Para páginas que cargan contenido de manera asíncrona, configure la opción renderDelay en milisegundos para dar a la página tiempo adicional antes de capturar.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más
¿Listo para empezar?
Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida?
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.