Jak dodawać zakładki PDF i spis treści w Javie

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

Biblioteka Java firmy IronPDF umożliwia programowe dodawanie zakładek i konspektów do dokumentów PDF za pomocą klasy BookmarkManager, obsługującej zarówno jednowarstwowe, jak i wielowarstwowe struktury zakładek z konfigurowalnymi punktami nawigacyjnymi.

Szybki start: Dodawanie zakładek PDF w Javie

  1. Zainstaluj bibliotekę Java IronPDF i ustaw swój klucz licencyjny
  2. Załaduj plik PDF za pomocą PdfDocument.fromFile()
  3. Pobierz BookmarkManager z pdf.getBookmark()
  4. Dodaj zakładki za pomocą addBookMarkAtEnd("Title", pageNumber)
  5. Zapisz plik PDF z 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('Rozdział 1', 0); pdf.saveAs(Path.of('bookmarked.pdf'));


Zakładki PDF poprawiają użyteczność i nawigację w twoich dokumentach. Kontury zapewniają zorganizowaną nawigację w PDF, pozwalając użytkownikom przeskakiwać bezpośrednio do kluczowych sekcji, podobnie jak w spisie treści. Jest to nieodzowne, gdy pracujesz z dłuższymi dokumentami, raportami lub wielorozdziałowymi PDF, które wymagają zorganizowanej nawigacji.

