Gestione dei documenti

Gestione dei documenti

Gestione dei documenti

Document è l’oggetto radice in Aspose.PDF FOSS per .NET. Rappresenta un
intero file PDF e fornisce l’accesso a pagine, metadati, campi modulo e a tutte
le altre strutture PDF. Apri i file esistenti con Document.Open e crea nuovi
file con il costruttore Document.


Apertura e creazione di documenti

// 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");

Lavorare con le pagine

PageCollection gestisce le pagine del documento. Accedi alle pagine tramite indice basato su 1, aggiungi nuove pagine o rimuovi quelle esistenti.

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 della pagina

Ogni pagina definisce diversi riquadri di delimitazione. Usa i metodi setter su Page per regolarli.

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

Salvataggio dei documenti

Salva in un percorso file, in un flusso o in un array di byte.

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

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

Allegati file

FileSpecification rappresenta gli allegati di file incorporati in un PDF.

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

Timbrature immagine

ImageStamp sovrappone un’immagine raster su una pagina in una posizione specificata.

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

Raccolte di operatori

OperatorCollection su ogni pagina contiene gli operatori grezzi del flusso di contenuto. Usalo per l’ispezione o la manipolazione di contenuti a basso livello.

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

Suggerimenti e migliori pratiche

  • Avvolgi Document in un using per rilasciare rapidamente i handle dei file.
  • Usa Document.Open(byte[]) per flussi di lavoro in memoria per evitare problemi di blocco dei file.
  • Modifica le scatole della pagina (MediaBox, CropBox) prima di aggiungere contenuti per garantire uno spazio di coordinate corretto.
  • Chiama Save una sola volta dopo tutte le modifiche — i salvataggi ripetuti sono più lenti ma sicuri.
  • Usa PageCollection.Accept(AnnotationSelector) per elaborare in batch le annotazioni su tutte le pagine.

Problemi comuni

ProblemaCausaCorrezione
Document.Open genera un’eccezione su PDF validoIl file è crittografato con una passwordFornire il parametro password nel costruttore
Il conteggio delle pagine è 0 dopo la costruzioneIl nuovo Document() inizia vuotoChiamare doc.Pages.Add() per aggiungere una pagina vuota
Il file salvato è più grande del previstoImmagini o font incorporati più volteUtilizzare l’ottimizzazione (vedi la guida Conversion and Optimization)
Pages[0] genera un errore di indiceLe pagine sono indicizzate a partire da 1, non da 0Usare Pages[1] per la prima pagina

FAQ

Come posso unire due documenti PDF?

Utilizza PdfFileEditor.Concatenate dall’API Facades, oppure copia manualmente le pagine da un documento all’altro usando PageCollection.

Posso aprire un PDF da un URL o da uno stream?

Sì. Leggi il contenuto dell’URL in un byte[] prima, poi passalo a Document.Open(byte[]).

Come elimino una pagina?

Chiama doc.Pages.Delete(pageNumber) dove pageNumber è indicizzato a partire da 1.

Il Document è thread-safe?

No. Ogni thread dovrebbe lavorare con la propria istanza Document.


Riepilogo del Riferimento API

Class / MethodDescription
DocumentOggetto PDF radice; contiene pagine, metadati e campi modulo
Document.OpenFactory statico per aprire un PDF da un array di byte
Document.SaveSerializza il documento in un file o stream
PageSingola pagina PDF con contenuto, annotazioni e geometria
Page.SetMediaBoxDefinisce la media box della pagina
Page.SetCropBoxDefinisce l’area di ritaglio visibile
Page.SetRotationRuota la pagina di 0, 90, 180 o 270 gradi
PageCollectionCollezione ordinata di pagine in un documento
PageCollection.AddAggiunge una pagina vuota
OperatorCollectionOperatori grezzi del flusso di contenuto per una pagina
FileSpecificationDescrittore di allegato file incorporato
ImageStampStamp overlay immagine per le pagine
XFormCollectionXObject di modulo riutilizzabili nel documento

Vedi anche

 Italiano