Cómo añadir marcadores y esquemas en PDF en Java

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

La biblioteca Java de IronPDF le permite agregar mediante programación marcadores y contornos a documentos PDF utilizando la clase BookmarkManager, compatible con estructuras de marcadores de una sola capa y de múltiples capas con puntos de navegación personalizables.

Inicio rápido: Agregar marcadores PDF en Java

  1. Instale la biblioteca IronPDF Java y establezca su clave de licencia
  2. Cargue su PDF usando PdfDocument.fromFile()
  3. Obtenga el BookmarkManager con pdf.getBookmark()
  4. Agregue marcadores usando addBookMarkAtEnd("Title", pageNumber)
  5. Guarde el PDF con pdf.saveAs()

```java :title=Inicio rápido PdfDocument pdf = PdfDocument.fromFile(Ruta.de("documento.pdf")); BookmarkManager marcadores = pdf.getBookmark(); bookmarks.addBookMarkAtEnd("Capítulo 1", 0); pdf.saveAs(Ruta.de("bookmarked.pdf"));


Los marcadores de PDF mejoran considerablemente la usabilidad y la navegación de los documentos. Los esquemas proporcionan una navegación estructurada dentro de los PDF, permitiendo a los usuarios saltar directamente a secciones clave como un índice. Esta funcionalidad resulta esencial cuando se trabaja con documentos extensos, informes o PDF de varios capítulos que requieren una navegación organizada.

IronPDF simplifica la manipulación de PDF en aplicaciones Java. Su función de marcadores ofrece métodos sencillos para crear marcadores personalizados en archivos PDF. La biblioteca se integra a la perfección con las aplicaciones Java y admite varias funciones de manipulación de PDF además de los marcadores, como [mezclar PDF](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/), [crear formularios](https://ironpdf.com/java/how-to/create-forms/) y [añadir marcas de agua](https://ironpdf.com/java/how-to/custom-watermark/).

<div class="hsg-featured-snippet">
    <h3>Cómo añadir marcadores y esquemas a PDF</h3>
    <ol>
        <li><a href="https://ironpdf.com/java/#download-modal">Instalar librería Java para añadir marcadores a PDFs</a></li>
        <li>Utilize the **`PdfDocument`** class to load an existing PDF file in Java</li>
        <li>Create and customize the bookmarks with the **`BookmarkManager`** class</li>
        <li>Use `addBookMarkAtEnd` to add bookmarks to specific pages of the PDF</li>
        <li>Guarda el documento PDF que contiene el nuevo esquema y marcadores</li>
    </ol>
</div>

## ¿Qué necesito antes de empezar?

Antes de implementar los marcadores PDF, asegúrese de tener IronPDF correctamente configurado en su proyecto Java. La biblioteca requiere Java 8 o superior y puede integrarse fácilmente utilizando Maven o Gradle. Deberá añadir la dependencia IronPDF al archivo de compilación de su proyecto. Para obtener instrucciones detalladas de configuración, consulte [Get Started Overview](https://ironpdf.com/java/docs/).

También debe asegurarse de que su clave de licencia está configurada correctamente, ya que IronPDF requiere licencia para el desarrollo. Para obtener información completa sobre las opciones de licencia y su implementación, visite la [guía de licencias](https://ironpdf.com/java/get-started/license-keys/). Establezca la clave de licencia al principio de su aplicación antes de utilizar cualquier funcionalidad de IronPDF.

## ¿Cómo añado un esquema y marcadores a un PDF?

Para este ejemplo, utilizaré este [ PDF de ejemplo](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf) para aplicar el esquema y los marcadores. El proceso implica cargar un documento PDF existente y utilizar `BookmarkManager` de IronPDF para agregar puntos de navegación en todo el documento.

### ¿Cómo puedo añadir una sola capa de marcadores?

Después de cargar este PDF desde la ruta de archivo especificada usando la clase [`PdfDocument`.fromFile](https://ironpdf.com/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html) , recupere el objeto [`BookmarkManager`](https://ironpdf.com/java/object-reference/api/com/ironsoftware/ironpdf/bookmark/BookmarkManager.html) para comenzar a agregar marcadores. Puede agregar marcadores al inicio o al final de la colección de marcadores utilizando los métodos `addBookMarkAtEnd` y `addBookMarkAtStart`. Estos métodos ofrecen flexibilidad a la hora de organizar los marcadores en función de la estructura del documento.

ConsejosRecuerde que todos los índices de página siguen una indexación basada en cero.
```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 marcadores = 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(Ruta.de("bookmarked.pdf")); } }

Con el visor de PDF anterior, consulte el índice situado en la esquina superior izquierda de la mayoría de los navegadores para ver todos los marcadores añadidos. Esta estructura de marcadores de una sola capa ofrece una navegación sencilla para documentos con necesidades organizativas simples.

¿Cómo crear varias capas de marcadores?

En este ejemplo, comience por añadir marcadores como si se tratara de crear una sola capa de marcadores. A continuación, utilice el método insertBookmark para agregar un nuevo marcador en una nueva capa. El primer parámetro especifica el nombre del marcador y el segundo la página a la que enlaza. Para crear una nueva capa, haga que el nuevo marcador sea "hijo" de un marcador existente utilizando el tercer parámetro del método. Esta estructura jerárquica se adapta a documentos con capítulos, secciones y subsecciones.

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 marcadores = pdf.getBookmark();

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

        // Insert second layer bookmarks
        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 multiple layer bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
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 marcadores = pdf.getBookmark();

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

        // Insert second layer bookmarks
        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 multiple layer bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
