Comment ajouter des signets et un plan au format PDF en Java

This article was translated from English: Does it need improvement?
Translated
View the article in English

La bibliothèque Java d'IronPDF vous permet d'ajouter par programmation des signets et des plans de table des matières à des documents PDF via la classe BookmarkManager, prenant en charge à la fois les structures de signets à un seul niveau et à plusieurs niveaux avec des points de navigation personnalisables.

Démarrage rapide : Ajouter des signets PDF en Java

  1. Installez la bibliothèque Java IronPDF et définissez votre clé de licence
  2. Chargez votre PDF à l'aide de PdfDocument.fromFile()
  3. Obtenir le BookmarkManager avec pdf.getBookmark()
  4. Ajouter des signets à l'aide de addBookMarkAtEnd("Title", pageNumber)
  5. Économisez le PDF avec pdf.saveAs()

```java :title=Quickstart //:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Path.of("document.pdf")) ; BookmarkManager bookmarks = pdf.getBookmark() ; bookmarks.addBookMarkAtEnd("Chapitre 1", 0) ; pdf.saveAs(Path.of("bookmarked.pdf")) ;


Les signets PDF améliorent l'utilisabilité et la navigation de vos documents. Les plans offrent une navigation structurée au sein des PDFs, permettant aux utilisateurs de sauter directement aux sections clés, à l'instar d'une table des matières. Cela s'avère essentiel lorsqu'on travaille avec des documents long, des rapports, ou des PDFs multi-chapitres nécessitant une navigation organisée.

IronPDF simplifie la manipulation des fichiers PDF dans les applications Java. L'API de signets vous fournit des méthodes simples pour créer des signets personnalisés dans les fichiers PDF. La bibliothèque s'intègre aux applications Java et prend en charge diverses fonctionnalités de manipulation de PDF au-delà des signets, y compris [fusionner des PDFs](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/), [créer des formulaires](https://ironpdf.com/java/how-to/create-forms/), et [ajouter des filigranes](https://ironpdf.com/java/how-to/custom-watermark/).

<div class="hsg-featured-snippet">
    <h2>Comment ajouter des signets et des contours au PDF</h2>
    <ol>
        <li><a href="https://ironpdf.com/java/#download-modal">Installez la bibliothèque Java pour ajouter des signets aux PDFs</a></li>
        <li>Utilisez la classe <strong>PdfDocument</strong> pour charger un fichier PDF existant en Java</li>
        <li>Créez et personnalisez des signets avec la classe <strong>BookmarkManager</strong></li>
        <li>Utilisez <code>addBookMarkAtEnd</code> pour ajouter des signets à des pages spécifiques du PDF</li>
        <li>Enregistrer le document PDF contenant le nouveau contour et les signets</li>
    </ol>
</div>

## De quoi ai-je besoin avant de commencer?

Avant de mettre en œuvre des signets PDF, confirmez qu'IronPDF est configuré dans votre projet Java. La bibliothèque nécessite Java 8 ou plus et s'intègre via [Maven ou Gradle](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf). Ajoutez la dépendance IronPDF au fichier de construction de votre projet. Pour des instructions de configuration détaillées, consultez l'[aperçu pour commencer](https://ironpdf.com/java/docs/).

Une clé de licence valide est requise pour le développement et l'utilisation en production. Définissez la clé de licence au début de votre application avant d'appeler toute méthode IronPDF. Pour des informations sur les options de licence, visitez le [guide de licence](https://ironpdf.com/java/get-started/license-keys/).

ConseilsTous les indices de page dans IronPDF utilisent une numérotation basée sur zéro. Page 1 de votre document est l'indice 0, la page 2 est l'indice 1, et ainsi de suite.
## Comment ajouter des plans et des signets à un PDF ? Les exemples ci-dessous utilisent ce [PDF d'exemple](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf) pour démontrer la création de plans et de signets. Le processus consiste à charger un document PDF existant et à utiliser la fonction `BookmarkManager` d'IronPDF pour ajouter des points de navigation dans l'ensemble du document. ### Comment ajouter une seule couche de signets? Une liste plate de signets convient aux documents avec une structure claire et non hiérarchique : rapports, manuels de produits, ou diapositives où chaque section est autonome. Après avoir chargé le PDF à partir d'un chemin d'accès à l'aide de `PdfDocument.fromFile()`, récupérez l'objet `BookmarkManager` pour commencer à ajouter des signets. Les méthodes `addBookMarkAtEnd` et `addBookMarkAtStart` ajoutent respectivement des entrées à la fin ou au début de la collection de signets. Ces méthodes vous donnent la flexibilité d'organiser les signets pour correspondre à la structure de votre document. Chaque entrée prend un titre d'affichage et un index de page basé sur zéro. ```java //:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/single-layer.java import java.io.IOException; import java.nio.file.Path; import com.ironsoftware.ironpdf.License; import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.bookmark.BookmarkManager; public class Main { public static void main(String[] args) throws IOException { // Set the license key for IronPDF License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01"); // Load the PDF file PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf")); // Get BookmarkManager object to manage bookmarks BookmarkManager bookmarks = pdf.getBookmark() ; // Add bookmarks at the end of the bookmark collection bookmarks.addBookMarkAtEnd("Title Page", 0); bookmarks.addBookMarkAtEnd("Table of Contents", 1); bookmarks.addBookMarkAtEnd("Dedication Page", 2); bookmarks.addBookMarkAtEnd("First Page", 3); bookmarks.addBookMarkAtStart("Page 4", 6); // Save the modified PDF with bookmarks pdf.saveAs(Path.of("bookmarked.pdf")) ; } }

