Obtenir, Mettre à Jour et Développer un Signet
Obtenir des Signets
La collection OutlineCollection de l’objet Document contient tous les signets d’un fichier PDF. Cet article explique comment obtenir des signets à partir d’un fichier PDF, et comment obtenir sur quelle page se trouve un signet particulier.
Pour obtenir les signets, parcourez la collection OutlineCollection et obtenez chaque signet dans la OutlineItemCollection. L’OutlineItemCollection fournit l’accès à tous les attributs des signets. Le snippet de code suivant vous montre comment obtenir des signets à partir du fichier PDF.
public static void GettingBookmarks() {
// Ouvrir le document
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Parcourir tous les signets
for (OutlineItemCollection outlineItem : (Iterable<OutlineItemCollection>) pdfDocument.getOutlines()) {
System.out.println("Titre :- " + outlineItem.getTitle());
System.out.println("Est Italique :- " + outlineItem.getItalic());
System.out.println("Est Gras :- " + outlineItem.getBold());
System.out.println("Couleur :- " + outlineItem.getColor());
}
}
Obtenir le numéro de page d’un signet
Une fois que vous avez ajouté un signet, vous pouvez savoir sur quelle page il se trouve en obtenant le numéro de page de destination associé à l’objet Signet.
public static void GettingBookmarksPageNumber() {
// Créer PdfBookmarkEditor
PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor();
// Ouvrir le fichier PDF
bookmarkEditor.bindPdf(GetDataDir() + "UpdateBookmarks.pdf");
// Extraire les signets
Bookmarks bookmarks = bookmarkEditor.extractBookmarks();
for (Bookmark bookmark : (Iterable<Bookmark>) bookmarks) {
String strLevelSeprator = "";
for (int i = 1; i < bookmark.getLevel(); i++) {
strLevelSeprator += "---- ";
}
System.out.println("Titre :- " + strLevelSeprator + bookmark.getTitle());
System.out.println("Numéro de Page :- " + strLevelSeprator + bookmark.getPageNumber());
System.out.println("Action de Page :- " + strLevelSeprator + bookmark.getAction());
}
}
Mettre à jour les signets dans un document PDF
Pour mettre à jour un signet dans un fichier PDF, commencez par obtenir le signet particulier de la collection OutlineCollection de l’objet Document en spécifiant l’index du signet. Une fois que vous avez récupéré le signet dans l’objet OutlineItemCollection, vous pouvez mettre à jour ses propriétés puis enregistrer le fichier PDF mis à jour en utilisant la méthode Save. Les extraits de code suivants montrent comment mettre à jour les signets dans un document PDF.
public static void UpdateBookmarksInPDFDocument() {
// Ouvrir le document
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Obtenir un objet signet
OutlineItemCollection pdfOutline = pdfDocument.getOutlines().get_Item(1);
// Mettre à jour l'objet signet
pdfOutline.setTitle("Outline mis à jour");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);
// Définir la page cible comme 2
pdfOutline.setDestination(new GoToAction(pdfDocument.getPages().get_Item(2)));
// Enregistrer la sortie
pdfDocument.save(GetDataDir() + "Bookmarkupdated_output.pdf");
}
Mettre à jour les signets enfants dans un document PDF
Pour mettre à jour un signet enfant :
- Récupérez le signet enfant que vous souhaitez mettre à jour à partir du fichier PDF en obtenant d’abord le signet parent, puis le signet enfant en utilisant les valeurs d’index appropriées.
- Enregistrez le fichier PDF mis à jour en utilisant la méthode Save.
L’extrait de code suivant vous montre comment mettre à jour les signets enfants dans un document PDF.
public static void UpdateChildBookmarksInPDFDocument() {
// Ouvrir le document
Document pdfDocument = new Document(GetDataDir() + "UpdateBookmarks.pdf");
// Obtenir un objet signet
OutlineItemCollection pdfOutline = pdfDocument.getOutlines().get_Item(1);
// Obtenir l'objet signet enfant
OutlineItemCollection childOutline = pdfOutline.get_Item(1);
// Mettre à jour l'objet signet
childOutline.setTitle("Updated Outline");
childOutline.setItalic(true);
childOutline.setBold(true);
// Définir la page cible en tant que 2
childOutline.setDestination(new GoToAction(pdfDocument.getPages().get_Item(2)));
// Enregistrer la sortie
pdfDocument.save(GetDataDir() + "Bookmarkupdated_output.pdf");
}
Signets développés lors de la visualisation du document
Les signets sont conservés dans la collection OutlineItemCollection de l’objet Document, elle-même dans la collection OutlineCollection. Cependant, nous pouvons avoir besoin que tous les signets soient développés lors de la visualisation du fichier PDF.
Pour répondre à cette exigence, nous pouvons définir le statut d’ouverture pour chaque élément de plan/signet comme ouvert. Le code suivant vous montre comment définir le statut d’ouverture pour chaque signet comme développé dans un document PDF.
public static void ExpandedBookmarks() {
Document doc = new Document(GetDataDir()+"UpdateBookmarks.pdf");
// définir le mode d'affichage de la page, c'est-à-dire montrer les vignettes, plein écran, montrer le panneau des pièces jointes
doc.setPageMode(PageMode.UseOutlines);
// imprimer le nombre total de signets dans le fichier PDF
System.out.println(doc.getOutlines().size());
// parcourir chaque élément de plan dans la collection de plans du fichier PDF
for (int counter = 1; counter <= doc.getOutlines().size(); counter++) {
// définir le statut d'ouverture pour l'élément de plan
doc.getOutlines().get_Item(counter).setOpen(true);
}
// enregistrer le fichier PDF
doc.save(_dataDir+"Bookmarks_Expanded.pdf");
}