La gestion de base des documents PDF couvre les opérations qui apparaissent dans presque tous les flux de travail PDF : ouvrir ou créer un document, accéder aux pages et à leur contenu, lire et écrire des annotations, extraire du texte et travailler avec des actions interactives. Aspose.PDF FOSS for .NET fournit une API .NET 8+ qui gère toutes ces tâches via un modèle d’objet cohérent centré sur les types Document et Page.

Cycle de vie du document : Créer, Ouvrir, Enregistrer

Chaque flux de travail commence soit par la création d’un nouveau document, soit par le chargement d’un document existant. Document.Create() renvoie une nouvelle instance vide de Document. Document.Open(data) accepte un byte[] ou un Stream et analyse la structure PDF :

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com

Ce fragment ouvre un PDF minimal, ajoute une annotation de lien à la page 1, l’enregistre dans un MemoryStream, et vérifie que l’annotation est conservée après le rechargement. La surcharge Document.Save(Stream) écrit la structure complète mise à jour ; Document.ToArray() renvoie directement les octets.


Accès aux pages et à la collection Pages

Les pages sont accessibles via la propriété Pages en utilisant un indice entier basé sur 1 : doc.Pages[1] renvoie la première page, doc.Pages[doc.Pages.Count] renvoie la dernière. Chaque objet Page expose :

  • Annotations — le AnnotationCollection pour cette page, prenant en charge AddLinkAnnotation et l’énumération des annotations existantes par type.
  • Opérateurs de flux de contenu — accès bas‑niveau aux commandes de dessin de la page via la collection Operators.

L’index basé sur 1 est cohérent dans toute l’API : les recherches d’annotation, les indices de pages de destination des actions GoTo, et toutes les autres références de pages utilisent la même convention.


Extraction de texte avec TextFragmentAbsorber

TextFragmentAbsorber est le point d’entrée standard pour lire le texte d’une page PDF. Utilisez le constructeur sans argument pour extraire tous les fragments, ou transmettez une phrase de recherche pour filtrer le texte correspondant :

using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text} size={fragment.FontSize}");
}

Appelez absorber.Visit(page) pour traiter une seule page. La collection TextFragments résultante contient TextFragment objets ; chacun expose Text (le contenu de la chaîne) et FontSize (la taille de point rendue). Une deuxième surcharge TextFragmentAbsorber(searchPhrase, isRegex) accepte un indicateur d’expression régulière pour la recherche basée sur un motif.


Actions interactives

PdfAction est la classe de fabrique pour tous les types d’actions PDF standard. Quatre méthodes de fabrique statiques couvrent les cas les plus courants :

  • PdfAction.CreateUri(uri) — ouvre une URL dans le navigateur de l’utilisateur.
  • PdfAction.CreateGoTo(pageIndex, fitType) — navigue vers une page spécifique du document.
  • PdfAction.CreateJavaScript(script) — exécute une chaîne JavaScript dans le visualiseur PDF.
  • PdfAction.CreateLaunch(filePath) — lance un fichier ou une application externe.

Les actions sont attachées aux pages via des annotations. AnnotationCollection.AddLinkAnnotation(rectangle, action) place un LinkAnnotation sur la région rectangulaire spécifiée avec l’action donnée attachée :

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count);      // 1
Console.WriteLine(annot.AnnotationType);         // Link

AnnotationType.Link confirme que l’annotation a été créée en tant que type lien. Le constructeur Rectangle prend les coordonnées gauche, bas, droite et haut en unités d’espace utilisateur PDF.


Métadonnées du document et licence

La classe Document expose IsLicensed (renvoie true dans la version FOSS), JavaScript (un JavaScriptCollection pour les scripts au niveau du document), et DocumentActions pour les événements du cycle de vie tels que BeforeClosing et BeforeSaving.

Le package FOSS est installé via NuGet :

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

Aucune clé de licence n’est requise. La licence MIT autorise l’utilisation dans des applications commerciales sans exigences d’attribution au‑delà de la conservation de l’avis de licence.


Premiers pas

Ressources associées