Avec le lecteur PDF ci-dessus, vérifiez la table des matières dans le coin supérieur-gauche de la plupart des navigateurs pour voir tous les signets ajoutés. Cette structure de signets plate fournit une navigation simple pour les documents avec des besoins organisationnels simples.

Comment créer plusieurs couches de signets?

Les signets imbriqués sont le bon choix pour la documentation technique, les rapports de recherche, ou tout document multi-chapitre où les lecteurs doivent naviguer non seulement vers des chapitres, mais vers des sous-sections au sein de ces chapitres. Commencez par les mêmes signets plats créés dans la section précédente, puis utilisez insertBookmark pour ajouter des entrées sur de nouveaux calques.

La méthode insertBookmark accepte quatre paramètres : le nom du signet, l'index de la page cible, le nom du signet parent et le nom du signet frère précédent. Passer un nom de signet parent crée une entrée enfant imbriquée en dessous de celui-ci. Définir le paramètre sibling sur null place la nouvelle entrée en tant que premier enfant de ce parent.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/multi-layer.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

        // Get BookmarkManager object
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Add top-level bookmarks at the end
        bookmarks.addBookMarkAtEnd("Title Page", 0);
        bookmarks.addBookMarkAtEnd("Table of Contents", 1);
        bookmarks.addBookMarkAtEnd("Dedication", 2);

        // Insert second-layer bookmarks as children of existing entries
        bookmarks.insertBookmark("First Page", 3, "Table of Contents", null);
        bookmarks.insertBookmark("Second Page", 4, "Table of Contents", "First Page");
        bookmarks.insertBookmark("End of Sample", 7, "Title Page", null);
        bookmarks.insertBookmark("Fourth page", 6, "Table of Contents", "Second Page");

        // Save the modified PDF with nested bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/multi-layer.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

        // Get BookmarkManager object
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Add top-level bookmarks at the end
        bookmarks.addBookMarkAtEnd("Title Page", 0);
        bookmarks.addBookMarkAtEnd("Table of Contents", 1);
        bookmarks.addBookMarkAtEnd("Dedication", 2);

        // Insert second-layer bookmarks as children of existing entries
        bookmarks.insertBookmark("First Page", 3, "Table of Contents", null);
        bookmarks.insertBookmark("Second Page", 4, "Table of Contents", "First Page");
        bookmarks.insertBookmark("End of Sample", 7, "Title Page", null);
        bookmarks.insertBookmark("Fourth page", 6, "Table of Contents", "Second Page");

        // Save the modified PDF with nested bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
JAVA

