Cas d’utilisation
Ce guide présente des cas d’utilisation réels pour Aspose.PDF FOSS pour TypeScript, couvrant la génération de documents, les flux de travail de révision, le caviardage, la distribution sécurisée, la collecte de données basée sur des formulaires et la publication Web balisée. Il nécessite Node.js 22 ou une version ultérieure.
Génération de documents et assemblage de pages
Créez un PDF à partir de zéro en démarrant un Document vierge à un PageFormat donné, en plaçant du texte avec Page.AddText(), puis en ajoutant d’autres pages. Ce modèle sous-tend la génération de factures, l’impression de certificats et les pipelines de production de rapports:
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');Révision et annotation avec marques
Mettez en forme un brouillon partagé avec des surlignages, des notes autocollantes et des commentaires en texte libre, puis intégrez la révision dans une page finale non modifiable une fois approuvée:
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');Caviardage des données sensibles avant distribution
Marquer puis supprimer de façon destructive les champs sensibles — un identifiant d’employé, un numéro de compte bancaire — avant qu’un document ne quitte une organisation :
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');Sécurisation et signature de documents pour la distribution
Certifier un document finalisé, puis le chiffrer avec le certificat d’un destinataire spécifique afin que seul ce destinataire puisse l’ouvrir :
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);
}Collecte de données structurées avec des formulaires remplissables
Créer un formulaire d’entrée remplissable, puis lire les valeurs soumises à partir d’une copie retournée — utile pour traiter des formulaires de demande remplis sans serveur de soumission de formulaire distinct :
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);
}Publication de documents balisés, prêts pour le web
Baliser la structure logique d’un document, puis l’exporter vers le sémantique HTML qui se reformate correctement pour les lecteurs web — l’exportation parcourt le même arbre de structure que la passe de balisage construit :
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');