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 operatoryq/Q), aby uniknąć uszkodzenia stosu stanu grafiki. - Używaj
ContentStreamBuilderdo nowej zawartości zamiast ręcznego tworzenia obiektów operatorów. - Sprawdzaj
OperatorCollectionw 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
SetAdvancedColordla wzorcowych i opartych na ICC przestrzeni kolorów.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Tekst niewidoczny po dodaniu operatorów | Nie ustawiono czcionki w stanie tekstu | Dodaj operator SetFont przed ShowText |
| Kolory wyświetlane niepoprawnie | Niezgodność przestrzeni kolorów (RGB vs CMYK) | Użyj operatora pasującego do aktywnej przestrzeni kolorów |
| Przepełnienie stosu stanu grafiki | Niezrównoważone pary Save / Restore | Upewnij się, że każdy SaveState ma pasujący RestoreState |
| Zawartość pojawia się w niewłaściwej pozycji | Brak lub nieprawidłowa transformacja macierzy | Sprawdź 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 / Metoda | Opis |
|---|---|
OperatorCollection | Sekwencja operatorów strumienia zawartości na stronie |
ContentStreamBuilder | Płynny konstruktor do tworzenia sekwencji operatorów |
ContentStreamBuilder.SaveState | Umieszczenie bieżącego stanu grafiki na stosie |
ContentStreamBuilder.RestoreState | Pobranie stanu grafiki ze stosu |
ContentStreamBuilder.SetFillColor | Ustawienie koloru wypełnienia w bieżącej przestrzeni kolorów |
ContentStreamBuilder.SetMatrix | Zastosowanie transformacji współrzędnych |
GraphicsState | Śledzi macierz transformacji, kolor i stan tekstu |
SetColor | Operator ustawiający kolor nieobrysowy (wypełnienia) |
SetColorStroke | Operator ustawiający kolor obrysu |
SetAdvancedColor | Operator dla wzorców / przestrzeni kolorów opartych na ICC |
ShowText | Operator renderujący ciąg tekstowy |
SetTextMatrix | Operator pozycjonujący tekst za pomocą macierzy |
ExtGState | Rozszerzony stan grafiki (alpha, tryb mieszania) |