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— oAnnotationCollectionpara essa página, suportandoAddLinkAnnotatione 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.