Διαχείριση Εγγράφων
Διαχείριση Εγγράφων
Document είναι το αντικείμενο ρίζας στο Aspose.PDF FOSS για .NET. Αντιπροσωπεύει ένα
ολόκληρο αρχείο PDF και παρέχει πρόσβαση σε σελίδες, μεταδεδομένα, πεδία φόρμας και όλα
τα άλλα δομικά στοιχεία PDF. Ανοίξτε υπάρχοντα αρχεία με Document.Open και δημιουργήστε νέα
με τον κατασκευαστή Document.
Άνοιγμα και δημιουργία εγγράφων
// 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");Εργασία με σελίδες
PageCollection διαχειρίζεται τις σελίδες του εγγράφου. Πρόσβαση στις σελίδες με δείκτη που ξεκινά από 1, προσθήκη νέων σελίδων ή αφαίρεση υπαρχουσών.
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;Γεωμετρία σελίδας
Κάθε σελίδα ορίζει αρκετά πλαίσια οριοθέτησης. Χρησιμοποιήστε τις μεθόδους setter στο Page για να τις προσαρμόσετε.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);Αποθήκευση εγγράφων
Αποθηκεύστε σε διαδρομή αρχείου, ροή ή πίνακα byte.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);Συνημμένα αρχείων
FileSpecification αντιπροσωπεύει ενσωματωμένα συνημμένα αρχεία σε ένα PDF.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);Σφραγίδες εικόνας
ImageStamp επικάλυπεί μια raster εικόνα σε μια σελίδα σε καθορισμένη θέση.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");Συλλογές τελεστών
OperatorCollection σε κάθε σελίδα περιέχει τους ακατέργαστους τελεστές ροής περιεχομένου. Χρησιμοποιήστε
το για χαμηλού επιπέδου έλεγχο ή επεξεργασία περιεχομένου.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}Συμβουλές και βέλτιστες πρακτικές
- Τυλίξτε το
Documentσε μια δήλωσηusingγια να απελευθερώσετε άμεσα τους χειριστές αρχείων. - Χρησιμοποιήστε το
Document.Open(byte[])για ροές εργασίας στη μνήμη ώστε να αποφύγετε προβλήματα κλειδώματος αρχείων. - Τροποποιήστε τα κουτιά σελίδας (MediaBox, CropBox) πριν προσθέσετε περιεχόμενο για να εξασφαλίσετε σωστό χώρο συντεταγμένων.
- Καλέστε το
Saveμόνο μία φορά μετά από όλες τις τροποποιήσεις — οι επαναλαμβανόμενες αποθηκεύσεις είναι πιο αργές αλλά ασφαλείς. - Χρησιμοποιήστε το
PageCollection.Accept(AnnotationSelector)για μαζική επεξεργασία σχολίων σε όλες τις σελίδες.
Κοινά προβλήματα
| Issue | Cause | Fix |
|---|---|---|
Document.Open προκαλεί εξαίρεση σε έγκυρο PDF | Το αρχείο είναι κρυπτογραφημένο με κωδικό πρόσβασης | Δώστε την παράμετρο κωδικού πρόσβασης στον κατασκευαστή |
| Ο αριθμός σελίδων είναι 0 μετά τη δημιουργία | Το νέο Document() ξεκινά κενό | Καλέστε το doc.Pages.Add() για να προσθέσετε μια κενή σελίδα |
| Το αποθηκευμένο αρχείο είναι μεγαλύτερο από το αναμενόμενο | Εικόνες ή γραμματοσειρές ενσωματωμένες πολλαπλές φορές | Χρησιμοποιήστε βελτιστοποίηση (δείτε τον οδηγό Conversion and Optimization guide) |
Pages[0] προκαλεί σφάλμα δείκτη | Οι σελίδες είναι 1‑βάσιμες, όχι 0‑βάσιμες | Χρησιμοποιήστε το Pages[1] για την πρώτη σελίδα |
Συχνές ερωτήσεις
Πώς μπορώ να συγχωνεύσω δύο έγγραφα PDF;
Χρησιμοποιήστε PdfFileEditor.Concatenate από το Facades API, ή αντιγράψτε χειροκίνητα σελίδες από ένα έγγραφο σε άλλο χρησιμοποιώντας PageCollection.
Μπορώ να ανοίξω ένα PDF από URL ή ροή;
Ναι. Διαβάστε το περιεχόμενο του URL σε ένα byte[] πρώτα, έπειτα περάστε το στο
Document.Open(byte[]).
Πώς διαγράφω μια σελίδα;
Καλέστε doc.Pages.Delete(pageNumber) όπου pageNumber είναι 1-based.
Το Document είναι ασφαλές ως προς νήματα;
Όχι. Κάθε νήμα πρέπει να λειτουργεί με τη δική του παρουσία Document.
API Περίληψη Αναφοράς
| Class / Method | Description |
|---|---|
Document | Αντικείμενο ρίζας PDF· διατηρεί σελίδες, μεταδεδομένα και πεδία φόρμας |
Document.Open | Στατική μέθοδος κατασκευής για άνοιγμα PDF από πίνακα byte |
Document.Save | Σειριοποίηση του εγγράφου σε αρχείο ή ροή |
Page | Μονή σελίδα PDF με περιεχόμενο, σημειώσεις και γεωμετρία |
Page.SetMediaBox | Ορισμός του media box της σελίδας |
Page.SetCropBox | Ορισμός της ορατής περιοχής περικοπής |
Page.SetRotation | Περιστροφή της σελίδας κατά 0, 90, 180 ή 270 μοίρες |
PageCollection | Ταξινομημένη συλλογή σελίδων σε έγγραφο |
PageCollection.Add | Προσθήκη κενής σελίδας |
OperatorCollection | Ακατέργαστοι τελεστές ροής περιεχομένου για μια σελίδα |
FileSpecification | Περιγραφέας ενσωματωμένου συνημμένου αρχείου |
ImageStamp | Σφραγίδα επικάλυψης εικόνας για σελίδες |
XFormCollection | Επαναχρησιμοποιήσιμα XObjects φόρμας στο έγγραφο |