Cómo agregar marcadores y un esquema de PDF en Java

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

por Kye Stuart

Incluir marcadores de PDF en tu proyecto Java puede mejorar significativamente la usabilidad y navegación de tus PDFs. Los esquemas en los PDF proporcionan un método fácil de navegación dentro del propio PDF, de modo que puedes desplazarte fácilmente a las páginas clave del documento de manera similar a como lo harías con una tabla de contenido.

IronPDF es una poderosa herramienta para PDF que facilita trabajar con archivos PDF. Su herramienta de marcadores le ofrece un método conciso y fácil de usar para crear marcadores personalizados para sus archivos PDF.

Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Antes de comenzar

También necesitarás asegurarte de que tu clave de licencia esté configurada correctamente, ya que IronPDF debe estar licenciado para el desarrollo.

Agregar ejemplo de esquema y marcadores

Para el ejemplo de hoy, usaré estomuestra PDFaplicar el esquema y los marcadores.

Añadir una sola capa de marcadores

Después de cargar este PDF desde la ruta de archivo especificada usando el DocumentoPdfclase, podemos comenzar a agregar marcadores al documento recuperando el BookmarkManager objeto. Puede agregar el marcador al inicio o al final de la colección de marcadores utilizando los métodos addBookMarkAtEnd y addBookMarkAtStart.

Consejos
Recuerde que todos los índices de página siguen una indexación basada en cero.

import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

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

        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

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

        // Add bookmarks
        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);

        pdf.saveAs(Path.of("bookmarked.pdf"));
    }
}
JAVA

Con el visor de PDF de arriba, puedes consultar la tabla de contenidos, que se encuentra en la esquina superior izquierda de la mayoría de los navegadores, para ver todos los marcadores que hemos añadido.

Añadir varias capas de marcadores

En este ejemplo, comenzaremos añadiendo marcadores, tal como lo hicimos al crear una sola capa de marcadores. A continuación, usaremos el insertBookmarkmétodo para agregar un nuevo marcador en una nueva capa y darle un nombre utilizando el primer parámetro del método. El segundo parámetro especifica la página a la que enlaza el nuevo marcador. Para crear una nueva capa, hacemos que el nuevo marcador sea un "hijo" de un marcador existente, lo cual se realiza utilizando el tercer parámetro del método.

import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

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

        // Add bookmarks
        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");

        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
JAVA

Aquí puedes ver el PDF con nuestra nueva estructura de árbol de marcadores. Consulta el esquema por ti mismo para ver cómo la función insertBookmark ha agregado una nueva capa de marcadores.


Recuperando marcadores

La herramienta de marcadores de IronPDF no solo añade nuevos marcadores, sino que también recupera y visualiza los existentes. Para navegar a través de los marcadores, primero cargue el PDF usando el PdfDocument.fromFile método. Luego, accede al objeto BookmarkManager y utiliza el obtenerMarcadoresmétodo para recuperar todos los marcadores, incluidos los marcadores secundarios. Finalmente, usa el método get para recuperar un marcador por su índice en la lista.

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 {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve bookmarks list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();
        Bookmark bookmark = bookmarkList.get(2);
    }
}
JAVA

Insertar marcador en un índice específico

Con los marcadores recuperados, tiene la opción de agregar nuevos marcadores en índices específicos dentro del documento. Para hacer esto, seleccione el marcador objetivo y utilice el addNextBookmarkmétodo para agregar un nuevo marcador después de él. Por ejemplo, tomamos el PDF de la sección 'Agregar múltiples capas de marcadores' y agregamos un marcador después del marcador 'Tercera página'. También puedes añadir un marcador hijo como una capa más profunda utilizando el método addChildBookmark.

import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
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 {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        BookmarkManager bookmarks = pdf.getBookmark();
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        Bookmark bookmark = bookmarkList.get(5);
        bookmark.addNextBookmark("Fourth Page", 6);

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

        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
JAVA

Atención
Si fusionas dos documentos PDF cuyos marcadores comparten nombres idénticos, esto puede causar una interrupción en la propia lista de marcadores.