Operacije sadržaja
Operacije sadržaja
PDF stranice se renderiraju nizom operatora pohranjenih u sadržajni tok.
Aspose.PDF FOSS for .NET izlaže te operatore putem OperatorCollection
na svakom Page, i pruža ContentStreamBuilder za konstruiranje novog
sadržaja programatski.
Čitanje operatora sadržajnog toka
Svaki Page ima svojstvo Contents koje vraća OperatorCollection. Prođite kroz njega kako biste pregledali svaki operator.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}Izgradnja tokova sadržaja
ContentStreamBuilder pruža fluent API za izgradnju sekvenci operatora content‑stream uključujući upravljanje grafičkim stanjem, konstrukciju putanja, ispis teksta i postavke boja.
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();Grafičko stanje
GraphicsState prati trenutnu matricu transformacije, stanje teksta i vrijednosti boja dok se operatori izvršavaju. Ključne operacije:
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();Operatori boja
SetColor i SetColorStroke postavljaju boje ispune i poteza, redom. Prihvaćaju RGB, CMYK ili komponente u sivim tonovima.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);Tekstualni operatori
ShowText iscrtava niz teksta na trenutnoj tekstualnoj poziciji koristeći trenutni font i veličinu iz grafičkog stanja.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix pozicionira tekst definirajući transformacijsku matricu za tekstualni prostor.
Prošireno grafičko stanje
ExtGState kontrolira napredna svojstva renderiranja poput fill i stroke, alfa (transparentnost) i blend mode.
Savjeti i najbolje prakse
- Uvijek uparite
SaveState/RestoreState(iliq/Qoperatore) kako biste izbjegli oštećenje stoga stanja grafike. - Koristite
ContentStreamBuilderza novi sadržaj umjesto ručnog stvaranja objekata operatora. - Pregledajte
OperatorCollectionsamo za čitanje prije izmjene — neočekivani redoslijed operatora može uzrokovati probleme s prikazom. - Operatori boje moraju odgovarati trenutnom prostoru boja (RGB, CMYK ili sivu skalu).
- Koristite
SetAdvancedColorza uzorke i ICC‑bazirane prostore boja.
Uobičajeni problemi
| Problem | Uzrok | Rješenje |
|---|---|---|
| Tekst nije vidljiv nakon dodavanja operatora | Nije postavljen font u stanju teksta | Dodajte operator SetFont prije ShowText |
| Boje su pogrešne | Neusklađenost bojnog prostora (RGB vs CMYK) | Koristite operator koji odgovara aktivnom prostoru boja |
| Preljev stoga grafičkog stanja | Neuravnoteženi parovi Save / Restore | Osigurajte da svaki SaveState ima odgovarajući RestoreState |
| Sadržaj se prikazuje na pogrešnoj poziciji | Nedostaje ili je netočna matrica transformacije | Provjerite vrijednosti SetMatrix ili ConcatMatrix |
FAQ
Što je PDF content stream?
Strujni sadržaj je niz operatora koji opisuju kako prikazati stranicu — crtanje putanja, postavljanje teksta, postavljanje boja i upravljanje grafičkim stanjem.
Mogu li dodati novi sadržaj na postojeću stranicu?
Da. Pristupite page.Contents i dodajte nove operatore, ili upotrijebite ContentStreamBuilder za izgradnju sekvence i dodajte je.
Kako učiniti tekst prozirnim?
Koristite ExtGState za postavljanje alfa vrijednosti ispune (ca) na vrijednost između 0 (potpuno proziran) i 1 (potpuno neprozirno).
Sažetak API referencije
| Klasa / Metoda | Opis |
|---|---|
OperatorCollection | Niz operatora sadržajnog toka na stranici |
ContentStreamBuilder | Fluidni builder za izgradnju sekvenci operatora |
ContentStreamBuilder.SaveState | Guranje trenutnog grafičkog stanja na stog |
ContentStreamBuilder.RestoreState | Uklanjanje grafičkog stanja sa stoga |
ContentStreamBuilder.SetFillColor | Postavljanje boje ispune u trenutnom kolor prostoru |
ContentStreamBuilder.SetMatrix | Primjena koordinatne transformacije |
GraphicsState | Praćenje matrice transformacije, boje i stanja teksta |
SetColor | Operator koji postavlja boju ne‑crtanja (ispune) |
SetColorStroke | Operator koji postavlja boju crtanja |
SetAdvancedColor | Operator za uzorke / ICC‑bazirane kolor prostore |
ShowText | Operator koji iscrtava tekstualni niz |
SetTextMatrix | Operator koji pozicionira tekst putem matrice |
ExtGState | Prošireno grafičko stanje (alpha, način miješanja) |