JAVA

Aquí puede ver el PDF con nuestra nueva estructura de árbol de marcadores. Consulte el esquema para ver cómo la función insertBookmark agregó una nueva capa de marcadores. Este enfoque multicapa es adecuado para documentación técnica, trabajos académicos o cualquier documento que requiera una estructura de navegación detallada.


¿Cómo recuperar los marcadores existentes de un PDF?

La herramienta de marcadores de IronPDF no solo añade nuevos marcadores, sino que también recupera y visualiza los existentes. Esta funcionalidad resulta esencial a la hora de modificar PDF existentes o analizar su estructura. Para navegar a través de los marcadores, primero cargue el PDF usando el método PdfDocument.fromFile . Luego acceda al objeto BookmarkManager y use el método getBookmarks para recuperar todos los marcadores, incluidos los marcadores secundarios. Finalmente, utilice el método get para recuperar un marcador por su índice en la lista. Esta función permite la inspección y manipulación programática de las estructuras de navegación de PDF existentes.

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 marcadores = pdf.getBookmark();

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

        // Retrieve a specific bookmark by its 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());
        }
    }
}
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 marcadores = pdf.getBookmark();

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

        // Retrieve a specific bookmark by its 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

¿Cómo puedo insertar un marcador en un índice específico?

Con los marcadores recuperados, puedes añadir nuevos marcadores en índices específicos dentro del documento. Esta función ayuda a actualizar los PDF existentes con nuevas secciones o a reorganizar la estructura del documento. Para lograr esto, seleccione el marcador deseado y utilice el método addNextBookmark para agregar un nuevo marcador después de él. Por ejemplo, tome el PDF de la sección 'Añadir varias capas de marcadores' y añada un marcador después del marcador 'Tercera página'. También puede agregar un marcador secundario como una capa más profunda utilizando el método addChildBookmark, lo que permite un control preciso sobre la jerarquía de navegación de su documento.

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 we modified earlier
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

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

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

        // Retrieve a specific bookmark by its index
        Bookmark bookmark = bookmarkList.get(5);

        // Add a new bookmark after the specified bookmark
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add another layer to 'Third page' bookmark
        bookmark.addChildBookmark("Section 1", 7);

        // Save the modified PDF
        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
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 we modified earlier
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

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

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

        // Retrieve a specific bookmark by its index
        Bookmark bookmark = bookmarkList.get(5);

        // Add a new bookmark after the specified bookmark
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add another layer to 'Third page' bookmark
        bookmark.addChildBookmark("Section 1", 7);

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

Por favor notaSi fusiona dos documentos PDF cuyos marcadores comparten nombres idénticos, esto puede alterar la lista de marcadores.

Cuando trabaje con marcadores en flujos de trabajo PDF complejos, considere explorar otras funciones de IronPDF como dividir PDF para crear documentos más pequeños con sus propias estructuras de marcadores, o imprimir PDF con la navegación de marcadores intacta. Para obtener ejemplos más avanzados y demostraciones de código completas, consulte el ejemplo de código de marcadores en nuestra sección de ejemplos.

Preguntas Frecuentes

¿Cómo añado marcadores a un documento PDF en Java?

Puede añadir marcadores a documentos PDF utilizando la clase BookmarkManager de IronPDF. Primero, cargue su PDF utilizando PdfDocument.fromFile(), luego acceda al BookmarkManager con pdf.getBookmark(), y añada marcadores utilizando el método addBookMarkAtEnd() especificando el título del marcador y el número de página.

¿Cuáles son los requisitos previos para añadir marcadores PDF mediante programación?

Para añadir marcadores PDF con IronPDF, necesita Java 8 o superior, la biblioteca IronPDF integrada a través de Maven o Gradle, y una clave de licencia válida configurada en su aplicación. La biblioteca admite estructuras de marcadores de una capa y de varias capas.

¿Puedo crear jerarquías de marcadores de varios niveles en los PDF?

Sí, IronPDF admite la creación de estructuras de marcadores tanto de una capa como de varias capas. Puede crear una navegación jerárquica con marcadores padre e hijo utilizando la clase BookmarkManager para organizar documentos PDF complejos.

¿Para qué sirven los marcadores y esquemas de PDF?

Los marcadores y esquemas de PDF mejoran significativamente la usabilidad del documento al proporcionar una navegación estructurada. Permiten a los usuarios saltar directamente a secciones clave como un índice, lo que es especialmente valioso para documentos largos, informes o PDF de varios capítulos. IronPDF facilita la implementación de estas funciones de navegación mediante programación.

¿Qué otras funciones de manipulación de PDF están disponibles además de los marcadores?

Además de añadir marcadores, IronPDF ofrece funciones completas de manipulación de PDF, como la fusión de PDF, la creación de formularios, la adición de marcas de agua y otras funciones de procesamiento de documentos. Estas funcionalidades se integran perfectamente con las aplicaciones Java para una gestión completa de los PDF.

¿Cómo se guarda un PDF después de añadirle marcadores?

Después de añadir marcadores utilizando el BookmarkManager de IronPDF, guarde el documento PDF modificado llamando al método saveAs() en su objeto PdfDocument, especificando la ruta del archivo de salida donde desea guardar el PDF marcado.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más
¿Listo para empezar?
Versión: 2026.3 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida?
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.