Introducción
Aspose.PDF FOSS for TypeScript es una nueva biblioteca de código abierto para trabajar con documentos PDF desde código Node.js. Se publica bajo la licencia MIT y se distribuye como el paquete @asposefoss/pdf, requiriendo solo Node.js (>=22) en tiempo de ejecución — no hay otras dependencias en tiempo de ejecución.
La biblioteca está organizada alrededor de las clases Document y Page. Document.OpenFile() y Document.Open() cargan un PDF desde disco o bytes en memoria, y Document.New() inicia un documento en blanco; cada página en doc.Pages expone métodos para añadir texto, imágenes, anotaciones y campos AcroForm, así como para convertirla a otros formatos. A partir de ahí, el API cubre la división, fusión y reordenación de páginas, la conversión de documentos a HTML, Markdown, DOCX, SVG e imágenes raster, la adición y aplanado de anotaciones, la creación de formularios interactivos y el cifrado, firma o redacción del resultado.
Esta versión está dirigida a desarrolladores que necesitan procesamiento de PDF dentro de una base de código Node.js o TypeScript sin una licencia comercial: canalizaciones de ensamblado de documentos, herramientas de publicación que convierten PDFs a formatos listos para la web, automatización de completado de formularios y servicios que deben redactar o cifrar PDFs sensibles antes de su distribución. El proyecto se encuentra actualmente en la versión 0.1.0 y en desarrollo activo en una fase temprana, por lo que las API y la cobertura de funciones pueden evolucionar antes de un lanzamiento estable.
Qué incluye
Gestión de documentos y páginas
Document.OpenFile() / Document.Open() cargan un PDF desde disco o un Uint8Array en memoria; Document.New() inicia un documento en blanco. Las páginas pueden dividirse en documentos separados con Document.Split(), extraerse con Document.ExtractPages(), fusionarse con Document.Merge(), o añadirse a un documento existente con Document.Append(). Document.WriteTo() escribe el resultado de nuevo, opcionalmente comprimido.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
Conversión de formato
Los documentos completos se renderizan a HTML con Document.ToHtml() y a Markdown al estilo de GitHub con Document.ToMarkdown(). Las páginas individuales se renderizan a SVG independiente con Page.ToSvg() o a bytes PNG raster con Page.ToImage(). Document.ToDocx() / Page.ToDocx() producen salida .docx de flujo reordenado o de diseño fijo.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml(); // standalone semantic HTML, all pages
const md = doc.ToMarkdown(); // GFM Markdown, all pages
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
Anotaciones
Cada Page expone directamente métodos de anotación: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() y Page.AddStrikeOut() añaden marcados de texto; Page.AddTextNote(), Page.AddFreeText() y Page.AddStamp() añaden notas adhesivas, texto independiente y anotaciones de sello de goma. Los subtipos tipados como MarkupAnnotation y StampAnnotation exponen un método Flatten() para incrustar la anotación en el contenido de la página.
AcroForms
La clase Form crea campos interactivos directamente: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() y AddPushButton() devuelven cada uno una subclase tipada Field. Llamar a SetStyle() o GenerateAppearance() sobre un campo actualiza su apariencia renderizada, y Document.FlattenForm() incrusta el valor actual de cada campo en el contenido estático de la página.
function addFormFields(doc: Document, page: Page): void {
const form = doc.Form;
const pageNum = page.Number;
// Text field
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
});
// Checkbox
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true,
});
}
Seguridad y Redacción
Document.WriteTo() acepta una opción encrypt que soporta AES-128, AES-256 o RC4, con una contraseña de usuario y de propietario separadas y permisos granulares Permissions. Las regiones sensibles o el texto coincidente pueden eliminarse permanentemente con Document.Redact(), Document.RedactText() y Page.ApplyRedactions(), configurados a través de RedactOptions.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
doc.WriteTo('locked.pdf', {
encrypt: {
userPassword: 'open-me', // required to open (default '')
ownerPassword: 'full-rights', // default: same as userPassword
algorithm: 'aes256', // 'aes256' (default) | 'aes128' | 'rc4'
permissions: { copying: false, modifying: false },
encryptMetadata: true,
},
});
Inicio rápido
Instala el paquete, luego abre un PDF existente, edita sus páginas y metadatos, y guarda el resultado:
asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams
Formatos compatibles
| Formato | Extensión | Leer | Escribir |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
Código abierto y licencias
Aspose.PDF FOSS for TypeScript se publica bajo la licencia MIT, con el código fuente publicado en GitHub. No hay marca de agua de evaluación, límite de uso, ni archivo de licencia separado que gestionar, y la biblioteca puede usarse en productos comerciales sin royalties.
El paquete está actualmente en la versión 0.1.0, lo que refleja un desarrollo activo en etapa temprana. Node.js (>=22) es el único requisito de tiempo de ejecución, y el paquete no tiene otras dependencias de terceros.