Travailler avec les artefacts en .NET
Les artefacts dans les PDF sont des objets graphiques ou d’autres éléments qui ne font pas partie du contenu réel du document. Ils sont généralement utilisés à des fins de décoration, de mise en page ou de fond. Les exemples d’artefacts incluent les en-têtes de page, les pieds de page, les séparateurs ou les images qui ne transmettent aucune signification.
Le but des artefacts dans les PDF est de permettre la distinction entre les éléments de contenu et les éléments non-contenu. Cela est important pour l’accessibilité, car les lecteurs d’écran et autres technologies d’assistance peuvent ignorer les artefacts et se concentrer sur le contenu pertinent. Les artefacts peuvent également améliorer la performance et la qualité des documents PDF, car ils peuvent être omis lors de l’impression, de la recherche ou de la copie.
Pour créer un élément comme un artefact dans un PDF, vous devez utiliser la classe Artifact. Elle contient les propriétés utiles suivantes :
- Artifact.Type – obtient le type d’artefact (prend en charge les valeurs de l’énumération Artifact.ArtifactType où les valeurs incluent Background, Layout, Page, Pagination et Undefined).
- Artifact.Type – Obtient le type d’artefact (prend en charge les valeurs de l’énumération Artifact.ArtifactType où les valeurs incluent Background, Layout, Page, Pagination et Undefined).
- Artifact.Subtype – Obtient le sous-type d’artefact (prend en charge les valeurs de l’énumération Artifact.ArtifactSubtype où les valeurs incluent Background, Footer, Header, Undefined, Watermark).
- Artifact.Image – Obtient une image d’artefact (si une image est présente, sinon null).
- Artifact.Text – Obtient le texte d’un artefact.
- Artifact.Contents – Obtient une collection d’opérateurs internes à l’artefact. Son type pris en charge est System.Collections.ICollection.
- Artifact.Form – Obtient un XForm d’artefact (si un XForm est utilisé). Les artefacts de watermark, d’en-tête et de pied de page contiennent un XForm qui montre tout le contenu de l’artefact.
- Artifact.Rectangle – Obtient la position d’un artefact sur la page.
- Artifact.Rotation – Obtient la rotation d’un artefact (en degrés, une valeur positive indique une rotation antihoraire).
- Artifact.Opacity – Obtient l’opacité d’un artefact.
- Artifact.Opacity – Obtient l’opacité d’un artefact.
Les classes suivantes peuvent également être utiles pour travailler avec des artefacts :
Travailler avec des filigranes existants
Un filigrane créé avec Adobe Acrobat est appelé un artefact (comme décrit dans le 14.8.2.2 Contenu réel et artefacts de la spécification PDF).
Pour obtenir tous les filigranes sur une page particulière, la classe Page possède la propriété Artifacts.
Le snippet de code suivant montre comment obtenir tous les filigranes sur la première page d’un fichier PDF.
Note : Ce code fonctionne également avec la bibliothèque Aspose.PDF.Drawing. Note : Ce code fonctionne également avec la bibliothèque Aspose.PDF.Drawing.
var document = new Document(System.IO.Path.Combine(_dataDir, "sample-w.pdf"));
var watermarks = document.Pages[1].Artifacts
.Where(artifact =>
artifact.Type == Artifact.ArtifactType.Pagination
&& artifact.Subtype == Artifact.ArtifactSubtype.Watermark);
foreach (WatermarkArtifact item in watermarks.Cast<WatermarkArtifact>())
{
Console.WriteLine($"{item.Text} {item.Rectangle}");
}
Travailler avec les arrière-plans comme artefacts
Les images d’arrière-plan peuvent être utilisées pour ajouter un filigrane, ou un autre design subtil, aux documents. Dans Aspose.PDF pour .NET, chaque document PDF est une collection de pages et chaque page contient une collection d’artefacts. La classe BackgroundArtifact peut être utilisée pour ajouter une image d’arrière-plan à un objet page.
Le code suivant montre comment ajouter une image d’arrière-plan aux pages PDF en utilisant l’objet BackgroundArtifact.
var document = new Document(System.IO.Path.Combine(_dataDir, "sample.pdf"));
var background = new BackgroundArtifact()
{
BackgroundImage = System.IO.File.OpenRead(System.IO.Path.Combine(_dataDir, "background.jpg"))
};
document.Pages[1].Artifacts.Add(background);
document.Save(System.IO.Path.Combine(_dataDir, "sample_artifacts_background.pdf"));
Si vous souhaitez, pour une raison quelconque, utiliser un fond de couleur unie, veuillez modifier le code précédent de la manière suivante :
var document = new Document(System.IO.Path.Combine(_dataDir, "sample.pdf"));
var background = new BackgroundArtifact()
{
BackgroundColor = Color.DarkKhaki,
};
document.Pages[1].Artifacts.Add(background);
document.Save(System.IO.Path.Combine(_dataDir, "sample_artifacts_background.pdf"));
Compter les artefacts d’un type particulier
Pour calculer le nombre total d’artefacts d’un type particulier (par exemple, le nombre total de filigranes), utilisez le code suivant :
var document = new Document(System.IO.Path.Combine(_dataDir, "sample.pdf"));
var paginationArtifacts = document.Pages[1].Artifacts.Where(artifact => artifact.Type == Artifact.ArtifactType.Pagination);
Console.WriteLine("Filigranes : {0}", paginationArtifacts.Count(a => a.Subtype == Artifact.ArtifactSubtype.Watermark));
Console.WriteLine("Fonds : {0}", paginationArtifacts.Count(a => a.Subtype == Artifact.ArtifactSubtype.Background));
Console.WriteLine("En-têtes : {0}", paginationArtifacts.Count(a => a.Subtype == Artifact.ArtifactSubtype.Header));
Console.WriteLine("Pieds de page : {0}", paginationArtifacts.Count(a => a.Subtype == Artifact.ArtifactSubtype.Footer));