Le PDF ci-dessus montre l'arborescence des signets créée par insertBookmark. Étendez le panneau du plan pour vérifier comment chaque entrée enfant est imbriquée sous son parent. Cette approche par couches convient aux rapports avec des chapitres, des sous-chapitres, et des annexes.


Comment récupérer les signets existants d'un PDF?

La lecture des données de signets à partir d'un PDF est une condition préalable lors de la mise à jour de documents sans reconstruire toute la structure de navigation. IronPDF rend cela accessible via la même interface BookmarkManager que celle utilisée pour ajouter des signets. Chargez le PDF avec PdfDocument.fromFile(), accédez à BookmarkManager, puis appelez getBookmarks() pour récupérer tous les signets de niveau supérieur.

Utilisez get(index) pour accéder à un signet spécifique en fonction de sa position dans la liste. La méthode getText() renvoie le libellé d'affichage du signet, tandis que getPageIndex() renvoie le numéro de page (à partir de zéro) qu'il cible. Les signets enfants ne sont pas inclus dans la liste plate renvoyée par getBookmarks() ; y accéder via la méthode getChildren() de chaque signet parent.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/retrieve-bookmarks.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file with bookmarks
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        // Retrieve the bookmark manager
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Retrieve list of all bookmarks (includes child bookmarks)
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Access a specific bookmark by zero-based index
        Bookmark bookmark = bookmarkList.get(2);

        // Print bookmark details
        System.out.println("Bookmark Title: " + bookmark.getText());
        System.out.println("Page Number: " + bookmark.getPageIndex());

        // Check if bookmark has children
        if (bookmark.getChildren() != null && !bookmark.getChildren().isEmpty()) {
            System.out.println("Number of child bookmarks: " + bookmark.getChildren().size());
        }
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/retrieve-bookmarks.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file with bookmarks
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        // Retrieve the bookmark manager
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Retrieve list of all bookmarks (includes child bookmarks)
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Access a specific bookmark by zero-based index
        Bookmark bookmark = bookmarkList.get(2);

        // Print bookmark details
        System.out.println("Bookmark Title: " + bookmark.getText());
        System.out.println("Page Number: " + bookmark.getPageIndex());

        // Check if bookmark has children
        if (bookmark.getChildren() != null && !bookmark.getChildren().isEmpty()) {
            System.out.println("Number of child bookmarks: " + bookmark.getChildren().size());
        }
    }
}
JAVA

Veuillez noterLa méthode getBookmarks() renvoie uniquement une liste plate de signets de niveau supérieur. Pour parcourir l'arborescence complète des signets, appelez de manière récursive getChildren() sur chaque signet comportant des entrées imbriquées.

Ce modèle de récupération est utile lors de l'audit de la structure de navigation d'un PDF existant avant distribution, ou lors de la création d'outils nécessaires pour valider que les sections requises sont correctement signetées avant publication.


Comment insérer un signet dans un index spécifique?

Insérer des signets à une position spécifique vous permet de mettre à jour des PDFs existants de manière incrémentale, en ajoutant de nouvelles sections sans reconstruire complètement le plan à partir de zéro. C'est particulièrement utile lorsque les PDFs sont générés ou modifiés dans un pipeline et que le nouveau contenu est ajouté en aval.

Récupérez la liste plate des signets à l'aide de getBookmarks(), sélectionnez le signet cible par son index dans la liste, puis appelez addNextBookmark pour insérer un nouveau signet frère immédiatement après celui-ci. Utilisez addChildBookmark pour insérer une nouvelle entrée un niveau plus bas, imbriquée sous le signet sélectionné. Les deux méthodes acceptent une chaîne de titre et un index de page basé sur zéro.

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/insert-at-index.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF modified in the multi-layer example
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        // Get the BookmarkManager
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Retrieve the flat bookmark list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Select a bookmark at a specific index
        Bookmark bookmark = bookmarkList.get(5);

        // Insert a new bookmark after the selected entry
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add a child bookmark under the selected entry
        bookmark.addChildBookmark("Section 1", 7);

        // Save the updated PDF
        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/insert-at-index.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF modified in the multi-layer example
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        // Get the BookmarkManager
        BookmarkManager bookmarks = pdf.getBookmark() ;

        // Retrieve the flat bookmark list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Select a bookmark at a specific index
        Bookmark bookmark = bookmarkList.get(5);

        // Insert a new bookmark after the selected entry
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add a child bookmark under the selected entry
        bookmark.addChildBookmark("Section 1", 7);

        // Save the updated PDF
        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
