Casos de Uso

Este guia demonstra casos de uso do mundo real para Aspose.PDF FOSS para TypeScript, abrangendo geração de documentos, fluxos de trabalho de revisão, redação, distribuição segura, coleta de dados baseada em formulários e publicação na web com tags. Requer Node.js 22 ou posterior.

Geração de Documentos e Montagem de Páginas

Crie um PDF do zero iniciando um Document em branco em um determinado PageFormat, inserindo texto com Page.AddText() e adicionando páginas adicionais. Esse padrão sustenta a geração de faturas, impressão de certificados e pipelines de produção de relatórios:

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');

Revisão e Marcação com Anotações

Marque um rascunho compartilhado com realces, notas adesivas e comentários de texto livre, e então consolide a revisão em uma página final, não editável, após a aprovação:

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');

Redigindo Dados Sensíveis Antes da Distribuição

Marque e depois remova destrutivamente campos sensíveis — um ID de funcionário, um número de conta bancária — antes que um documento saia de uma organização:

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');

Protegendo e assinando documentos para distribuição

Certifique um documento finalizado, depois criptografe-o com o certificado de um destinatário específico para que somente esse destinatário possa abri-lo:

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);
}

Coletando dados estruturados com formulários preenchíveis

Crie um formulário de entrada preenchível, depois leia os valores enviados a partir de uma cópia devolvida — útil para processar formulários de inscrição preenchidos sem um servidor de envio de formulários 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);
}

Publicando documentos marcados e prontos para a web

Marque a estrutura lógica de um documento, depois exporte-o para HTML semântico que se reorganiza corretamente para leitores da web — a exportação percorre a mesma árvore de estrutura que a passagem de marcação cria:

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');

Ver também

 Português