Como trabalhar com o gerenciamento de documentos básicos em .NET
Aspose.PDF FOSS for .NET provides the Document instalar o pacote com a função de “PDF” (classes) como ponto central de entrada para todas as operações PDF. dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha e utilização Document.Create(), Document.Open(), Document.Save(), e Document.Merge() para gerir documentos PDF de forma programática no .NET 8+.
Guia passo a passo
Passo 1: Instalar o pacote
Adicionar Aspose.PDF FOSS ao seu projeto:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaVerifique a referência no seu e-mail. .csproj:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />Passo 2: Importar as classes necessárias
Adicione as directivas de uso necessárias no topo do seu arquivo:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;Passo 3: Criar um novo documento PDF
Utilização: Document.Create() para produzir um documento em memória vazio:
using var doc = Document.Create();
// The document has no pages yet; add pages before saving
using var ms = new MemoryStream();
doc.Save(ms);
byte[] pdfBytes = ms.ToArray();Passo 4: Abrir um PDF existente
Document.Open Aceita uma matriz de bytes, caminho de arquivo ou fluxo. Use using Para garantir que o documento é descartado após a utilização:
// From a file path
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
// From a byte array loaded elsewhere
byte[] data = File.ReadAllBytes("input.pdf");
using var doc2 = Document.Open(data);Passo 5: Páginas de acesso
A Comissão Document.Pages propriedade retorna um PageCollection.As páginas são indexadas por:
using var doc = Document.Open("input.pdf");
int pageCount = doc.Pages.Count;
var firstPage = doc.Pages[1];
double width = firstPage.Width;
double height = firstPage.Height;Passo 6: Salvar um documento
Salve para um riacho com Document.Save(), ou serializam para um array de bytes com Document.ToArray():
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com/test");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
byte[] savedBytes = ms.ToArray();Passo 7: Reunir vários documentos
Utilização: Document.Merge() Para combinar múltiplos Document instâncias num único:
using var doc1 = Document.Open("part1.pdf");
using var doc2 = Document.Open("part2.pdf");
var merged = Document.Merge(new[] { doc1, doc2 });
merged.Save("combined.pdf");Document.MergeDocuments() é uma sobrecarga equivalente que aceita diretamente matrizes de caminho de arquivo.
Problemas comuns e soluções
Coleção de páginas está vazia após Document.Create() Document.Create() Retorna um documento sem páginas. Você deve explicitamente adicionar uma página antes de acessar o arquivo. doc.Pages[1].Tentando acessar um índice que não existe lança uma IndexOutOfRangeException.
InvalidOperationException ao chamar Document.Open num ficheiro corrompido Se o arquivo ou matriz de bytes PDF for truncado ou inválido, Document.Open irá lançar. Valide que a matriz de bytes fonte é um PDF completo (começa com %PDF-) antes de o passar para a Comissão. Open.
Documentos não descartados fuga de memória em cenários com alto rendimento Sempre enrolar . Document.Open e a) Document.Create chamadas em um using A declaração. Document instrumentos de classe IDisposable; se não for eliminado, a corrente subjacente e a tabela de referência cruzada permanecerão na memória.
Salvar ((ms) depois de ms.Posição não é redefinida Ao ler de volta a partir de um MemoryStream após o doc.Save(ms), reinicialização ms.Position = 0 Omitir esta etapa faz com que o leitor encontre um PDF vazio ou parcial.
Fusão produz um documento com número de páginas inesperado Assegurar que todos os documentos de origem estejam totalmente carregados antes de os passar para o Document.Merge.A eliminação de um documento-fonte antes da chamada de fusão pode resultar numa árvore de página incompleta.
Perguntas Frequentes
Posso abrir um PDF protegido por senha?
Sim, usa. Document.Open(data, password) ou a) Document.Open(path, password) para fornecer o proprietário ou a senha do utilizador como segundo argumento.
Document.ToArray (() difere de salvar para um MemoryStream?
Document.ToArray() é um método de conveniência que economiza internamente a uma taxa de MemoryStream e retorna a matriz de bytes resultante. Ambos os caminhos produzem saída PDF idêntica.
Qual é o tipo de propriedade Pages?
Document.Pages de tipo: PageCollection.É indicado com 1 .; doc.Pages[1] É a primeira página.
Posso salvar um documento várias vezes?
Sim, pode ligar. doc.Save() ou a) doc.ToArray() Cada chamada serializa o estado atual do documento.
Como posso verificar se um documento está licenciado?
Document.IsLicensed retorna um bool Indicar o estado de licença interno. Para Aspose.PDF FOSS, esta informação é apenas informativa não é necessária a ativação.