Opérations de contenu
Opérations de contenu
Les pages PDF sont rendues par une séquence d’opérateurs stockés dans un flux de contenu.
Aspose.PDF FOSS for .NET expose ces opérateurs via OperatorCollection
sur chaque Page, et fournit ContentStreamBuilder pour construire du nouveau
contenu de manière programmatique.
Lecture des opérateurs de flux de contenu
Chaque Page possède une propriété Contents qui renvoie un OperatorCollection. Parcourez‑le pour inspecter chaque opérateur.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}Création de flux de contenu
ContentStreamBuilder fournit une API fluide pour la construction de séquences d’opérateurs de flux de contenu, incluant la gestion de l’état graphique, la construction de chemins, la sortie de texte et les réglages de couleur.
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();État graphique
GraphicsState suit la matrice de transformation actuelle, l’état du texte et les valeurs de couleur pendant l’exécution des opérateurs. Opérations clés :
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();Opérateurs de couleur
SetColor et SetColorStroke définissent respectivement les couleurs de remplissage et de contour.
Ils acceptent des composants RGB, CMYK ou en niveaux de gris.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);Opérateurs de texte
ShowText rend une chaîne de texte à la position de texte actuelle en utilisant la police et la taille actuelles de l’état graphique.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix positionne le texte en définissant une matrice de transformation pour l’espace texte.
État graphique étendu
ExtGState contrôle les propriétés de rendu avancées comme le remplissage et le trait, l’alpha (transparence) et le mode de fusion.
Conseils et meilleures pratiques
- Associez toujours
SaveState/RestoreState(ou les opérateursq/Q) pour éviter de corrompre la pile d’état graphique. - Utilisez
ContentStreamBuilderpour du nouveau contenu plutôt que de construire manuellement des objets opérateur. - Inspectez
OperatorCollectionen lecture seule avant de le modifier — des séquences d’opérateurs inattendues peuvent provoquer des problèmes de rendu. - Les opérateurs de couleur doivent correspondre à l’espace colorimétrique actuel (RGB, CMYK ou niveaux de gris).
- Utilisez
SetAdvancedColorpour les espaces colorimétriques de type motif et basés sur ICC.
Problèmes courants
| Issue | Cause | Fix |
|---|---|---|
| Texte non visible après l’ajout d’opérateurs | Aucune police définie dans l’état du texte | Ajouter un opérateur SetFont avant ShowText |
| Les couleurs apparaissent incorrectes | Incompatibilité d’espace colorimétrique (RGB vs CMYK) | Utiliser l’opérateur correspondant à l’espace colorimétrique actif |
| Débordement de la pile d’état graphique | Paires Save / Restore déséquilibrées | S’assurer que chaque SaveState a un RestoreState correspondant |
| Le contenu apparaît à la mauvaise position | Transformation de matrice manquante ou incorrecte | Vérifier les valeurs SetMatrix ou ConcatMatrix |
FAQ
Qu’est‑ce qu’un flux de contenu PDF ?
Un flux de contenu est une séquence d’opérateurs qui décrivent comment rendre une page — tracer des chemins, placer du texte, définir les couleurs et gérer l’état graphique.
Puis‑je ajouter du nouveau contenu à une page existante ?
Oui. Accédez à page.Contents et ajoutez de nouveaux opérateurs, ou utilisezContentStreamBuilder pour construire une séquence et l’ajouter.
Comment rendre le texte transparent ?
Utilisez ExtGState pour définir l’alpha de remplissage (ca) à une valeur comprise entre 0 (totalement transparent) et 1 (totalement opaque).
Résumé de la référence API
| Classe / Méthode | Description |
|---|---|
OperatorCollection | Séquence d’opérateurs de flux de contenu sur une page |
ContentStreamBuilder | Constructeur fluide pour créer des séquences d’opérateurs |
ContentStreamBuilder.SaveState | Empiler l’état graphique actuel sur la pile |
ContentStreamBuilder.RestoreState | Dépiler l’état graphique de la pile |
ContentStreamBuilder.SetFillColor | Définir la couleur de remplissage dans l’espace colorimétrique actuel |
ContentStreamBuilder.SetMatrix | Appliquer une transformation de coordonnées |
GraphicsState | Suit la matrice de transformation, la couleur et l’état du texte |
SetColor | Opérateur définissant la couleur de remplissage (non-tracé) |
SetColorStroke | Opérateur définissant la couleur de tracé |
SetAdvancedColor | Opérateur pour les espaces colorimétriques à motif / basés sur ICC |
ShowText | Opérateur rendant une chaîne de texte |
SetTextMatrix | Opérateur positionnant le texte via une matrice |
ExtGState | État graphique étendu (alpha, mode de fusion) |