Operazioni sui contenuti

Operazioni sui contenuti

Operazioni di contenuto

Le pagine PDF vengono renderizzate da una sequenza di operatori memorizzati in un flusso di contenuto.
Aspose.PDF FOSS for .NET espone questi operatori tramite OperatorCollection
su ogni Page, e fornisce ContentStreamBuilder per costruire nuovo
contenuto programmaticamente.


Lettura degli operatori di flusso di contenuto

Ogni Page ha una proprietà Contents che restituisce un OperatorCollection. Itera su di essa per ispezionare ogni operatore.

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

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

Creazione di flussi di contenuto

ContentStreamBuilder fornisce un’API fluida per la costruzione di sequenze di operatori del flusso di contenuto, inclusa la gestione dello stato grafico, la costruzione di percorsi, l’output di testo e le impostazioni di colore.

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

Stato grafico

GraphicsState tiene traccia della matrice di trasformazione corrente, dello stato del testo e dei valori di colore mentre gli operatori vengono eseguiti. Operazioni chiave:

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

Operatori di colore

SetColor e SetColorStroke impostano rispettivamente i colori di riempimento e di contorno. Accettano componenti RGB, CMYK o in scala di grigi.

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

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

Operatori di testo

ShowText rende una stringa di testo nella posizione di testo corrente utilizzando il carattere e la dimensione correnti dallo stato grafico.

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

SetTextMatrix posiziona il testo definendo una matrice di trasformazione per lo spazio del testo.


Stato grafico esteso

ExtGState controlla le proprietà di rendering avanzate come l’alpha di riempimento e di tratto (trasparenza) e la modalità di fusione.


Suggerimenti e migliori pratiche

  • Associa sempre SaveState / RestoreState (o gli operatori q / Q) per evitare di corrompere lo stack dello stato grafico.
  • Usa ContentStreamBuilder per nuovo contenuto anziché costruire manualmente oggetti operatore.
  • Ispeziona OperatorCollection in sola lettura prima di modificarlo — sequenze di operatori inattese possono causare problemi di rendering.
  • Gli operatori di colore devono corrispondere allo spazio colore corrente (RGB, CMYK o scala di grigi).
  • Usa SetAdvancedColor per spazi colore basati su pattern e ICC.

Problemi comuni

ProblemaCausaCorrezione
Testo non visibile dopo l’aggiunta di operatoriNessun font impostato nello stato del testoAggiungere un operatore SetFont prima di ShowText
I colori appaiono erratiDiscrepanza dello spazio colore (RGB vs CMYK)Utilizzare l’operatore corrispondente allo spazio colore attivo
Overflow dello stack dello stato graficoCoppie Save / Restore sbilanciateAssicurarsi che ogni SaveState abbia una corrispondente RestoreState
Il contenuto appare nella posizione sbagliataMatrice di trasformazione mancante o errataVerificare i valori SetMatrix o ConcatMatrix

FAQ

Che cos’è uno stream di contenuto PDF?

Un flusso di contenuto è una sequenza di operatori che descrivono come renderizzare una pagina — disegnare percorsi, posizionare testo, impostare colori e gestire lo stato grafico.

Posso aggiungere nuovo contenuto a una pagina esistente?

Sì. Accedi a page.Contents e aggiungi nuovi operatori, oppure usa
ContentStreamBuilder per costruire una sequenza e aggiungerla.

Come faccio a rendere il testo trasparente?

Usa ExtGState per impostare l’alpha di riempimento (ca) a un valore compreso tra 0 (completamente trasparente) e 1 (completamente opaco).


Riepilogo del Riferimento API

Classe / MetodoDescrizione
OperatorCollectionSequenza di operatori del flusso di contenuto su una pagina
ContentStreamBuilderBuilder fluente per la costruzione di sequenze di operatori
ContentStreamBuilder.SaveStateInserisce lo stato grafico corrente nello stack
ContentStreamBuilder.RestoreStateRimuove lo stato grafico dallo stack
ContentStreamBuilder.SetFillColorImposta il colore di riempimento nello spazio colore corrente
ContentStreamBuilder.SetMatrixApplica una trasformazione di coordinate
GraphicsStateTraccia la matrice di trasformazione, il colore e lo stato del testo
SetColorOperatore che imposta il colore di riempimento (non tracciato)
SetColorStrokeOperatore che imposta il colore di tracciatura
SetAdvancedColorOperatore per spazi colore basati su pattern / ICC
ShowTextOperatore che rende una stringa di testo
SetTextMatrixOperatore che posiziona il testo tramite una matrice
ExtGStateStato grafico esteso (alpha, modalità di fusione)

Vedi anche

 Italiano