Управление документами

Управление документами

Управление документами

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) для пакетной обработки аннотаций на всех страницах.

Общие проблемы

IssueCauseFix
Document.Open выдает ошибку при корректном PDFФайл зашифрован паролемПередайте параметр пароля в конструктор
Количество страниц равно 0 после созданияНовый Document() начинается пустымВызовите doc.Pages.Add() для добавления пустой страницы
Сохранённый файл больше, чем ожидалосьИзображения или шрифты внедрены несколько разИспользуйте оптимизацию (см. руководство Conversion and Optimization)
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.

Является ли Document потокобезопасным?

Нет. Каждый поток должен работать со своим собственным экземпляром Document.


Сводка справочника API

Class / MethodDescription
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 формы в документе

См. также

 Русский