Управління документами
Управління документами
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;Геометрія сторінки
Кожна сторінка визначає кілька обмежувальних рамок. Використовуйте методи‑встановлювачі на 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);Збереження документів
Збережіть у шлях файлу, у потік або у масив байтів.
// 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 накладає растрове зображення на сторінку у вказаній позиції.
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) |
Pages[0] викликає помилку індексу | Сторінки нумеруються з 1, а не з 0 | Використайте Pages[1] для першої сторінки |
FAQ
Як об’єднати два PDF‑документи?
Використовуйте PdfFileEditor.Concatenate з Facades API, або вручну копіюйте сторінки з одного документа в інший, використовуючи PageCollection.
Чи можу я відкрити PDF з URL або потоку?
Так. Спочатку прочитайте вміст URL у byte[], а потім передайте його в
Document.Open(byte[]).
Як видалити сторінку?
Викличте doc.Pages.Delete(pageNumber), де pageNumber є 1‑базовим.
Чи є Document потокобезпечним?
Ні. Кожен потік повинен працювати зі своїм власним екземпляром Document.
Огляд довідника API
| Class / Method | Description |
|---|---|
Document | Кореневий об’єкт PDF; містить сторінки, метадані та поля форми |
Document.Open | Статична фабрика для відкриття PDF з масиву байтів |
Document.Save | Серіалізувати документ у файл або потік |
Page | Окрема сторінка PDF з вмістом, анотаціями та геометрією |
Page.SetMediaBox | Визначити медіа‑коробку сторінки |
Page.SetCropBox | Визначити видиму область обрізки |
Page.SetRotation | Повернути сторінку на 0, 90, 180 або 270 градусів |
PageCollection | Впорядкована колекція сторінок у документі |
PageCollection.Add | Додати порожню сторінку |
OperatorCollection | Оператори необробленого потоку вмісту для сторінки |
FileSpecification | Описувач вбудованого файлу‑вкладення |
ImageStamp | Зображення‑накладення (штамп) для сторінок |
XFormCollection | Багаторазові XObject‑форми у документі |