IronPDF upraszcza manipulację dokumentami PDF w aplikacjach Javowych. API do zakładek daje proste metody tworzenia niestandardowych zakładek w plikach PDF. Biblioteka integruje się z aplikacjami Java i wspiera różne funkcje manipulacji PDF poza zakładkami, w tym [scalanie PDF](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/), [tworzenie formularzy](https://ironpdf.com/java/how-to/create-forms/) i [dodawanie znaków wodnych](https://ironpdf.com/java/how-to/custom-watermark/).

<div class="hsg-featured-snippet">
    <h2>Jak dodawać zakładki PDF i spis treści</h2>
    <ol>
        <li><a href="https://ironpdf.com/java/#download-modal">Zainstaluj bibliotekę Java, aby dodawać zakładki do PDF</a></li>
        <li>Użyj klasy <strong>PdfDocument</strong>, aby wczytać istniejący plik PDF w Java</li>
        <li>Twórz i dostosowuj zakładki za pomocą klasy <strong>BookmarkManager</strong></li>
        <li>Użyj <code>addBookMarkAtEnd</code> do dodania zakładek do konkretnych stron PDF</li>
        <li>Zapisz dokument PDF zawierający nowy spis treści i zakładki</li>
    </ol>
</div>

## Co jest potrzebne przed rozpoczęciem?

Przed wdrożeniem zakładek PDF potwierdź, że IronPDF jest skonfigurowany w twoim projekcie Java. Biblioteka wymaga Java 8 lub nowszego i integruje się przez [Maven lub Gradle](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf). Dodaj zależność IronPDF do pliku budowy projektu. Dla szczegółowych instrukcji dotyczących konfiguracji, zobacz [Omówienie rozpoczęcia](https://ironpdf.com/java/docs/).

Ważny klucz licencyjny jest wymagany do użytku deweloperskiego i produkcyjnego. Ustaw klucz licencyjny na początku aplikacji przed wywołaniem jakichkolwiek metod IronPDF. Aby uzyskać informacje o opcjach licencyjnych, odwiedź [przewodnik licencyjny](https://ironpdf.com/java/get-started/license-keys/).

PoradyWszystkie indeksy stron w IronPDF używają zerowo-bazowego numerowania. Strona 1 twojego dokumentu to indeks 0, strona 2 to indeks 1 i tak dalej.
## Jak dodać kontury i zakładki do PDF? Poniższe przykłady wykorzystują ten [przykładowy PDF](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf), aby zademonstrować tworzenie konturów i zakładek. Proces polega na załadowaniu istniejącego dokumentu PDF i użyciu funkcji `BookmarkManager` biblioteki IronPDF do dodania punktów nawigacyjnych w całym dokumencie. ### Jak mogę dodać pojedynczą warstwę zakładek? Płaska lista zakładek pasuje do dokumentów o jasnej, niehierarchicznej strukturze: raportów, instrukcji obsługi produktu lub prezentacji, gdzie każda sekcja jest samodzielna. Po załadowaniu pliku PDF ze ścieżki pliku za pomocą `PdfDocument.fromFile()`, pobierz obiekt `BookmarkManager`, aby rozpocząć dodawanie zakładek. Metody `addBookMarkAtEnd` i `addBookMarkAtStart` dodają wpisy odpowiednio na końcu lub na początku kolekcji zakładek. Te metody dają elastyczność w organizowaniu zakładek w sposób dopasowany do struktury dokumentu. Każdy wpis wymaga tytułu wyświetlania i indeksu strony zaczynającego się od zera. ```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')); } }

W przeglądarce PDF powyżej, sprawdź spis treści w lewym górnym rogu większości przeglądarek, aby zobaczyć wszystkie dodane zakładki. Ta płaska struktura zakładek zapewnia łatwą nawigację dla dokumentów o prostych potrzebach organizacyjnych.

Jak utworzyć kilka warstw zakładek?

Zagnieżdżone zakładki są odpowiednim wyborem dla dokumentacji technicznej, raportów badawczych lub jakiegokolwiek dokumentu wielorozdziałowego, gdzie czytelnicy muszą nawigować nie tylko do rozdziałów, ale także do podsekcji w ramach tych rozdziałów. Zacznij od tych samych płaskich zakładek utworzonych w poprzedniej sekcji, a następnie użyj insertBookmark, aby dodać wpisy na nowych warstwach.

Metoda insertBookmark przyjmuje cztery parametry: nazwę zakładki, indeks strony docelowej, nazwę zakładki nadrzędnej oraz nazwę poprzedniej zakładki równorzędnej. Przekazanie nazwy zakładki rodzica tworzy zagnieżdżony pod nią wpis podrzędny. Ustawienie parametru sibling na null powoduje umieszczenie nowego wpisu jako pierwszego elementu podrzędnego tego elementu nadrzędnego.

//: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

Powyższy plik PDF przedstawia strukturę drzewa zakładek utworzonych przez insertBookmark. Rozwiń panel konspektu, aby zweryfikować, jak każdy wpis dziecięcy jest zagnieżdżony pod swoim rodzicem. To warstwowe podejście pasuje do raportów z rozdziałami, podrozdziałami i załącznikami.


Jak mogę pobrać istniejące zakładki z PDF-a?

Odczytywanie danych zakładek z pliku PDF jest wymogiem w przypadku aktualizacji dokumentów bez odbudowy całej struktury nawigacji. IronPDF udostępnia tę funkcję za pośrednictwem tego samego interfejsu BookmarkManager, który służy do dodawania zakładek. Załaduj plik PDF za pomocą PdfDocument.fromFile(), uzyskaj dostęp do BookmarkManager, a następnie wywołaj getBookmarks(), aby pobrać wszystkie zakładki najwyższego poziomu.

Użyj get(index), aby uzyskać dostęp do konkretnej zakładki według jej pozycji na liście. Metoda getText() zwraca etykietę wyświetlaną zakładki, natomiast getPageIndex() zwraca numer strony (liczony od zera), do której odnosi się zakładka. Zakładki podrzędne nie są uwzględnione w płaskiej liście zwracanej przez getBookmarks(); uzyskać do nich dostęp za pomocą metody getChildren() każdej nadrzędnej zakładki.

//: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

Zwróć uwagęMetoda getBookmarks() zwraca płaską listę zawierającą wyłącznie zakładki najwyższego poziomu. Aby przejść przez całe drzewo zakładek, wywołaj rekurencyjnie getChildren() na każdej zakładce zawierającej zagnieżdżone wpisy.

Ten wzorzec odzyskiwania jest użyteczny przy audytowaniu struktury nawigacyjnej istniejącego pliku PDF przed dystrybucją lub przy budowaniu narzędzi, które muszą sprawdzać, czy wymagane sekcje są poprawnie zaznaczone przed publikacją.


Jak mogę dodać zakładkę w określonym indeksie?

Wstawianie zakładek w określonej pozycji pozwala na aktualizację istniejących plików PDF stopniowo, dodając nowe sekcje bez potrzeby odbudowywania całego konspektu od zera. Jest to szczególnie przydatne, gdy pliki PDF są generowane lub modyfikowane w ramach przepływu zadań, a nowa zawartość jest dodawana na końcu.

Pobierz płaską listę zakładek za pomocą getBookmarks(), wybierz docelową zakładkę według jej indeksu na liście, a następnie wywołaj addNextBookmark, aby wstawić nowy element równorzędny bezpośrednio po niej. Użyj addChildBookmark, aby umieścić nowy wpis o jeden poziom niżej, zagnieżdżony pod wybraną zakładką. Obie metody przyjmują ciąg tytułu i indeks strony zaczynający się od zera.

//: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

Zwróć uwagęPodczas scalania dwóch plików PDF, których zakładki mają identyczne nazwy, wynikowa lista zakładek może zachowywać się nieprzewidywalnie. Zmień nazwy konfliktowych zakładek przed scaleniem, aby zachować czysty konspekt.

Metoda addNextBookmark wstawia nowy wpis jako element równorzędny względem zaznaczonej zakładki, bezpośrednio po niej na liście. Metoda addChildBookmark umieszcza nowy wpis o jeden poziom niżej, zagnieżdżony pod zaznaczoną zakładką. Obie metody przyjmują ciąg tytułu i indeks strony zaczynający się od zera.

Jakie są następne kroki dotyczące zakładek PDF w Java?

Zakładki PDF umożliwiają użytkownikom bezpośrednią nawigację przez złożone dokumenty bez przewijania. Funkcja BookmarkManager programu IronPDF obsługuje pełen zakres operacji związanych z zakładkami: dodawanie płaskich list wpisów, tworzenie głębokich, wielopoziomowych konspektów, pobieranie istniejących wpisów oraz wstawianie w określonych pozycjach.

Aby kontynuować pracę z funkcjami struktury dokumentu i nawigacji, zapoznaj się z tymi zasobami:

Rozpocznij bezpłatny okres próbny, aby dodać zakładki, konspekty i inne funkcje nawigacyjne do procesu pracy z PDF w Java. Aby zakupić licencję do użycia produkcyjnego, zobacz opcje licencjonowania.

Często Zadawane Pytania

Jak dodac zakladki do dokumentu PDF w Javie?

Załaduj swój PDF za pomocą PdfDocument.fromFile(), a następnie wywołaj pdf.getBookmark() aby uzyskać BookmarkManager. Użyj addBookMarkAtEnd("Tytuł", pageIndex) aby dodać każdy zakładkę pod nazwą wyświetlaną i numerem strony bazowanym na zerze, a następnie zapisz za pomocą pdf.saveAs().

Jakie są wymagania wstępne dla dodawania zakładek PDF w Java?

Potrzebujesz Java 8 lub nowszy, biblioteki IronPDF dodanej jako zależność Maven lub Gradle, i ustawionego ważnego klucza licencyjnego za pomocą License.setLicenseKey() przed jakimkolwiek wywołaniem IronPDF. Nie są wymagane dodatkowe narzędzia lub frameworki.

Czy moge utworzyc drzewo zakladek wielopoziomowych w PDF?

Tak. Najpierw dodaj zakładki najwyższego poziomu za pomocą addBookMarkAtEnd, a następnie wywołaj insertBookmark(name, pageIndex, parentName, siblingName) aby zagnieździć wpisy potomne pod zakładką-rodzicem. Przekaż null jako nazwę rodzeństwa, aby umieścić nowy wpis jako pierwsze dziecko.

Jaka jest różnica między addBookMarkAtEnd a insertBookmark?

addBookMarkAtEnd dodaje nowy wpis najwyższego poziomu na końcu listy zakładek. insertBookmark umieszcza zakładkę na konkretnym miejscu w hierarchii, określając nazwę zakładki rodzica i opcjonalne poprzedzające rodzeństwo, umożliwiając zagnieżdżone kontury.

Jak odczytać istniejące zakładki z PDF w Java?

Wywołaj pdf.getBookmark().getBookmarks() aby pobrać płaską listę zakładek najwyższego poziomu. Uzyskaj dostęp do poszczególnych wpisów po indeksie za pomocą list.get(index). Użyj bookmark.getText() dla tytułu i bookmark.getPageIndex() dla numeru strony bazowanego na zerze. Zakładki potomne są dostępne za pomocą bookmark.getChildren().

Jak wstawić zakładkę po konkretnej istniejącej zakładce?

Pobierz listę zakładek za pomocą getBookmarks(), wybierz docelowy wpis po indeksie, a następnie wywołaj bookmark.addNextBookmark("Tytuł", pageIndex) aby wstawić rodzeństwo bezpośrednio po nim, lub bookmark.addChildBookmark("Tytuł", pageIndex) aby zagnieździć nowy wpis pod nim.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu?
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.