Zarządzanie dokumentami

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ść Document w instrukcji using, 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 Save tylko raz po wszystkich modyfikacjach — wielokrotne zapisy są wolniejsze, ale bezpieczne.
  • Użyj PageCollection.Accept(AnnotationSelector) do przetwarzania wsadowego adnotacji na wszystkich stronach.

Typowe problemy

IssueCauseFix
Document.Open zgłasza wyjątek przy prawidłowym PDFPlik jest zaszyfrowany hasłemPodaj parametr hasła w konstruktorze
Liczba stron wynosi 0 po konstrukcjiNowy Document() rozpoczyna się pustyWywołaj doc.Pages.Add(), aby dodać pustą stronę
Zapisany plik jest większy niż oczekiwanoObrazy lub czcionki osadzone wielokrotnieUżyj optymalizacji (zobacz przewodnik Konwersja i optymalizacja)
Pages[0] zgłasza błąd indeksuStrony są numerowane od 1, a nie od 0Uż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 / MethodDescription
DocumentObiekt główny PDF; przechowuje strony, metadane i pola formularzy
Document.OpenStatyczna metoda fabryczna otwierająca PDF z tablicy bajtów
Document.SaveSerializuje dokument do pliku lub strumienia
PagePojedyncza strona PDF z treścią, adnotacjami i geometrią
Page.SetMediaBoxDefiniuje media box strony
Page.SetCropBoxDefiniuje widoczny obszar przycięcia
Page.SetRotationObraca stronę o 0, 90, 180 lub 270 stopni
PageCollectionUporządkowana kolekcja stron w dokumencie
PageCollection.AddDodaje pustą stronę
OperatorCollectionSurowi operatorzy strumienia zawartości dla strony
FileSpecificationDeskryptor osadzonego załącznika pliku
ImageStampNakładka obrazu (stamp) dla stron
XFormCollectionWielokrotnego użytku XObjecty formularzy w dokumencie

Zobacz także

 Polski