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 buildimport { 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
| Formato | Extensão | Ler | Escrever |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
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.