Операції з вмістом

Операції з вмістом

Операції з вмістом

Сторінки PDF відображаються за допомогою послідовності операторів, збережених у потоці вмісту.
Aspose.PDF FOSS for .NET надає доступ до цих операторів через OperatorCollection
на кожному Page і забезпечує ContentStreamBuilder для створення нового
вмісту програмно.


Читання операторів потоку вмісту

Кожен Page має властивість Contents, яка повертає OperatorCollection. Ітеруйте його, щоб проаналізувати кожен оператор.

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

foreach (var op in page.Contents)
{
    Console.WriteLine(op.ToString());
}

Створення потоків вмісту

ContentStreamBuilder забезпечує плавний API для створення послідовностей операторів контент‑потоку, включаючи керування графічним станом, побудову шляхів, виведення тексту та налаштування кольорів.

var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0);  // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();

Графічний стан

GraphicsState відстежує поточну матрицю перетворення, стан тексту та значення кольорів під час виконання операторів. Ключові операції:

var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();

Оператори кольору

SetColor і SetColorStroke встановлюють кольори заливки та контуру відповідно. Вони приймають компоненти RGB, CMYK або відтінки сірого.

// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);

// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);

Текстові оператори

ShowText виводить рядок тексту у поточній позиції тексту, використовуючи поточний шрифт і розмір з графічного стану.

var textOp = new ShowText("Hello, PDF!");

SetTextMatrix позиціонує текст, визначаючи матрицю перетворення для простору тексту.


Розширений графічний стан

ExtGState керує розширеними властивостями рендерингу, такими як заповнення та обведення, alpha (прозорість) та режим змішування.


Поради та найкращі практики

  • Завжди поєднуйте SaveState / RestoreState (або оператори q / Q), щоб уникнути пошкодження стеку стану графіки.
  • Використовуйте ContentStreamBuilder для нового вмісту, а не вручну створюючи об’єкти операторів.
  • Перевіряйте OperatorCollection лише для читання перед зміною — неочікувані послідовності операторів можуть спричинити проблеми з відображенням.
  • Оператори кольору повинні відповідати поточному простору кольору (RGB, CMYK або відтінкам сірого).
  • Використовуйте SetAdvancedColor для шаблонних та ICC‑базованих просторів кольору.

Поширені проблеми

ПроблемаПричинаВиправлення
Текст не видно після додавання операторівНе встановлено шрифт у стані текстуДодайте оператор SetFont перед ShowText
Кольори відображаються неправильноНесумісність простору кольору (RGB проти CMYK)Використовуйте оператор, що відповідає активному простору кольору
Переповнення стеку графічного стануНесбалансовані пари Save / RestoreПереконайтеся, що кожен SaveState має відповідний RestoreState
Вміст відображається в неправильному положенніВідсутня або неправильна матрична трансформаціяПеревірте значення SetMatrix або ConcatMatrix

Часті питання

Що таке потік вмісту PDF?

Контентний потік — це послідовність операторів, які описують, як відобразити сторінку — малювання шляхів, розміщення тексту, встановлення кольорів та керування графічним станом.

Чи можу я додати новий вміст до існуючої сторінки?

Так. Доступ до page.Contents і додайте нові оператори, або використайте ContentStreamBuilder для створення послідовності та додайте її.

Як зробити текст прозорим?

Використовуйте ExtGState, щоб встановити альфу заповнення (ca) у значення між 0 (повністю прозорий) і 1 (повністю непрозорий).


Зведення довідки API

Class / MethodDescription
OperatorCollectionПослідовність операторів потоку вмісту на сторінці
ContentStreamBuilderБагатокроковий будівник для створення послідовностей операторів
ContentStreamBuilder.SaveStateПомістити поточний графічний стан у стек
ContentStreamBuilder.RestoreStateВилучити графічний стан зі стеку
ContentStreamBuilder.SetFillColorВстановити колір заливки у поточному колірному просторі
ContentStreamBuilder.SetMatrixЗастосувати координатне перетворення
GraphicsStateВідстежує матрицю перетворення, колір та стан тексту
SetColorОператор, що встановлює колір без обведення (заливка)
SetColorStrokeОператор, що встановлює колір обведення
SetAdvancedColorОператор для шаблонних / ICC‑базованих колірних просторів
ShowTextОператор, що виводить рядок тексту
SetTextMatrixОператор, що позиціонує текст за допомогою матриці
ExtGStateРозширений графічний стан (альфа, режим змішування)

Див. також

 Українська