Dokumentenverwaltung
Dokumentenverwaltung
Document ist das Root-Objekt in Aspose.PDF FOSS für .NET. Es repräsentiert eine
vollständige PDF-Datei und bietet Zugriff auf Seiten, Metadaten, Formularfelder und alle
anderen PDF-Strukturen. Öffnen Sie vorhandene Dateien mit Document.Open und erstellen Sie neue
mit dem Document-Konstruktor.
Öffnen und Erstellen von Dokumenten
// 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");Arbeiten mit Seiten
PageCollection verwaltet die Seiten des Dokuments. Greifen Sie über einen 1‑basierten Index auf Seiten zu, fügen Sie neue Seiten hinzu oder entfernen Sie vorhandene.
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;Seitengeometrie
Jede Seite definiert mehrere Bounding-Boxen. Verwenden Sie die Setter-Methoden auf Page, um sie anzupassen.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);Dokumente speichern
Speichern Sie in einen Dateipfad, einen Stream oder ein Byte‑Array.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);Dateianhänge
FileSpecification stellt eingebettete Dateianhänge in einem PDF dar.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);Bildstempel
ImageStamp legt ein Rasterbild an einer angegebenen Position auf einer Seite ab.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");Operator‑Sammlungen
OperatorCollection enthält auf jeder Seite die rohen Content‑Stream‑Operatoren. Verwenden Sie es für die Inspektion oder Manipulation von Inhalten auf niedriger Ebene.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}Tipps und bewährte Verfahren
- Umwickeln Sie
Documentin einerusing‑Anweisung, um Dateihandles sofort freizugeben. - Verwenden Sie
Document.Open(byte[])für In‑Memory‑Workflows, um Dateisperrprobleme zu vermeiden. - Ändern Sie die Seitenboxen (MediaBox, CropBox), bevor Sie Inhalte hinzufügen, um den korrekten Koordinatenraum sicherzustellen.
- Rufen Sie
Savenur einmal nach allen Änderungen auf – wiederholtes Speichern ist langsamer, aber sicher. - Verwenden Sie
PageCollection.Accept(AnnotationSelector), um Anmerkungen über alle Seiten hinweg stapelweise zu verarbeiten.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
Document.Open wirft bei gültigem PDF | Datei ist mit einem Passwort verschlüsselt | Geben Sie den Passwortparameter im Konstruktor an |
| Seitenzahl ist nach der Konstruktion 0 | Neues Document() startet leer | Rufen Sie doc.Pages.Add() auf, um eine leere Seite hinzuzufügen |
| Gespeicherte Datei ist größer als erwartet | Bilder oder Schriftarten mehrfach eingebettet | Verwenden Sie Optimierung (siehe Leitfaden für Konvertierung und Optimierung) |
Pages[0] wirft Indexfehler | Seiten sind 1‑basiert, nicht 0‑basiert | Verwenden Sie Pages[1] für die erste Seite |
FAQ
Wie füge ich zwei PDF-Dokumente zusammen?
Verwenden Sie PdfFileEditor.Concatenate aus der Facades API, oder kopieren Sie Seiten manuell von einem Dokument in ein anderes mit PageCollection.
Kann ich ein PDF von einer URL oder einem Stream öffnen?
Ja. Lesen Sie den URL-Inhalt zuerst in ein byte[], dann übergeben Sie ihn an
Document.Open(byte[]).
Wie lösche ich eine Seite?
Rufen Sie doc.Pages.Delete(pageNumber) auf, wobei pageNumber 1‑basiert ist.
Ist Document thread-safe?
Nein. Jeder Thread sollte mit seiner eigenen Document Instanz arbeiten.
API-Referenzübersicht
| Class / Method | Description |
|---|---|
Document | Root-PDF-Objekt; enthält Seiten, Metadaten und Formularfelder |
Document.Open | Statische Fabrik zum Öffnen eines PDFs aus einem Byte-Array |
Document.Save | Serialisiert das Dokument in eine Datei oder einen Stream |
Page | Einzelne PDF-Seite mit Inhalt, Anmerkungen und Geometrie |
Page.SetMediaBox | Definiert die Media-Box der Seite |
Page.SetCropBox | Definiert den sichtbaren Beschnittbereich |
Page.SetRotation | Dreht die Seite um 0, 90, 180 oder 270 Grad |
PageCollection | Geordnete Sammlung von Seiten in einem Dokument |
PageCollection.Add | Fügt eine leere Seite hinzu |
OperatorCollection | Roh-Content-Stream-Operatoren für eine Seite |
FileSpecification | Einbettungsdatei-Anhangs-Deskriptor |
ImageStamp | Bildüberlagerungsstempel für Seiten |
XFormCollection | Wiederverwendbare Formular-XObjects im Dokument |