Casos de uso
Esta guía muestra casos de uso del mundo real para Aspose.PDF FOSS para TypeScript, abarcando generación de documentos, flujos de trabajo de revisión, redacción, distribución segura, recopilación de datos basada en formularios y publicación web etiquetada. Requiere Node.js 22 o posterior.
Generación de documentos y ensamblado de páginas
Crea un PDF desde cero iniciando un Document en blanco en un PageFormat determinado, colocando texto con Page.AddText() y añadiendo más páginas. Este patrón sustenta la generación de facturas, la impresión de certificados y los flujos de producción de informes:
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Monthly Report', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('report.pdf');Revisión y corrección con anotaciones
Marca un borrador compartido con resaltados, notas adhesivas y comentarios de texto libre, y luego incorpora la revisión en una página final, no editable, una vez que sea aprobada:
const draft = Document.OpenFile('draft.pdf');
const page = draft.Pages[0];
page.AddHighlight({ quads: [72, 700, 300, 700, 72, 685, 300, 685], color: [1, 1, 0] });
const note = page.AddFreeText({
rect: [320, 685, 500, 715],
contents: 'Please confirm this figure before publishing.',
fontSize: 10,
});
// Once the review is resolved, bake the comment into static content:
note.Flatten();
draft.WriteTo('reviewed.pdf');Redactado de datos sensibles antes de la distribución
Marque y luego elimine de forma destructiva los campos sensibles — una identificación de empleado, un número de cuenta bancaria — antes de que un documento salga de una organización:
const memo = Document.OpenFile('internal-memo.pdf');
const page2 = memo.Pages[0];
page2.AddRedact({
rect: [220, 548, 460, 566],
fill: [0, 0, 0],
overlayText: '[REDACTED]',
align: 'center',
fontSize: 9,
textColor: [1, 1, 1],
});
page2.ApplyRedactions(); // destructive — the covered content is gone
memo.WriteTo('memo-for-distribution.pdf');Asegurar y firmar documentos para distribución
Certifique un documento finalizado, luego cifrelo con el certificado de un destinatario específico para que solo ese destinatario pueda abrirlo:
async function secureAndDistribute(sourcePath: string): Promise<void> {
const doc = Document.OpenFile(sourcePath);
await doc.Certify(
{ certificate: authorCert, privateKey: authorKey },
{ permissions: 'form-fill', reason: 'Certifying the final report' },
);
const encryptedBytes = doc.Save({
encrypt: {
recipients: [{ certificate: recipientCertPem }],
algorithm: 'aes256',
permissions: { copying: false },
},
});
writeFileSync('report-secure.pdf', encryptedBytes);
}Recopilación de datos estructurados con formularios rellenables
Cree un formulario de ingreso rellenable, luego lea los valores enviados de una copia devuelta — útil para procesar formularios de solicitud completados sin un servidor de envío de formularios separado:
const template = Document.New(PageFormat.A4);
const form = template.Form;
const pageNum = template.Pages[0].Number;
form.AddTextField({ page: pageNum, rect: [200, 670, 450, 690], name: 'FullName' });
form.AddCheckbox({ page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe' });
template.WriteTo('intake-form.pdf');
// Later, after the form comes back filled in:
const submitted = Document.OpenFile('intake-form-filled.pdf');
for (const field of submitted.Form.Fields) {
console.log(field.FullName, '=', field.Value);
}Publicación de documentos etiquetados y listos para la web
Etiquete la estructura lógica de un documento, luego expórtelo a HTML semántico que se reordena correctamente para lectores web — la exportación recorre el mismo árbol de estructura que construye la pasada de etiquetado:
const source = Document.OpenFile('report.pdf');
const report = source.AutoTag({ title: true });
console.log(`tagged: ${report.headings} heading(s), ${report.paragraphs} paragraph(s)`);
const html = source.ToHtml(); // reflowable markup, built from the structure tree
writeFileSync('report.html', html, 'utf8');