Inhaltsoperationen

Übersicht

PDF-Seiten werden durch eine Sequenz von Operatoren gerendert, die in einem Inhaltsstrom gespeichert sind. Aspose.PDF FOSS für .NET stellt diese Operatoren über OperatorCollection auf jedem Page bereit und liefert ContentStreamBuilder zum programmatischen Erzeugen neuer Inhalte.


Lesen von Inhaltsstrom-Operatoren

Jedes Page hat eine Contents-Eigenschaft, die ein OperatorCollection zurückgibt. Durchlaufe sie, um jeden Operator zu untersuchen.

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

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

Erstellen von Inhaltsströmen

ContentStreamBuilder bietet ein flüssiges API zum Erstellen von Inhaltsstrom-Operatorenfolgen, einschließlich der Verwaltung des Grafikzustands, Pfadkonstruktion, Textausgabe und Farbeinstellungen.

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();

Grafikzustand

GraphicsState verfolgt die aktuelle Transformationsmatrix, den Textzustand und die Farbwerte, während Operatoren ausgeführt werden. Schlüsseloperationen:

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

Farboperatoren

SetColor und SetColorStroke setzen die Füll- bzw. Strichfarben. Sie akzeptieren RGB-, CMYK- oder Graustufen-Komponenten.

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

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

Textoperatoren

ShowText rendert eine Textzeichenkette an der aktuellen Textposition unter Verwendung der aktuellen Schriftart und Größe aus dem Grafik-Zustand.

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

SetTextMatrix positioniert Text, indem es eine Transformationsmatrix für den Textbereich definiert.


Erweiterter Grafik-Zustand

ExtGState steuert erweiterte Render-Eigenschaften wie Füll- und Strich-Alpha (Transparenz) und den Mischmodus.


Tipps und bewährte Verfahren

  • Kombinieren Sie immer SaveState / RestoreState (oder q / Q Operatoren), um eine Beschädigung des Grafikzustands-Stacks zu vermeiden.
  • Verwenden Sie ContentStreamBuilder für neue Inhalte, anstatt Operatorobjekte manuell zu erstellen.
  • Prüfen Sie OperatorCollection schreibgeschützt, bevor Sie Änderungen vornehmen — unerwartete Operatorsequenzen können Rendering-Probleme verursachen.
  • Farboperatoren müssen dem aktuellen Farbraum entsprechen (RGB, CMYK oder Graustufen).
  • Verwenden Sie SetAdvancedColor für Muster- und ICC-basierte Farbräume.

Häufige Probleme

ProblemUrsacheLösung
Text nach dem Hinzufügen von Operatoren nicht sichtbarKeine Schriftart im Textzustand festgelegtFügen Sie einen SetFont-Operator vor ShowText ein
Farben erscheinen falschFarbraum-Fehlanpassung (RGB vs CMYK)Verwenden Sie den Operator, der dem aktiven Farbraum entspricht
Grafikzustands-Stack-ÜberlaufUnausgeglichene Save / Restore PaareStellen Sie sicher, dass jedes SaveState ein passendes RestoreState hat
Inhalt erscheint an falscher PositionFehlende oder falsche Matrix-TransformationÜberprüfen Sie die Werte von SetMatrix oder ConcatMatrix

FAQ

Was ist ein PDF-Content-Stream?

Ein Content-Stream ist eine Sequenz von Operatoren, die beschreiben, wie eine Seite gerendert wird — Pfade zeichnen, Text platzieren, Farben setzen und den Grafikzustand verwalten.

Kann ich einer bestehenden Seite neuen Inhalt hinzufügen?

Ja. Greifen Sie auf page.Contents zu und fügen Sie neue Operatoren hinzu, oder verwenden Sie ContentStreamBuilder, um eine Sequenz zu erstellen und anzuhängen.

Wie mache ich Text transparent?

Verwenden Sie ExtGState, um das Füll-Alpha (ca) auf einen Wert zwischen 0 (vollständig transparent) und 1 (vollständig undurchsichtig) zu setzen.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
OperatorCollectionSequenz von Content-Stream-Operatoren auf einer Seite
ContentStreamBuilderFluent-Builder zum Erstellen von Operatorsequenzen
ContentStreamBuilder.SaveStateSchiebe den aktuellen Grafikzustand auf den Stack
ContentStreamBuilder.RestoreStatePoppe den Grafikzustand vom Stack
ContentStreamBuilder.SetFillColorSetze die Füllfarbe im aktuellen Farbraum
ContentStreamBuilder.SetMatrixWende eine Koordinatentransformation an
GraphicsStateVerfolgt Transformationsmatrix, Farbe und Textzustand
SetColorOperator, der die nicht-strichende (Füll-)Farbe setzt
SetColorStrokeOperator, der die Strichfarbe setzt
SetAdvancedColorOperator für Muster-/ ICC-basierte Farbräume
ShowTextOperator rendert einen Textstring
SetTextMatrixOperator positioniert Text mittels einer Matrix
ExtGStateErweiterter Grafikzustand (Alpha, Mischmodus)

Siehe auch

 Deutsch