Opérations de contenu
Vue d’ensemble
Les pages PDF sont rendues par une séquence d’opérateurs stockés dans un flux de contenu. Aspose.PDF FOSS pour .NET expose ces opérateurs via OperatorCollection sur chaque Page, et fournit ContentStreamBuilder pour construire du nouveau contenu de façon programmatique.
Lecture des opérateurs de flux de contenu
Chaque Page possède une propriété Contents qui renvoie un OperatorCollection. Parcourez-la 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());
}Construction de flux de contenu
ContentStreamBuilder fournit un API fluide pour construire des 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 à mesure que les opérateurs s’exécutent. 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 composantes RGB, CMYK ou 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 courantes provenant 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 telles que l’alpha de remplissage et de contour (transparence) et le mode de fusion.
Conseils et bonnes pratiques
- Associez toujours les opérateurs
SaveState/RestoreState(ouq/Q) afin d’éviter de corrompre la pile d’état graphique. - Utilisez
ContentStreamBuilderpour le nouveau contenu plutôt que de créer manuellement des objets opérateur. - Inspectez
OperatorCollectionen lecture seule avant de le modifier — des séquences d’opérateurs inattendues peuvent entraîner des problèmes de rendu. - Les opérateurs de couleur doivent correspondre à l’espace couleur actuel (RGB, CMYK ou niveaux de gris).
- Utilisez
SetAdvancedColorpour les espaces couleur à motifs et basés sur ICC.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Texte non visible après l’ajout d’opérateurs | Aucune police définie dans l’état du texte | Ajoutez un opérateur SetFont avant ShowText |
| Les couleurs apparaissent incorrectes | Incohérence d’espace couleur (RGB vs CMYK) | Utilisez l’opérateur correspondant à l’espace colorimétrique actif |
| Débordement de la pile d’état graphique | Paires Save / Restore déséquilibrées | Assurez-vous que chaque SaveState possède un RestoreState correspondant |
| Le contenu apparaît à la mauvaise position | Transformation matricielle manquante ou incorrecte | Vérifiez les valeurs de 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 utilisez ContentStreamBuilder 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 (complètement transparent) et 1 (complètement opaque).
API Reference Résumé
| Classe / Méthode | Description |
|---|---|
OperatorCollection | Séquence d’opérateurs de flux de contenu sur une page |
ContentStreamBuilder | Builder fluide pour construire des séquences d’opérateurs |
ContentStreamBuilder.SaveState | Empile l’état graphique actuel sur la pile |
ContentStreamBuilder.RestoreState | Dépile l’état graphique de la pile |
ContentStreamBuilder.SetFillColor | Définir la couleur de remplissage dans l’espace couleur actuel |
ContentStreamBuilder.SetMatrix | Applique 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 du tracé |
SetAdvancedColor | Opérateur pour les espaces de couleur de motif / basés sur ICC |
ShowText | Opérateur affichant une chaîne de texte |
SetTextMatrix | Opérateur positionnant le texte via une matrice |
ExtGState | État graphique étendu (alpha, mode de fusion) |