Zarządzanie dokumentami
Zarządzanie dokumentami
Document jest obiektem głównym w Aspose.PDF FOSS dla .NET. Reprezentuje
cały plik PDF i zapewnia dostęp do stron, metadanych, pól formularzy oraz
wszystkich innych struktur PDF. Otwieraj istniejące pliki za pomocą Document.Open i twórz nowe
przy użyciu konstruktora Document.
Otwieranie i tworzenie dokumentów
// 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");Praca ze stronami
PageCollection zarządza stronami dokumentu. Dostęp do stron odbywa się za pomocą indeksu zaczynającego się od 1, można dodawać nowe strony lub usuwać istniejące.
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 strony
Każda strona definiuje kilka prostokątów ograniczających. Użyj metod ustawiających na Page, aby je dostosować.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);Zapisywanie dokumentów
Zapisz do ścieżki pliku, strumienia lub tablicy bajtów.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);Załączniki
FileSpecification reprezentuje osadzone załączniki plików w pliku PDF.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);Stemple obrazkowe
ImageStamp nakłada obraz rastrowy na stronę w określonej pozycji.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");Zbiory operatorów
OperatorCollection na każdej stronie przechowuje surowe operatory strumienia zawartości. Użyj go do niskopoziomowej inspekcji lub manipulacji.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}Wskazówki i najlepsze praktyki
- Umieść
Documentw instrukcjiusing, aby szybko zwolnić uchwyty plików. - Użyj
Document.Open(byte[])w przepływach pamięciowych, aby uniknąć problemów z blokadą plików. - Zmodyfikuj pola strony (MediaBox, CropBox) przed dodaniem treści, aby zapewnić prawidłową przestrzeń współrzędnych.
- Wywołaj
Savetylko raz po wszystkich modyfikacjach — wielokrotne zapisy są wolniejsze, ale bezpieczne. - Użyj
PageCollection.Accept(AnnotationSelector)do przetwarzania wsadowego adnotacji na wszystkich stronach.
Typowe problemy
| Issue | Cause | Fix |
|---|---|---|
Document.Open zgłasza wyjątek przy prawidłowym PDF | Plik jest zaszyfrowany hasłem | Podaj parametr hasła w konstruktorze |
| Liczba stron wynosi 0 po konstrukcji | Nowy Document() rozpoczyna się pusty | Wywołaj doc.Pages.Add(), aby dodać pustą stronę |
| Zapisany plik jest większy niż oczekiwano | Obrazy lub czcionki osadzone wielokrotnie | Użyj optymalizacji (zobacz przewodnik Konwersja i optymalizacja) |
Pages[0] zgłasza błąd indeksu | Strony są numerowane od 1, a nie od 0 | Użyj Pages[1] dla pierwszej strony |
FAQ
Jak połączyć dwa dokumenty PDF?
Użyj PdfFileEditor.Concatenate z interfejsu Facades API, lub ręcznie skopiuj strony z jednego dokumentu do drugiego przy użyciu PageCollection.
Czy mogę otworzyć PDF z adresu URL lub strumienia?
Tak. Najpierw odczytaj zawartość URL do byte[], a następnie przekaż ją do
Document.Open(byte[]).
Jak usunąć stronę?
Wywołaj doc.Pages.Delete(pageNumber), gdzie pageNumber jest indeksowane od 1.
Czy Document jest bezpieczny wątkowo?
Nie. Każdy wątek powinien pracować ze swoją własną instancją Document.
Podsumowanie odniesień API
| Class / Method | Description |
|---|---|
Document | Obiekt główny PDF; przechowuje strony, metadane i pola formularzy |
Document.Open | Statyczna metoda fabryczna otwierająca PDF z tablicy bajtów |
Document.Save | Serializuje dokument do pliku lub strumienia |
Page | Pojedyncza strona PDF z treścią, adnotacjami i geometrią |
Page.SetMediaBox | Definiuje media box strony |
Page.SetCropBox | Definiuje widoczny obszar przycięcia |
Page.SetRotation | Obraca stronę o 0, 90, 180 lub 270 stopni |
PageCollection | Uporządkowana kolekcja stron w dokumencie |
PageCollection.Add | Dodaje pustą stronę |
OperatorCollection | Surowi operatorzy strumienia zawartości dla strony |
FileSpecification | Deskryptor osadzonego załącznika pliku |
ImageStamp | Nakładka obrazu (stamp) dla stron |
XFormCollection | Wielokrotnego użytku XObjecty formularzy w dokumencie |