Операции със съдържание

Операции със съдържание

Операции със съдържание

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 за създаване на последователности от оператори на content‑stream, включващи управление на графично състояние, конструиране на пътеки, извеждане на текст и настройки на цвят.

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 контролира разширени свойства за рендериране като запълване и контур, алфа (прозрачност) и режим на смесване.


Съвети и най‑добри практики

  • Винаги съпоставяйте SaveState / RestoreState (или q / Q оператори), за да избегнете повреда на стека на графичното състояние.
  • Използвайте ContentStreamBuilder за ново съдържание, вместо ръчно създаване на обекти на оператори.
  • Проверявайте OperatorCollection само за четене преди модифициране – неочаквани последователности от оператори могат да предизвикат проблеми с рендерирането.
  • Операторите за цвят трябва да съответстват на текущото цветово пространство (RGB, CMYK или скала на сивото).
  • Използвайте SetAdvancedColor за шаблонни и ICC‑базирани цветови пространства.

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

IssueCauseFix
Текстът не се вижда след добавяне на операториНе е зададен шрифт в състоянието на текстаДобавете оператор SetFont преди ShowText
Цветовете изглеждат неправилноНесъответствие в цветовото пространство (RGB срещу CMYK)Използвайте оператора, съответстващ на активното цветово пространство
Препълване на стека на графичното състояниеНесъбаланост на двойките Save / RestoreУверете се, че всеки SaveState има съответстващ RestoreState
Съдържанието се появява на грешна позицияЛипсва трансформация на матрицата или е неправилнаПроверете стойностите на SetMatrix или ConcatMatrix

ЧЗВ

Какво е PDF content stream?

Потокът със съдържание е последователност от оператори, които описват как да се изобрази страница — чертаене на пътеки, поставяне на текст, задаване на цветове и управление на графичното състояние.

Мога ли да добавя ново съдържание към съществуваща страница?

Да. Достъпете 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Разширено графично състояние (алфа, режим на смесване)

Вижте още

 Български