Introdução

Aspose.PDF FOSS para TypeScript é uma nova biblioteca de código aberto para trabalhar com documentos PDF a partir de código Node.js. Ela é lançada sob a licença MIT e é distribuída como o pacote @asposefoss/pdf, exigindo apenas Node.js (>=22) em tempo de execução — não há outras dependências em tempo de execução.

A biblioteca está organizada em torno das classes Document e Page. Document.OpenFile() e Document.Open() carregam um PDF a partir do disco ou de bytes em memória, e Document.New() inicia um documento em branco; cada página em doc.Pages expõe métodos para adicionar texto, imagens, anotações e campos AcroForm, bem como para converter a si mesma para outros formatos. A partir daí, o API abrange divisão, mesclagem e reordenação de páginas, conversão de documentos para HTML, Markdown, DOCX, SVG e imagens raster, adição e achatamento de anotações, criação de formulários interativos e criptografia, assinatura ou redação do resultado.

Esta versão destina-se a desenvolvedores que precisam de processamento de PDF dentro de um código Node.js ou TypeScript sem uma licença comercial: pipelines de montagem de documentos, ferramentas de publicação que renderizam PDFs para formatos prontos para a web, automação de preenchimento de formulários e serviços que precisam redigir ou criptografar PDFs sensíveis antes da distribuição. O projeto está atualmente na versão 0.1.0 e em desenvolvimento ativo nas fases iniciais, portanto APIs e cobertura de recursos podem evoluir antes de um lançamento estável.


O que está incluído

Gerenciamento de Documentos e Páginas

Document.OpenFile() / Document.Open() carregam um PDF a partir do disco ou de um Uint8Array em memória; Document.New() inicia um documento em branco. As páginas podem ser divididas em documentos separados com Document.Split(), extraídas com Document.ExtractPages(), mescladas com Document.Merge(), ou acrescentadas a um documento existente com Document.Append(). Document.WriteTo() grava o resultado de volta, 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();

Conversão de Formato

Documentos completos são renderizados para HTML com Document.ToHtml() e para Markdown com sabor GitHub usando Document.ToMarkdown(). Páginas individuais são renderizadas para SVG independente com Page.ToSvg() ou bytes PNG rasterizados com Page.ToImage(). Document.ToDocx() / Page.ToDocx() produzem saída .docx refluída ou de layout fixo.

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

Anotações

Cada Page expõe métodos de anotação diretamente: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() e Page.AddStrikeOut() adicionam marcação de texto; Page.AddTextNote(), Page.AddFreeText() e Page.AddStamp() adicionam notas adesivas, texto autônomo e anotações de carimbo. Subtipos tipados como MarkupAnnotation e StampAnnotation expõem um método Flatten() para incorporar a anotação ao conteúdo da página.

AcroForms

A classe Form cria campos interativos diretamente: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() e AddPushButton() retornam cada um uma subclasse tipada de Field. Chamar SetStyle() ou GenerateAppearance() em um campo atualiza sua aparência renderizada, e Document.FlattenForm() incorpora o valor atual de cada campo ao conteúdo estático da 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,
  });
}

Segurança e Redação

Document.WriteTo() aceita uma opção encrypt que suporta AES-128, AES-256 ou RC4, com senha de usuário e de proprietário separadas e Permissions granular. Regiões sensíveis ou texto correspondido podem ser removidos permanentemente com Document.Redact(), Document.RedactText() e Page.ApplyRedactions(), configurados atravé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,
  },
});

Início Rápido

Instale o pacote, então abra um PDF existente, edite suas páginas e metadados, e salve o resultado:

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build
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 Compatíveis

FormatoExtensãoLerEscrever
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Código Aberto & Licenciamento

Aspose.PDF FOSS para TypeScript é lançado sob a licença MIT, com o código-fonte publicado em GitHub. Não há marca d’água de avaliação, limite de uso ou arquivo de licença separado para gerenciar, e a biblioteca pode ser usada em produtos comerciais sem royalties.

O pacote está atualmente na versão 0.1.0, refletindo desenvolvimento ativo em estágio inicial. Node.js (>=22) é o único requisito de tempo de execução, e o pacote não tem outras dependências de terceiros.


Começando

Recursos Relacionados