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
Documentin unusingper 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
Saveuna 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
| Problema | Causa | Correzione |
|---|---|---|
Document.Open genera un’eccezione su PDF valido | Il file è crittografato con una password | Fornire il parametro password nel costruttore |
| Il conteggio delle pagine è 0 dopo la costruzione | Il nuovo Document() inizia vuoto | Chiamare doc.Pages.Add() per aggiungere una pagina vuota |
| Il file salvato è più grande del previsto | Immagini o font incorporati più volte | Utilizzare l’ottimizzazione (vedi la guida Conversion and Optimization) |
Pages[0] genera un errore di indice | Le pagine sono indicizzate a partire da 1, non da 0 | Usare 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 / Method | Description |
|---|---|
Document | Oggetto PDF radice; contiene pagine, metadati e campi modulo |
Document.Open | Factory statico per aprire un PDF da un array di byte |
Document.Save | Serializza il documento in un file o stream |
Page | Singola pagina PDF con contenuto, annotazioni e geometria |
Page.SetMediaBox | Definisce la media box della pagina |
Page.SetCropBox | Definisce l’area di ritaglio visibile |
Page.SetRotation | Ruota la pagina di 0, 90, 180 o 270 gradi |
PageCollection | Collezione ordinata di pagine in un documento |
PageCollection.Add | Aggiunge una pagina vuota |
OperatorCollection | Operatori grezzi del flusso di contenuto per una pagina |
FileSpecification | Descrittore di allegato file incorporato |
ImageStamp | Stamp overlay immagine per le pagine |
XFormCollection | XObject di modulo riutilizzabili nel documento |