Operace s obsahem
Operace obsahu
PDF stránky jsou vykreslovány sekvencí operátorů uložených v content streamu. Aspose.PDF FOSS pro .NET vystavuje tyto operátory prostřednictvím OperatorCollection na každém Page a poskytuje ContentStreamBuilder pro programové vytváření nového obsahu.
Čtení operátorů content-stream
Každý Page má vlastnost Contents, která vrací OperatorCollection. Procházejte ji, abyste prozkoumali každý operátor.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}Vytváření content streamů
ContentStreamBuilder poskytuje plynulý API pro vytváření sekvencí operátorů content-stream zahrnujících správu graphics-state, konstrukci cest, výstup textu a nastavení barev.
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();Stav grafiky
GraphicsState sleduje aktuální transformační matici, stav textu a hodnoty barev během provádění operátorů. Hlavní operace:
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();Operátory barev
SetColor a SetColorStroke nastavují barvy výplně a obrysu. Přijímají komponenty RGB, CMYK nebo odstíny šedi.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);Operátory textu
ShowText vykresluje řetězec textu na aktuální pozici textu pomocí aktuálního písma a velikosti ze stavového grafického kontextu.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix umisťuje text definováním transformační matice pro textový prostor.
Rozšířený grafický stav
ExtGState řídí pokročilé vlastnosti vykreslování, jako jsou alfa (průhlednost) výplně a obrysu a režim prolnutí.
Tipy a osvědčené postupy
- Vždy párujte operátory
SaveState/RestoreState(neboq/Q), aby nedošlo k poškození zásobníku grafického stavu. - Používejte
ContentStreamBuilderpro nový obsah místo ručního vytváření objektů operátorů. - Prohlédněte
OperatorCollectionjen pro čtení před úpravou — neočekávané sekvence operátorů mohou způsobit problémy s vykreslováním. - Barevné operátory musí odpovídat aktuálnímu barevnému prostoru (RGB, CMYK nebo odstíny šedi).
- Používejte
SetAdvancedColorpro vzorové a ICC-založené barevné prostory.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Text není viditelný po přidání operátorů | Ve stavovém textu není nastaven žádný font | Přidejte operátor SetFont před ShowText |
| Barvy vypadají špatně | Neshoda barevného prostoru (RGB vs CMYK) | Použijte operátor odpovídající aktivnímu barevnému prostoru |
| Přetečení zásobníku grafického stavu | Nevyvážené páry Save / Restore | Zajistěte, aby každý SaveState měl odpovídající RestoreState |
| Obsah se zobrazuje na nesprávné pozici | Chybějící nebo nesprávná transformace matice | Ověřte hodnoty SetMatrix nebo ConcatMatrix |
FAQ
Co je PDF obsahový proud?
Obsahový proud je sekvence operátorů, které popisují, jak vykreslit stránku — kreslení cest, umisťování textu, nastavení barev a správa grafického stavu.
Mohu přidat nový obsah na existující stránku?
Ano. Přistupte k page.Contents a přidejte nové operátory, nebo použijte ContentStreamBuilder k vytvoření sekvence a připojte ji.
Jak udělat text průhledným?
Použijte ExtGState k nastavení alfa kanálu výplně (ca) na hodnotu mezi 0 (zcela průhledné) a 1 (zcela neprůhledné).
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
OperatorCollection | Sekvence operátorů content streamu na stránce |
ContentStreamBuilder | Fluent builder pro vytváření sekvencí operátorů |
ContentStreamBuilder.SaveState | Umístit aktuální grafický stav na zásobník |
ContentStreamBuilder.RestoreState | Vyjmout grafický stav ze zásobníku |
ContentStreamBuilder.SetFillColor | Nastavte barvu výplně v aktuálním barevném prostoru |
ContentStreamBuilder.SetMatrix | Použít souřadnicovou transformaci |
GraphicsState | Sleduje transformační matici, barvu a stav textu |
SetColor | Operátor nastavující barvu pro neobrysování (výplň) |
SetColorStroke | Operátor nastavující barvu obrysu |
SetAdvancedColor | Operátor pro vzorové / ICC-založené barevné prostory |
ShowText | Operátor vykreslující textový řetězec |
SetTextMatrix | Operátor umisťující text pomocí matice |
ExtGState | Rozšířený grafický stav (alfa, režim prolnutí) |