Gerenciamento de Documentos

Gerenciamento de Documentos

Gerenciamento de Documentos

Document é o objeto raiz no Aspose.PDF FOSS para .NET. Ele representa um arquivo PDF completo e fornece acesso a páginas, metadados, campos de formulário e todas as demais estruturas PDF. Abra arquivos existentes com Document.Open e crie novos com o construtor Document.


Abrindo e criando documentos

// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));

// Open from a file path
using var doc2 = new Document("input.pdf");

// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");

Trabalhando com páginas

PageCollection gerencia as páginas do documento. Acesse as páginas por índice baseado em 1, adicione novas páginas ou remova as existentes.

using var doc = Document.Open(pdfBytes);

// Access first page
var page = doc.Pages[1];

// Add a blank page
var newPage = doc.Pages.Add();

// Get page count
int count = doc.Pages.Count;

Geometria da página

Cada página define várias caixas delimitadoras. Use os métodos setter em Page para ajustá‑las.

var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);

Salvando documentos

Salve em um caminho de arquivo, um fluxo ou um array de bytes.

// Save to file
doc.Save("output.pdf");

// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);

Anexos de arquivo

FileSpecification representa anexos de arquivos incorporados em um PDF.

var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);

Carimbos de imagem

ImageStamp sobrepõe uma imagem raster em uma página em uma posição especificada.

var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");

Coleções de operadores

OperatorCollection em cada página contém os operadores brutos do fluxo de conteúdo. Use‑o para inspeção ou manipulação de conteúdo de baixo nível.

var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
    // Inspect each operator
}

Dicas e Melhores Práticas

  • Envolva Document em uma instrução using para liberar os manipuladores de arquivo prontamente.
  • Use Document.Open(byte[]) para fluxos de trabalho em memória a fim de evitar problemas de bloqueio de arquivos.
  • Modifique as caixas de página (MediaBox, CropBox) antes de adicionar conteúdo para garantir o espaço de coordenadas correto.
  • Chame Save apenas uma vez após todas as modificações — salvamentos repetidos são mais lentos, mas seguros.
  • Use PageCollection.Accept(AnnotationSelector) para processar em lote anotações em todas as páginas.

Problemas Comuns

IssueCauseFix
Document.Open lança em PDF válidoO arquivo está criptografado com uma senhaForneça o parâmetro de senha no construtor
A contagem de páginas é 0 após a construçãoNovo Document() inicia vazioChame doc.Pages.Add() para adicionar uma página em branco
O arquivo salvo é maior que o esperadoImagens ou fontes incorporadas várias vezesUse otimização (consulte o guia de Conversão e Otimização)
Pages[0] lança erro de índiceAs páginas são baseadas em 1, não em 0Use Pages[1] para a primeira página

Perguntas Frequentes

Como faço para mesclar dois documentos PDF?

Use PdfFileEditor.Concatenate da API Facades, ou copie manualmente páginas de um documento para outro usando PageCollection.

Posso abrir um PDF a partir de uma URL ou fluxo?

Sim. Leia o conteúdo da URL em um byte[] primeiro, depois passe‑o para Document.Open(byte[]).

Como excluir uma página?

Chame doc.Pages.Delete(pageNumber) onde pageNumber é baseado em 1.

O Document é thread-safe?

Não. Cada thread deve trabalhar com sua própria instância Document.


Resumo da Referência da API

Class / MethodDescription
DocumentObjeto raiz PDF; contém páginas, metadados e campos de formulário
Document.OpenFábrica estática para abrir um PDF a partir de um array de bytes
Document.SaveSerializa o documento para um arquivo ou fluxo
PagePágina PDF única com conteúdo, anotações e geometria
Page.SetMediaBoxDefine a caixa de mídia da página
Page.SetCropBoxDefine a área de recorte visível
Page.SetRotationGira a página em 0, 90, 180 ou 270 graus
PageCollectionColeção ordenada de páginas em um documento
PageCollection.AddAnexa uma página em branco
OperatorCollectionOperadores brutos de fluxo de conteúdo para uma página
FileSpecificationDescritor de anexo de arquivo incorporado
ImageStampCarimbo de sobreposição de imagem para páginas
XFormCollectionXObjects de formulário reutilizáveis no documento

Veja Também

 Português