Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Este tutorial profundizará enSDK de JavaScript de IronPDF yPDFKit - dos grandes nombres en bibliotecas PDF de JavaScript. Ambos son opciones sólidas para proyectos Node.js, pero tienen sus puntos fuertes y débiles.
El propósito de este artículo es dar a los lectores una idea real de cómo las herramientas IronPDF y PDFKit pueden encajar en el flujo de trabajo Node.js de un desarrollador. Tanto si se trata de PDF básicos como de diseños complicados, entender lo que IronPDF y PDFKit pueden hacer por ti te resultará muy útil.(y no puede) es muy importante.
PDFKit es una biblioteca JavaScript avanzada de generación de PDF para Node.js y entornos de navegador. Su completo conjunto de herramientas lo hace ideal para crear documentos imprimibles de varias páginas con facilidad. La biblioteca se ha diseñado para que sea fácil de usar y agilice el proceso de generación de documentos complejos.
PDFKit destaca por sus potentes funciones de gráficos vectoriales, amplias opciones de estilo de texto y fuentes, funciones de incrustación de imágenes y compatibilidad con documentos PDF interactivos y seguros. Su facilidad de uso, combinada con su versatilidad tanto para entornos de servidor como de navegador, lo convierten en una valiosa herramienta para los desarrolladores que necesitan generar PDF personalizados en una gran variedad de aplicaciones.
Generación flexible de PDF
PDFKit no se basa en la conversión de HTML a PDF; en cambio, genera PDF directamente mediante código JavaScript. Este enfoque proporciona a los desarrolladores un control preciso sobre el diseño, el estilo y el contenido de los archivos PDF que crean, por lo que generar documentos complejos es más fácil.
Gráficos y formato de texto
La biblioteca admite funciones gráficas avanzadas, como líneas, curvas, rectángulos, círculos, etc. Las funciones de formato de texto, como fuentes, tamaños y colores personalizados, permiten crear documentos visualmente atractivos.
Incorporación de imágenes y gráficos vectoriales
PDFKit permite incrustar imágenes en varios formatos y admite gráficos vectoriales, por lo que es ideal para documentos impresos de alta calidad. La incrustación de imágenes admite archivos JPEG y PNG.
**Funciones avanzadas de documentos
Los desarrolladores pueden añadir anotaciones, marcadores e hipervínculos a sus PDF. La biblioteca también admite la creación de encabezados y pies de página, así como la inclusión de números de página y JavaScript personalizado.
Componentes personalizables y reutilizables
La API de PDFKit facilita la creación de componentes reutilizables, agilizando el proceso de desarrollo de documentos con estructuras repetitivas, como facturas o informes.
**Gráficos vectoriales
PDFKit ofrece una API similar al lienzo HTML5 para gráficos vectoriales, que incluye operaciones de trazado, análisis sintáctico de trazados SVG, transformaciones y degradados. Es ideal para crear gráficos escalables y de alta calidad en PDF. La biblioteca admite el ajuste de líneas, varias alineaciones de texto y listas con viñetas.
Fuentes incorporadas
PDFKit es compatible con una amplia gama de formatos de fuentes como TrueType, OpenType, WOFF, etc., lo que permite una tipografía coherente en los PDF. El subconjunto de fuentes también está disponible, lo que garantiza que el tamaño del documento siga siendo manejable.
Con IronPDF, puede convertir fácilmente cadenas HTML, archivos o incluso páginas web enteras en PDF con el mismo aspecto que el contenido original, con estilos CSS e imágenes. Esto es crucial para entregar documentos de calidad profesional, como facturas, contratos e informes, que deben conservar la marca y el diseño especificados en los diseños web.
IronPDF destaca en la conversión de contenidos HTML en documentos PDF de alta fidelidad. Sus capacidades incluyen:
IronPDF proporciona completas herramientas de formato que permiten personalizar y mejorar los PDF creados a partir de contenido HTML, como:
JavaScript en HTML a PDF: Antes de la conversión, IronPDF puede ejecutar JavaScript dentro de HTML, lo que permite renderizar datos dinámicos o elementos interactivos en el formato estático de un PDF.
*Incorporación de BarCodes con IronPDF: IronPDF permite incrustar códigos de barras en el PDF, una función esencial para los documentos utilizados en logística, comercio minorista y gestión de inventarios.
Las capacidades de edición de IronPDF son amplias y permiten modificar los PDF existentes para adaptarlos a necesidades específicas:
*Buscar y reemplazar texto en documentos PDF: Esta función permite a los usuarios buscar y reemplazar texto dentro del PDF, haciendo que las actualizaciones y correcciones sean una tarea sencilla.
***Añadir contenido HTML a PDF: Los usuarios pueden insertar más contenido HTML en un PDF existente. Esta función está optimizada para garantizar que el contenido adicional no afecte al rendimiento ni a los tiempos de carga del documento.
*Estampar nuevo contenido en PDF: IronPDF puede estampar o superponer nuevos contenidos en una página PDF existente. Esto resulta útil para añadir marcas de agua oficiales, sellos confidenciales o actualizar información en documentos preexistentes.
IronPDF soporta la creación y manipulación de formularios PDF, permitiendo elementos interactivos dentro del PDF:
Formularios PDF: Incluye la creación de formularios que pueden rellenarse digitalmente, lo que permite a las empresas automatizar el proceso de recogida de datos. Con IronPDF, puede crear formularios mediante programación, rellenar campos e incluso recuperar información, lo que agiliza los flujos de trabajo y reduce la introducción manual de datos.
IronPDF es compatible con varias plataformas, lo que lo hace versátil para distintos entornos de desarrollo. Es compatible con Node.js versión 12.0 y superiores y puede utilizarse en Windows, Linux, Mac y Docker.
Antes de sumergirse en el mundo de la generación de PDF, debe configurar el entorno de su proyecto. Código de Visual Studio(Código VS) ofrece una plataforma ideal y fácil de usar. Para empezar, inicie VS Code y cree un nuevo proyecto JavaScript. Puede hacerlo creando una nueva carpeta para su proyecto y abriéndola en VS Code. Este entorno será donde escribirás tu código y gestionarás los archivos de tu proyecto.
Una vez abierta la carpeta en VS Code, el siguiente paso es inicializar un nuevo proyecto JavaScript. Abra el terminal integrado en VS Code(normalmente se encuentra en Terminal > Nuevo Terminal en el menú) y escribe npm init
. Este comando le guiará a través de la creación de un archivo package.json
, que es crucial para la gestión de las dependencias y metadatos de su proyecto.
Una vez configurado el proyecto JavaScript, es hora de instalar la biblioteca IronPDF. En su terminal VS Code, ejecute el siguiente comando:
npm install ironpdf
Este comando busca e instala la biblioteca IronPDF, añadiéndola a las dependencias de su proyecto.
Tras la instalación, asegúrese de que IronPDF aparece en su archivo package.json
en la sección de dependencias. Esto garantiza que IronPDF se integre correctamente en su proyecto, allanando el camino para la generación y manipulación de PDF sin problemas.
El siguiente paso es PDFKit, una robusta y versátil biblioteca de generación de documentos PDF. Para añadir PDFKit a su proyecto, ejecute el siguiente comando en su terminal dentro de VS Code:
npm install pdfkit
Esto instalará PDFKit y lo añadirá a las dependencias de su proyecto.
Tras una instalación correcta, compruebe que PDFKit aparece en las dependencias de su archivo package.json. Esta confirmación es crucial para confirmar que su proyecto está ahora equipado con las herramientas necesarias para crear archivos PDF complejos, detallados y visualmente atractivos.
IronPDF for Node.js destaca en la conversión de HTML a PDF, ofreciendo una solución eficaz para los desarrolladores. Esta biblioteca es experta en tareas complejas como la representación de estilos CSS, la ejecución de JavaScript y la incorporación de encabezados y pies de página personalizados. Estas funcionalidades mejoran significativamente su capacidad para crear PDF de calidad profesional a partir de fuentes HTML. IronPDF for Node.js proporciona tres métodos convenientes para este proceso de conversión:
Cadena HTML a PDF
Archivo HTML a PDF
Este método permite a los desarrolladores convertir directamente cadenas de código HTML en archivos PDF. Esta función es increíblemente útil para escenarios que implican la generación de contenidos dinámicos. Tanto si está creando informes personalizados, generando facturas sobre la marcha o necesita presentar contenido basado en datos en un formato pulido y profesional, esta función simplifica el proceso.
import { PdfDocument, PdfGenerator } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
try {
// Input the license key
const IronPdfConfig = {
licenseKey: "Your-License-Key",
};
// Set the config with the license key
IronPdfGlobalConfig.setConfig(IronPdfConfig);
// Create a PDF from the HTML String
const pdf = await PdfDocument.fromHtml(
"<h1>Hello JavaScript Developers! This is an Example PDF created with IronPDF NodeJS!</h1>"
);
// Save the PDF document to the file system.
await pdf.saveAs("HtmlStringToPDF.pdf");
} catch (error) {
// Handle errors here
console.error("An error occurred:", error);
}
})();
Aquí puedes ver la salida del código:
Con esta función, los desarrolladores pueden convertir archivos HTML existentes en PDF. Esta funcionalidad es especialmente beneficiosa para manejar documentos HTML estáticos. Tanto si trabaja con páginas web prediseñadas, formularios estandarizados o folletos informativos, esta función le ofrece una forma sencilla de convertirlos en PDF.
import { PdfDocument } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
try {
// Input the license key
const IronPdfConfig = {
licenseKey: "Your-License-Key",
};
// Set the config with the license key
IronPdfGlobalConfig.setConfig(IronPdfConfig);
// Create a PDF from the HTML File"
const pdf = await PdfDocument.fromFile("invoice.html");
// Save the PDF document to the file system.
await pdf.saveAs("invoice.pdf");
} catch (error) {
// Handle errors here
console.error("An error occurred:", error);
}
})();
Aquí está el PDF de la factura de salida generada:
Esta función permite convertir páginas web en PDF simplemente utilizando sus URL. Esta funcionalidad es especialmente útil para capturar contenidos en directo y en línea. Ya sea para archivar páginas web, crear copias sin conexión de artículos en línea o generar informes a partir de datos basados en la web, esta función se encarga de todo sin esfuerzo.
import { PdfDocument } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
try {
// Input the license key
const IronPdfConfig = {
licenseKey: "Your-License-Key",
};
// Set the config with the license key
IronPdfGlobalConfig.setConfig(IronPdfConfig);
// URL of the web page to convert to PDF
const url = "https://en.wikipedia.org/wiki/PDF";
// Convert the Web Page to a pixel-perfect PDF file.
const urlPDF = await PdfDocument.fromUrl(url);
// Save the document.
await urlPDF.saveAs("UrlToPdf.pdf");
} catch (error) {
// Handle errors here
console.error("An error occurred:", error);
}
})();
Aquí está el archivo PDF de salida generado a partir de la URL:
PDFKit, aunque no está diseñado principalmente para la conversión de HTML a PDF como IronPDF, ofrece una forma de crear documentos PDF mediante programación directamente desde código JavaScript. A continuación se muestra un ejemplo de cómo crear un archivo PDF sencillo:
const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25)
.text('PDFKit - Text to PDF Example', 100, 100);
doc.end();
Este fragmento de código crea un archivo PDF con un encabezado de texto. Aunque PDFKit no convierte HTML a PDF directamente, permite un control detallado de la colocación y el formato del texto.
Este es el archivo de salida generado por PDFKit:
**Contraseñas, seguridad y metadatos: IronPDF permite a los desarrolladores reforzar la seguridad de sus archivos PDF mediante diversas funciones. Permite establecer contraseñas, lo que añade una capa adicional de protección que obliga a los usuarios a introducir una contraseña para ver el documento. Además, IronPDF ofrece la posibilidad de incrustar metadatos en el PDF, que pueden incluir información sobre el autor, títulos y palabras clave, mejorando así la gestión y organización de los documentos.
import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
// Import a PDF document or create a new PDF from Html
const pdf = await PdfDocument.open("encrypted.pdf", "password");
// Create an empty Map
const newMetadata = new Map();
// Add key-value pairs of metadata
newMetadata.set("Author", "Satoshi Nakamoto");
newMetadata.set("Keywords", "SEO, Friendly");
await pdf.overrideMetadata(newMetadata);
await pdf.removePasswordsAndEncryption();
// Make PDF read-only
await pdf.makePdfDocumentReadOnly("secret-key");
// Configure permissions
const permissions = {
AllowAnnotations: false,
AllowExtractContent: false,
AllowFillForms: false,
AllowPrint: true,
};
await pdf.setPermission(permissions);
// Change or set the document encrpytion password
await pdf.saveAs("secured.pdf", {
ownerPassword: "top-secret",
userPassword: "my-password",
});
})();
Cifrado y descifrado de PDF: El cifrado y descifrado son componentes vitales de la seguridad de los documentos, y IronPDF los gestiona con facilidad. Ofrece distintos niveles de cifrado, desde la simple protección mediante contraseña hasta estándares de cifrado avanzados, lo que garantiza que la información sensible permanezca segura. La función de descifrado es igual de sólida, ya que proporciona a los usuarios autorizados los medios para acceder a los documentos cifrados y modificarlos.
Firmas digitales: En la era de la documentación digital, la autenticidad y la integridad son primordiales. Firmas digitales de IronPDF permite a los usuarios firmar digitalmente sus PDF, lo que no sólo verifica la identidad del autor del documento, sino que también indica que el documento no ha sido alterado desde que se aplicó la firma, garantizando así su autenticidad.
import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
// Step 1. Import a PDF
const pdf = await PdfDocument.open("sample.pdf");
// Step 2. Sign the PDF with digital certificate
await pdf.signDigitalSignature({
certificatePath: "IronSoftware.pfx",
certificatePassword: "123456",
signingReason: "To show how to sign a PDF",
signingLocation: "Chicago, USA",
signatureImage: {
SignatureImagePath: "logo.png"
}
});
//Step 3. The PDF is not signed until saved to file.
await pdf.saveAs("signed.pdf");
})();
Compresión de PDF: IronPDF reconoce la necesidad de un almacenamiento eficaz y un intercambio rápido de documentos. Incluye unCompresión PDF que reduce significativamente el tamaño de los archivos, lo que es crucial para optimizar el espacio de almacenamiento y agilizar la transmisión de documentos sin comprometer la calidad y la integridad del contenido de los PDF.
import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
// Load the existing PDF document
const pdf = await PdfDocument.fromFile("my-content.pdf");
// Compress images with quality parameter (1-100)
await pdf.compressSize(60);
// Save the compressed PDF
await pdf.saveAs("document_compressed.pdf");
// Compress images and scale down based on visible size in the PDF document
await pdf.compressSize(90, true);
// Save the scaled and compressed PDF
await pdf.saveAs("document_scaled_compressed.pdf");
});
Fusionar dos o más PDF: IronPDF ofrece una solución sencilla para fusionarvarios documentos PDF en un solo archivo. Esta función es increíblemente útil para combinar varios documentos, como informes, contratos o series de formularios, lo que facilita una mejor gestión y distribución de los documentos.
Eliminar páginas PDF específicas: La flexibilidad en la edición es clave para cualquier herramienta PDF, y IronPDF ofrece la posibilidad deeliminar páginas específicas de un documento PDF. Esto resulta especialmente útil a la hora de adaptar el contenido a distintos públicos u omitir páginas innecesarias para crear un documento más conciso.
Motor de diseño personalizable: PDFKit cuenta con un motor de diseño personalizable que permite a los desarrolladores controlar todos los aspectos del diseño del PDF, desde la posición del texto hasta los elementos gráficos complejos.
const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument({ margin: 50 });
// Custom layouts
doc.text('Customized Layout Text', {
align: 'center',
valign: 'center'
});
doc.end();
doc.pipe(fs.createWriteStream('custom-layout.pdf'));
En este ejemplo, se utiliza PDFDocument
para crear un diseño personalizado con texto centrado.
Funciones avanzadas de gráficos y texto: PDFKit ofrece funciones gráficas y de texto avanzadas, que permiten un diseño y un estilo intrincados dentro de los archivos PDF. Permite dibujar formas y añadir imágenes y SVG. En lo que se refiere al texto, PDFKit ofrece un conjunto completo de opciones de diseño, desde cuadros de texto básicos hasta controles tipográficos avanzados, que garantizan que el diseño de cada página sea exactamente el previsto.
const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument();
// Advanced graphics
doc.moveTo(100, 150)
.lineTo(100, 250)
.lineTo(200, 250)
.fill("#FF3300");
// Advanced text
doc.fontSize(15)
.font('Times-Roman')
.text('Advanced Text Features', 100, 300);
doc.end();
doc.pipe(fs.createWriteStream('advanced-graphics-text.pdf'));
Gestión de flujos y búferes: PDFKit destaca en el manejo de flujos y búferes, lo que permite una gestión eficaz de archivos PDF de gran tamaño y sus datos.
const PDFDocument = require('pdfkit');
const fs = require('fs');
const stream = require('stream');
let doc = new PDFDocument();
let buffers = [];
let writableStream = new stream.Writable();
writableStream._write = (chunk, encoding, done) => {
buffers.push(chunk);
done();
};
doc.pipe(writableStream);
doc.text('Streaming PDF Content');
doc.end();
writableStream.on('finish', () => {
let pdfData = Buffer.concat(buffers);
fs.writeFileSync('streamed.pdf', pdfData);
});
Encabezados y pies de página personalizables: Crear un PDF de aspecto profesional implica prestar atención a los detalles. La función de encabezados y pies de página personalizables de PDFKit permite colocar con precisión texto y gráficos en la parte superior e inferior de las páginas. Esto resulta especialmente útil para añadir una marca coherente, títulos de documentos y paginación en un documento de varias páginas.
Formularios interactivos: PDFKit amplía sus capacidades a formularios interactivos dentro de sus archivos PDF, permitiendo la creación de campos de texto, casillas de verificación y botones de radio. Esta función tiene un valor incalculable para los usuarios que buscan recopilar información o proporcionar contenido interactivo, mejorando la experiencia de usuario y la funcionalidad del PDF.
Documentación de IronPDF ofrece una completa guía de uso de la biblioteca, con ejemplos detallados de funciones clave como la representación de una URL como PDF y la creación de un PDF a partir de una cadena HTML. Ofrece opciones de personalización para la impresión de PDF, como la configuración del tamaño del papel y los PPP, y para el aspecto de los documentos, como encabezados y pies de página con campos de combinación de correspondencia. La documentación también cubre aspectos más avanzados como el uso de WebClients personalizados, la creación de formularios PDF editables y el trabajo con JavaScript dentro de los PDF. Puede consultar la documentación completa de la API y más ejemplos.
Para establecer encabezados y pies de página, tanto las opciones HTML como las de texto están bien documentadas, lo que permite fusionar metadatos utilizando cadenas de marcadores de posición. Se proporcionan detalles sobre la licencia, que orientan a los usuarios sobre cómo eliminar las marcas de agua y obtener la licencia. La documentación proporciona incluso información sobre la configuración del número de la primera página para los encabezados y pies de página de PDF e incluye detalles sobre cuánto tiempo se debe esperar después de la renderización HTML antes de imprimir, teniendo en cuenta la renderización de JavaScript, AJAX o animaciones.
IronPDF cuenta con una colección de guías de solución de problemas que abordan los problemas más comunes y ofrecen soluciones paso a paso. Puede ser la primera parada para los usuarios que intentan resolver un problema. Para cuestiones más complejas o que no puedan resolverse mediante guías, IronPDF ofrece asistencia técnica. Los usuarios pueden enviar una solicitud de asistencia técnica que puede incluir el suministro de información detallada sobre el problema, como detalles sobre la plataforma o el tiempo de ejecución, para ayudar al equipo de asistencia a reproducir y resolver el problema. También puede utilizar la opción de chat en directo.
La documentación npm de PDFKit describe la biblioteca como una herramienta para crear fácilmente documentos complejos, de varias páginas e imprimibles. Hace hincapié en la encadenabilidad de su API e incluye tanto funciones de bajo nivel como abstracciones para funcionalidades de nivel superior, diseñadas para ser lo suficientemente sencillas como para que generar documentos complejos pueda ser tan simple como unas pocas llamadas a funciones.
La sección de características de la documentación es muy completa y abarca gráficos vectoriales, texto, incrustación de fuentes, incrustación de imágenes, anotaciones, creación de formularios, esquemas y seguridad de PDF, todo lo cual demuestra la capacidad de la biblioteca para crear documentos accesibles y seguros.
PDFKit, al ser una biblioteca de código abierto, se beneficia del apoyo de la comunidad. Los problemas y las solicitudes de funciones pueden gestionarse a través de su repositorio de GitHub, donde los usuarios pueden contribuir al código, enviar problemas y hacer pull requests. La comunidad en torno a PDFKit también puede ofrecer canales de asistencia no oficiales como Stack Overflow, donde los desarrolladores suelen compartir sus conocimientos y soluciones.
IronPDF funciona con un modelo de licencia comercial, lo que significa que los desarrolladores o las empresas deben adquirir una licencia para utilizar la biblioteca en sus proyectos sin limitaciones.
Lite: Con un precio de $749, esta tarifa única proporciona un paquete básico adecuado para proyectos más pequeños.
Professional: A 1.499 dólares, este nivel es para uso profesional y ofrece más funciones y capacidades.
Ilimitado: El nivel ilimitado tiene un precio de 2.999 dólares y es ideal para implantaciones a gran escala, ya que proporciona acceso completo a todas las funciones sin restricciones.
IronPDF también ofrece unversión de prueba gratuitapara que los desarrolladores puedan evaluar la biblioteca antes de comprarla. No hay versión gratuita ni freemium, y no se ofrecen servicios premium de consultoría o integración.
PDFKit es una biblioteca de código abierto disponible bajo la licencia MIT. Esta licencia permisiva permite el libre uso, modificación y distribución del software. Al ser un proyecto de código abierto, PDFKit no tiene una estructura de precios. Puede incorporarse libremente a cualquier proyecto, y los usuarios pueden contribuir a su desarrollo a través de GitHub. El proyecto acepta donaciones, que no son obligatorias, pero apoyan el desarrollo y mantenimiento continuos de la biblioteca.
En conclusión, tanto IronPDF for Node.js como PDFKit son potentes herramientas para la generación y manipulación de PDF en sus respectivos entornos, aunque IronPDF for Node.js tiene ventaja gracias a su amplio conjunto de funciones adaptadas a la plataforma Node.js.
Las capacidades de IronPDF para convertir HTML en PDF, la edición avanzada y la compatibilidad integral con JavaScript y otros medios enriquecidos lo convierten en una solución versátil para una amplia gama de tareas de procesamiento de PDF. Además, IronPDF se centra en la seguridad y su documentación detallada proporciona un nivel de garantía y accesibilidad que es crucial para los desarrolladores.
PDFKit, al ser de código abierto, ofrece una flexibilidad y facilidad de uso que pueden resultar muy atractivas para los desarrolladores que prefieren un amplio apoyo de la comunidad y la posibilidad de modificar el código fuente. Sus capacidades son impresionantes, sobre todo teniendo en cuenta las ventajas económicas de una solución de código abierto.
IronPDF ofrece una versión de prueba gratuita que permite a los desarrolladores evaluar todas sus funciones antes de comprometerse económicamente. Además,Iron Suite de Iron Softwareque incluye IronPDF entre otras valiosas herramientas para desarrolladores comoIronXL, IronBarcode, IronQRyIronOCRofrece un paquete rentable con un conjunto completo de funciones por el precio de dos productos.
En última instancia, la elección entre IronPDF for Node.js y PDFKit dependerá de las exigencias particulares del proyecto y de las preferencias del desarrollador o del equipo de desarrollo. IronPDF for Node.js es la elección perfecta para quienes buscan un conjunto de funciones completo y una documentación exhaustiva dentro del ecosistema Node.js.
9 productos API .NET para sus documentos de oficina