Operacje treści

Operacje treści

Operacje na treści

Strony PDF są renderowane przez sekwencję operatorów przechowywanych w strumieniu zawartości.
Aspose.PDF FOSS for .NET udostępnia te operatory poprzez OperatorCollection
na każdym Page i zapewnia ContentStreamBuilder do programowego tworzenia nowej
zawartości.


Odczytywanie operatorów strumienia zawartości

Każdy Page ma własność Contents, która zwraca OperatorCollection. Iteruj go, aby sprawdzić każdego operatora.

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

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

Tworzenie strumieni zawartości

ContentStreamBuilder zapewnia płynne API do konstruowania sekwencji operatorów strumienia treści, w tym zarządzania stanem graficznym, konstrukcji ścieżek, wyjścia tekstu i ustawień kolorów.

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

Stan graficzny

GraphicsState śledzi bieżącą macierz przekształceń, stan tekstu i wartości kolorów podczas wykonywania operatorów. Kluczowe operacje:

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

Operatory koloru

SetColor i SetColorStroke ustawiają odpowiednio kolory wypełnienia i obrysu.
Akceptują składniki RGB, CMYK lub odcienie szarości.

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

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

Operatory tekstu

ShowText renderuje ciąg tekstowy w bieżącej pozycji tekstowej, używając bieżącej czcionki i rozmiaru ze stanu graficznego.

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

SetTextMatrix pozycjonuje tekst, definiując macierz przekształcenia dla przestrzeni tekstowej.


Rozszerzony stan graficzny

ExtGState kontroluje zaawansowane właściwości renderowania, takie jak wypełnienie i alfa obrysu (przezroczystość) oraz tryb mieszania.


Wskazówki i najlepsze praktyki

  • Zawsze łącz SaveState / RestoreState (lub operatory q / Q), aby uniknąć uszkodzenia stosu stanu grafiki.
  • Używaj ContentStreamBuilder do nowej zawartości zamiast ręcznego tworzenia obiektów operatorów.
  • Sprawdzaj OperatorCollection w trybie tylko do odczytu przed modyfikacją — nieoczekiwane sekwencje operatorów mogą powodować problemy z renderowaniem.
  • Operatory koloru muszą odpowiadać bieżącej przestrzeni kolorów (RGB, CMYK lub odcienie szarości).
  • Używaj SetAdvancedColor dla wzorcowych i opartych na ICC przestrzeni kolorów.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Tekst niewidoczny po dodaniu operatorówNie ustawiono czcionki w stanie tekstuDodaj operator SetFont przed ShowText
Kolory wyświetlane niepoprawnieNiezgodność przestrzeni kolorów (RGB vs CMYK)Użyj operatora pasującego do aktywnej przestrzeni kolorów
Przepełnienie stosu stanu grafikiNiezrównoważone pary Save / RestoreUpewnij się, że każdy SaveState ma pasujący RestoreState
Zawartość pojawia się w niewłaściwej pozycjiBrak lub nieprawidłowa transformacja macierzySprawdź wartości SetMatrix lub ConcatMatrix

Najczęściej zadawane pytania

Czym jest strumień zawartości PDF?

Strumień zawartości jest sekwencją operatorów opisujących, jak renderować stronę — rysowanie ścieżek, umieszczanie tekstu, ustawianie kolorów i zarządzanie stanem grafiki.

Czy mogę dodać nową treść do istniejącej strony?

Tak. Uzyskaj dostęp do page.Contents i dodaj nowe operatory, lub użyj ContentStreamBuilder, aby skonstruować sekwencję i dodać ją.

Jak sprawić, aby tekst był przezroczysty?

Użyj ExtGState, aby ustawić alfa wypełnienia (ca) na wartość pomiędzy 0 (całkowicie przezroczyste) a 1 (całkowicie nieprzezroczyste).


API Podsumowanie odniesienia

Klasa / MetodaOpis
OperatorCollectionSekwencja operatorów strumienia zawartości na stronie
ContentStreamBuilderPłynny konstruktor do tworzenia sekwencji operatorów
ContentStreamBuilder.SaveStateUmieszczenie bieżącego stanu grafiki na stosie
ContentStreamBuilder.RestoreStatePobranie stanu grafiki ze stosu
ContentStreamBuilder.SetFillColorUstawienie koloru wypełnienia w bieżącej przestrzeni kolorów
ContentStreamBuilder.SetMatrixZastosowanie transformacji współrzędnych
GraphicsStateŚledzi macierz transformacji, kolor i stan tekstu
SetColorOperator ustawiający kolor nieobrysowy (wypełnienia)
SetColorStrokeOperator ustawiający kolor obrysu
SetAdvancedColorOperator dla wzorców / przestrzeni kolorów opartych na ICC
ShowTextOperator renderujący ciąg tekstowy
SetTextMatrixOperator pozycjonujący tekst za pomocą macierzy
ExtGStateRozszerzony stan grafiki (alpha, tryb mieszania)

Zobacz także

 Polski