JAVA

Veuillez noterLors de la fusion de deux PDFs dont les signets partagent des noms identiques, la liste de signets résultante peut se comporter de manière inattendue. Renommez les signets en conflit avant la fusion pour maintenir un plan propre.

La méthode addNextBookmark insère la nouvelle entrée en tant que sœur du signet sélectionné, immédiatement après celui-ci dans la liste. La méthode addChildBookmark place la nouvelle entrée un niveau plus bas, imbriquée sous le signet sélectionné. Les deux méthodes acceptent une chaîne de titre et un index de page basé sur zéro.

Quelles sont les prochaines étapes pour les signets PDF en Java ?

Les signets PDF offrent aux utilisateurs un chemin de navigation direct à travers des documents complexes sans faire défiler. BookmarkManager d'IronPDF gère l'ensemble des opérations liées aux signets : ajout de listes d'entrées simples, création de plans hiérarchiques à plusieurs niveaux, récupération d'entrées existantes et insertion à des positions spécifiques.

Pour continuer à travailler avec la structure et les fonctionnalités de navigation des documents, explorez ces ressources connexes :

Démarrez votre essai gratuit pour ajouter des signets, des plans et d'autres fonctionnalités de navigation à votre flux de travail PDF Java. Pour acheter une licence pour une utilisation en production, consultez les options de licence.

Questions Fréquemment Posées

Comment ajouter des signets à un document PDF en Java ?

Chargez votre PDF en utilisant PdfDocument.fromFile(), puis appelez pdf.getBookmark() pour obtenir le BookmarkManager. Utilisez addBookMarkAtEnd("Titre", pageIndex) pour ajouter chaque signet par nom d'affichage et numéro de page basé sur zéro, puis enregistrez avec pdf.saveAs().

Quelles sont les conditions préalables pour ajouter des signets PDF en Java ?

Vous avez besoin de Java 8 ou supérieur, de la bibliothèque IronPDF ajoutée en tant que dépendance Maven ou Gradle, et d'une clé de licence valide définie avec License.setLicenseKey() avant tout appel IronPDF. Aucun outil ou cadre supplémentaire n'est requis.

Puis-je créer des hiérarchies de signets à plusieurs niveaux dans les PDF ?

Oui. Ajoutez d'abord des signets de niveau supérieur avec addBookMarkAtEnd, puis appelez insertBookmark(name, pageIndex, parentName, siblingName) pour imbriquer des entrées enfants sous un signet parent. Passez null comme nom de frère pour placer la nouvelle entrée comme premier enfant.

Quelle est la différence entre addBookMarkAtEnd et insertBookmark ?

addBookMarkAtEnd ajoute une nouvelle entrée de niveau supérieur à la fin de la liste des signets. insertBookmark place un signet à un endroit spécifique dans la hiérarchie en spécifiant un nom de signet parent et un frère précédant optionnel, permettant des contours imbriqués.

Comment puis-je lire les signets existants d'un PDF en Java ?

Appelez pdf.getBookmark().getBookmarks() pour récupérer une liste plate de signets de niveau supérieur. Accédez aux entrées individuelles par index en utilisant list.get(index). Utilisez bookmark.getText() pour le titre et bookmark.getPageIndex() pour le numéro de page basé sur zéro. Les signets enfants sont accessibles via bookmark.getChildren().

Comment puis-je insérer un signet après un signet existant spécifique ?

Récupérez la liste des signets avec getBookmarks(), sélectionnez l'entrée cible par index, puis appelez bookmark.addNextBookmark("Title", pageIndex) pour insérer un frère immédiatement après, ou bookmark.addChildBookmark("Title", pageIndex) pour imbriquer une nouvelle entrée sous lui.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite
Prêt à commencer?
Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ?
exécuter un échantillon Regardez votre code HTML se transformer en PDF.