Управление на документи
Управление на документи
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)за пакетна обработка на анотациите във всички страници.
Общи проблеми
| Проблем | Причина | Решение |
|---|---|---|
Document.Open хвърля изключение при валиден PDF | Файлът е криптиран с парола | Предайте параметъра за парола в конструктора |
| Броят на страниците е 0 след създаване | Новият Document() започва празен | Извикайте doc.Pages.Add(), за да добавите празна страница |
| Записаният файл е по-голям от очакваното | Изображения или шрифтове са вградени многократно | Използвайте оптимизация (вижте ръководството за Конвертиране и оптимизация) |
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 инстанция.
Обобщение на справочника
| Class / Method | Description |
|---|---|
Document | Root 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‑и за формуляри в документа |