Метаданные и утилиты
Метаданные и утилиты
Aspose.PDF FOSS for .NET включает утилитные классы для доступа к метаданным, координатной геометрии, коллекций изображений и артефактов уровня страниц. Эти строительные блоки поддерживают операции более высокого уровня по всей библиотеке.
XMP‑метаданные
Metadata в документе предоставляет доступ к потоку метаданных XMP. Читать и записывать стандартные или пользовательские свойства XMP.
using var doc = Document.Open(pdfBytes);
// Read existing metadata
foreach (var entry in doc.Metadata)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
// Set a custom property
doc.Metadata.Add("xmp:CustomProp", new XmpValue("custom value"));
doc.Save("with-metadata.pdf");Координатная геометрия
Rectangle и Matrix используются по всему API для позиционирования и трансформации.
var rect = new Rectangle(72, 700, 300, 720);
bool inside = rect.ContainsPoint(150, 710);
// Transformation matrix (translate by 100, 200)
var matrix = new Matrix(1, 0, 0, 1, 100, 200);Операции с коллекцией страниц
PageCollection поддерживает индексацию, итерацию и принятие паттерна посетителя.
using var doc = Document.Open(pdfBytes);
for (int i = 1; i <= doc.Pages.Count; i++)
{
var page = doc.Pages[i];
}Коллекции изображений
XImageCollection управляет изображениями, встроенными в ресурсы страницы. XImage предоставляет методы для проверки свойств изображения.
var images = doc.Pages[1].Resources.Images;
foreach (var img in images)
{
Console.WriteLine($"Color type: {img.GetColorType()}");
}Артефакты
Artifact представляет элементы, не являющиеся содержимым, такие как водяные знаки, колонтитулы и
нижние колонтитулы. Используйте артефакты для нумерации страниц и декоративных элементов.
var artifact = new Artifact(ArtifactType.Watermark);
artifact.SetPageNumberReplacementString("Page {0}");Советы и лучшие практики
- Ключи метаданных XMP соответствуют спецификациям Dublin Core и XMP — используйте стандартные префиксы пространств имён.
Rectangleкоординаты задаются в единицах пользовательского пространства PDF (1/72 дюйма), с началом в левом нижнем углу.- Используйте
Matrixдля affine transformations: translation, rotation, scaling, and shearing. XmpValueподдерживает типы string, integer, double, date и array.- Artifacts являются structural elements — они не появляются в accessibility tree traversals.
Распространённые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| Ключ метаданных не найден | Ключ использует другой префикс пространства имён | Сначала перечислите все ключи, чтобы найти правильный префикс |
| Координаты прямоугольника выглядят инвертированными | Начало координат PDF находится в левом нижнем углу, а не в левом верхнем | Соответственно скорректируйте координаты Y |
| Коллекция изображений пуста | Изображения находятся в виде XObjects, а не в прямых ресурсах страницы | Проверьте XFormCollection для вложенных ресурсов изображений |
Часто задаваемые вопросы
Как прочитать заголовок документа из метаданных?
Получите доступ к doc.Metadata["dc:title"] для свойства заголовка Dublin Core.
Могу ли я добавить артефакт водяного знака?
Да. Создайте Artifact с типом Watermark и добавьте его на страницу.
Какую систему координат использует Rectangle?
PDF user-space: начало в нижнем левом углу, единицы измерения — 1/72 дюйма. Стандартный лист US Letter имеет размеры 612 × 792 единиц.
Сводка справки API
| Class / Method | Description |
|---|---|
Metadata | Словарь XMP‑метаданных в документе |
XmpValue | Типизированный оболочный класс для значений свойств XMP |
Rectangle | Осиально‑выравненный ограничивающий прямоугольник (llx, lly, urx, ury) |
Rectangle.ContainsPoint | Проверка, находится ли точка внутри прямоугольника |
Matrix | 2‑мерная аффинная матрица преобразования |
Matrix.Translate | Создание матрицы переноса |
PageCollection | Упорядоченная коллекция страниц с индексацией, начинающейся с 1 |
XImageCollection | Ресурсы изображений на странице |
XImage | Один встроенный образ с определением типа цвета |
Artifact | Элемент страницы, не являющийся содержимым (водяной знак, верхний/нижний колонтитул) |
Artifact.SetPageNumberReplacementString | Шаблон артефактов нумерации страниц |