Gerenciamento central de documentos PDF cobre as operações que aparecem em quase todos os fluxos de trabalho PDF: abrir ou criar um documento, acessar páginas e seu conteúdo, ler e gravar anotações, extrair texto e trabalhar com ações interativas. Aspose.PDF FOSS for .NET fornece uma .NET 8+ API que lida com todas essas tarefas por meio de um modelo de objeto consistente centrado nos tipos Document e Page.

Ciclo de Vida do Documento: Criar, Abrir, Salvar

Todo fluxo de trabalho começa com a criação de um novo documento ou com o carregamento de um existente. Document.Create() retorna uma nova instância vazia de Document. Document.Open(data) aceita um byte[] ou Stream e analisa a estrutura do PDF:

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com

Este trecho abre um PDF mínimo, adiciona uma anotação de link na página 1, salva em um MemoryStream e verifica se a anotação é preservada após o recarregamento. A sobrecarga Document.Save(Stream) grava a estrutura completa atualizada; Document.ToArray() retorna os bytes diretamente.


Acesso à Página e a Coleção de Páginas

As páginas são acessadas através da propriedade Pages usando um índice inteiro baseado em 1: doc.Pages[1] retorna a primeira página, doc.Pages[doc.Pages.Count] retorna a última. Cada objeto Page expõe:

  • Annotations — o AnnotationCollection para essa página, suportando AddLinkAnnotation e enumeração das anotações existentes por tipo.
  • Operadores de fluxo de conteúdo — acesso de baixo nível aos comandos de desenho da página via a coleção Operators.

O índice baseado em 1 é consistente em toda a API: buscas de anotações, índices de página de destino da ação GoTo e todas as outras referências de página usam a mesma convenção.


Extração de Texto com TextFragmentAbsorber

TextFragmentAbsorber é o ponto de entrada padrão para ler texto de uma página PDF. Use o construtor sem argumentos para extrair todos os fragmentos, ou passe uma frase de pesquisa para filtrar o texto correspondente:

using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text} size={fragment.FontSize}");
}

Chame absorber.Visit(page) para processar uma única página. A coleção resultante TextFragments contém TextFragment objetos; cada um expõe Text (o conteúdo da string) e FontSize (o tamanho do ponto renderizado). Uma segunda sobrecarga TextFragmentAbsorber(searchPhrase, isRegex) aceita um sinalizador de expressão regular para pesquisa baseada em padrão.


Ações Interativas

PdfAction é a classe de fábrica para todos os tipos de ação PDF padrão. Quatro métodos de fábrica estáticos cobrem os casos mais comuns:

  • PdfAction.CreateUri(uri) — abre uma URL no navegador do usuário.
  • PdfAction.CreateGoTo(pageIndex, fitType) — navega para uma página específica dentro do documento.
  • PdfAction.CreateJavaScript(script) — executa uma string JavaScript no visualizador de PDF.
  • PdfAction.CreateLaunch(filePath) — inicia um arquivo ou aplicativo externo.

As ações são anexadas às páginas por meio de anotações. AnnotationCollection.AddLinkAnnotation(rectangle, action) coloca um LinkAnnotation sobre a região retangular especificada com a ação dada anexada:

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count);      // 1
Console.WriteLine(annot.AnnotationType);         // Link

AnnotationType.Link confirma que a anotação foi criada como um tipo de link. O construtor Rectangle recebe as coordenadas esquerda, inferior, direita e superior em unidades do espaço de usuário do PDF.


Metadados do Documento e Licenciamento

A classe Document expõe IsLicensed (retorna true na compilação FOSS), JavaScript (um JavaScriptCollection para scripts de nível de documento) e DocumentActions para eventos de ciclo de vida, como BeforeClosing e BeforeSaving.

O pacote FOSS é instalado via NuGet:

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

Nenhuma chave de licença é necessária. A licença MIT permite o uso em aplicações comerciais sem requisitos de atribuição além de preservar o aviso de licença.


Introdução

Recursos Relacionados