Travailler avec les artefacts dans .NET

Les artefacts dans 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 pour la décoration, la mise en page ou comme arrière-plan. Des exemples d’artefacts incluent les en-têtes de page, les pieds de page, les séparateurs ou des images qui ne véhiculent aucune signification.

L’objectif des artefacts dans PDF est de permettre la distinction entre les éléments de contenu et les éléments non liés au 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, puisqu’ils peuvent être omis lors de l’impression, de la recherche ou de la copie.

Pour créer un élément en tant qu’artefact dans un PDF, vous devez utiliser la classe Artifact. Il contient les propriétés utiles suivantes:

  • Artifact.Type – renvoie 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 – renvoie le sous-type d’artefact (prend en charge les valeurs de l’énumération Artifact.ArtifactSubtype, dont les valeurs incluent Background, Footer, Header, Undefined, Watermark).
  • Artifact.Image – renvoie l’image d’un artefact (si une image est présente, sinon null).
  • Artifact.Text – renvoie le texte d’un artefact.
  • Artifact.Contents – renvoie une collection des opérateurs internes de l’artefact. Son type supporté est System.Collections.ICollection.
  • Artifact.Form – renvoie le XForm d’un artefact (si le XForm est utilisé). Les artefacts de filigrane, d’en-tête et de pied de page contiennent un XForm qui affiche tous les contenus de l’artefact.
  • Artifact.Rectangle – renvoie la position d’un artefact sur la page.
  • Artifact.Rotation – renvoie la rotation d’un artefact (en degrés, une valeur positive indiquant une rotation dans le sens antihoraire).
  • Artifact.Opacity – renvoie l’opacité d’un artefact. Les valeurs possibles se situent dans l’intervalle 0…1, où 1 signifie totalement opaque.

Les classes suivantes peuvent également être utiles pour travailler avec des artefacts:

Travailler avec les filigranes existants

Un filigrane créé avec Adobe Acrobat est appelé un artefact (tel que décrit dans la section 14.8.2.2 Contenu réel et artefacts de la spécification PDF).

Pour obtenir tous les filigranes d’une page particulière, la classe Page possède la propriété Artifacts.

L’extrait 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.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractWatermarkFromPDF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample-w.pdf"))
    {
        // Get the watermarks from the first page artifacts
        var watermarks = document.Pages[1].Artifacts
            .Where(artifact =>
                artifact.Type == Aspose.Pdf.Artifact.ArtifactType.Pagination
                && artifact.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Watermark);

        // Iterate through the found watermark artifacts and print details
        foreach (Aspose.Pdf.WatermarkArtifact item in watermarks.Cast<Aspose.Pdf.WatermarkArtifact>())
        {
            Console.WriteLine($"{item.Text} {item.Rectangle}");
        }
    }
}

Travailler avec les arrière-plans en tant qu’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 for .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.

L’extrait de code suivant montre comment ajouter une image d’arrière-plan aux pages PDF en utilisant l’objet BackgroundArtifact.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddBackgroundImageToPDF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
    {
        // Create a new BackgroundArtifact and set the background image
        var background = new Aspose.Pdf.BackgroundArtifact()
        {
            BackgroundImage = File.OpenRead(dataDir + "background.jpg")
        };

        // Add the background image to the first page's artifacts
        document.Pages[1].Artifacts.Add(background);

        // Save PDF document with the added background
        document.Save(dataDir + "SampleArtifactsBackground_out.pdf");
    }
}

Si vous souhaitez, pour une raison quelconque, utiliser un arrière-plan de couleur unie, veuillez modifier le code précédent de la manière suivante:

 // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET

 private static void AddBackgroundColorToPDF()
 {
    // The path to the documents directory
     var dataDir = RunExamples.GetDataDir_AsposePdf();

     // Open PDF document
     using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
     {
         // Create a new BackgroundArtifact and set the background color
         var background = new Aspose.Pdf.BackgroundArtifact()
         {
             BackgroundColor = Aspose.Pdf.Color.DarkKhaki
         };

         // Add the background color to the first page's artifacts
         document.Pages[1].Artifacts.Add(background);

         // Save PDF document
         document.Save(dataDir + "SampleArtifactsBackground_out.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:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CountPDFArtifacts()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
    {
        // Get pagination artifacts from the first page
        var paginationArtifacts = document.Pages[1].Artifacts
            .Where(artifact => artifact.Type == Aspose.Pdf.Artifact.ArtifactType.Pagination);

        // Count and display the number of each artifact type
        Console.WriteLine("Watermarks: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Watermark));
        Console.WriteLine("Backgrounds: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Background));
        Console.WriteLine("Headers: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Header));
        Console.WriteLine("Footers: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Footer));
    }
}

Ajout d’un artefact de numérotation Bates

Pour ajouter un artefact de numérotation Bates à un document, appelez la méthode d’extension AddBatesNumbering(BatesNArtifact batesNArtifact) sur le PageCollection, en passant l’objet BatesNArtifact en paramètre:

Ou, vous pouvez passer une collection de PaginationArtifacts:

Alternativement, vous pouvez ajouter un artefact de numérotation Bates à l’aide d’un délégué d’action:

Pour supprimer la numérotation Bates, utilisez le code suivant: