# Jak dodawać zakładki PDF i spis treści w Javie
Biblioteka Java IronPDF pozwala programowo dodawać zakładki i kontury do dokumentów PDF za pośrednictwem klasy `BookmarkManager`, wspierajacej zarówno struktury zakładek jedno- jak i wielowarstwowe z konfigurowalnymi punktami nawigacyjnymi.
*as-heading:2(Szybki start: Dodawanie zakładek PDF w Javie)*
1. Zainstaluj bibliotekę Java IronPDF i ustaw swój klucz licencyjny
2. Załaduj swój PDF za pomocą `PdfDocument.fromFile()`
3. Uzyskaj `BookmarkManager` za pomocą `pdf.getBookmark()`
4. Dodaj zakładki za pomocą `addBookMarkAtEnd("Title", pageNumber)`
5. Zapisz PDF za pomocą `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("Chapter 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/).
[[t:(Wszystkie 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 obejmuje załadowanie istniejącego dokumentu PDF i użycie `BookmarkManager` IronPDF do dodawania 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 PDF z ścieżki pliku za pomocą `PdfDocument.fromFile()`, pobierz obiekt `BookmarkManager`, aby rozpocząć dodawanie zakładek.
Metody `addBookMarkAtEnd` i `addBookMarkAtStart` dodają wpisy odpowiednio na koniec lub początek 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"));
}
}
```
<iframe loading="lazy" src="/static-assets/ironpdf-java/howto/bookmarks/bookmarked.pdf" width="100%" height="500px"></iframe>
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. Rozpocznij od tych samych płaskich zakładek, które utworzyłeś w poprzedniej sekcji, a następnie użyj `insertBookmark`, aby dodawać wpisy na nowych warstwach.
Metoda `insertBookmark` przyjmuje cztery parametry: nazwę zakładki, indeks docelowej strony, nazwę zakładki rodzicielskiej i nazwę poprzedniej zakładki rodzeństwa. Przekazanie nazwy zakładki rodzica tworzy zagnieżdżony pod nią wpis podrzędny. Ustawienie parametru rodzeństwa na `null` plasuje nowy wpis jako pierwsze dziecko tego rodzica.
```java
//: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"));
}
}
```
<iframe loading="lazy" src="/static-assets/ironpdf-java/howto/bookmarks/multiLayer.pdf" width="100%" height="500px"></iframe>
PDF powyżej pokazuje 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.
<hr />
## 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 to poprzez ten sam interfejs `BookmarkManager`, który jest używany do dodawania zakładek. Załaduj PDF z `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 określonej zakładki według jej pozycji na liście. Metoda `getText()` zwraca etykietę wyświetlaną zakładki, a `getPageIndex()` zwraca zerobazowy numer strony, do której się odnosi. Zakładki dziecka nie są zawarte w płaskiej liście zwracanej przez @@--CODE-248@@; uzyskaj do nich dostęp przez metodę `getChildren()` każdej zakładki rodzica.
```java
//: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());
}
}
}
```
[[i:(Metoda `getBookmarks()` zwraca tylko płaską listę zakładek najwyższego poziomu. Aby przejść pełne drzewo zakładek, rekurencyjnie wywołuj `getChildren()` na każdej zakładce, która ma 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ą.
<hr />
## 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 celowaną zakładkę według jej indeksu na liście, a następnie wywołaj `addNextBookmark`, aby wstawić nową zakładkę rodzeństwa bezpośrednio po niej. Użyj `addChildBookmark`, aby umieścić nowy wpis jeden poziom głębiej, zagnieżdżony pod wybraną zakładką. Obie metody przyjmują ciąg tytułu i indeks strony zaczynający się od zera.
```java
//: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"));
}
}
```
<iframe loading="lazy" src="/static-assets/ironpdf-java/howto/bookmarks/specificIndex.pdf" width="100%" height="500px"></iframe>
[[i:(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 nowe wpisy jako rodzeństwo wybranej zakładki, zaraz po niej na liście. Metoda `addChildBookmark` umieszcza nowy wpis jeden poziom głębiej, zagnieżdżony pod wybraną 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. Silnik `BookmarkManager` IronPDF obsługuje pełen zakres operacji na zakładkach: dodawanie płaskich list wpisów, budowanie głębokich wielopoziomowych konturów, pobieranie istniejących wpisów i wstawianie w określonych pozycjach.
Aby kontynuować pracę z funkcjami struktury dokumentu i nawigacji, zapoznaj się z tymi zasobami:
- [Podziel PDFy w Java](https://ironpdf.com/java/how-to/java-split-pdf-tutorial/): twórz mniejsze, samodzielne dokumenty, które każdy przenoszą swoją własną strukturę zakładek.
- [Drukuj PDFy w Java](https://ironpdf.com/java/how-to/java-print-pdf-tutorial/): wyślij dokumenty z zakładkami do drukarki zachowując nawigację.
- [Java PDF tutorials](https://ironpdf.com/java/tutorials/html-to-pdf/): dodatkowe przykłady end-to-end dla typowych procesów pracy z PDF.
- [Dodawanie adnotacji do PDF w Java](https://ironpdf.com/java/examples/annotations/): dołącz komentarze i oznaczenia w określonych lokalizacjach na stronie.
- [IronPDF for Java examples](https://ironpdf.com/java/examples/): kopiuj-wklejaj przykłady z pełnego API Java IronPDF.
[Rozpocznij bezpłatny okres próbny](#trial-license), 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](#licensing).
Biblioteka Java IronPDF pozwala programowo dodawać zakładki i kontury do dokumentów PDF za pośrednictwem klasy BookmarkManager, wspierajacej zarówno struktury zakładek jedno- jak i wielowarstwowe z konfigurowalnymi punktami nawigacyjnymi.
Szybki start: Dodawanie zakładek PDF w Javie
Zainstaluj bibliotekę Java IronPDF i ustaw swój klucz licencyjny
Załaduj swój PDF za pomocą PdfDocument.fromFile()
Uzyskaj BookmarkManager za pomocą pdf.getBookmark()
Dodaj zakładki za pomocą addBookMarkAtEnd("Title", pageNumber)
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, tworzenie formularzy i dodawanie znaków wodnych.
Użyj klasy PdfDocument, aby wczytać istniejący plik PDF w Java
Twórz i dostosowuj zakładki za pomocą klasy BookmarkManager
Użyj addBookMarkAtEnd do dodania zakładek do konkretnych stron PDF
Zapisz dokument PDF zawierający nowy spis treści i zakładki
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. Dodaj zależność IronPDF do pliku budowy projektu. Dla szczegółowych instrukcji dotyczących konfiguracji, zobacz Omówienie rozpoczęcia.
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.
Porady: Wszystkie 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, aby zademonstrować tworzenie konturów i zakładek. Proces obejmuje załadowanie istniejącego dokumentu PDF i użycie BookmarkManager IronPDF do dodawania 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 PDF z ścieżki pliku za pomocą PdfDocument.fromFile(), pobierz obiekt BookmarkManager, aby rozpocząć dodawanie zakładek.
Metody addBookMarkAtEnd i addBookMarkAtStart dodają wpisy odpowiednio na koniec lub początek 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.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/single-layer.javaimport 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 IronPDFLicense.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")); }}
//: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"));
}
}
Java
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. Rozpocznij od tych samych płaskich zakładek, które utworzyłeś w poprzedniej sekcji, a następnie użyj insertBookmark, aby dodawać wpisy na nowych warstwach.
Metoda insertBookmark przyjmuje cztery parametry: nazwę zakładki, indeks docelowej strony, nazwę zakładki rodzicielskiej i nazwę poprzedniej zakładki rodzeństwa. Przekazanie nazwy zakładki rodzica tworzy zagnieżdżony pod nią wpis podrzędny. Ustawienie parametru rodzeństwa na null plasuje nowy wpis jako pierwsze dziecko tego rodzica.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/multi-layer.javaimport 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 keyLicense.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
PDF powyżej pokazuje 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 to poprzez ten sam interfejs BookmarkManager, który jest używany do dodawania zakładek. Załaduj PDF z 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 określonej zakładki według jej pozycji na liście. Metoda getText() zwraca etykietę wyświetlaną zakładki, a getPageIndex() zwraca zerobazowy numer strony, do której się odnosi. Zakładki dziecka nie są zawarte w płaskiej liście zwracanej przez @@--CODE-248@@; uzyskaj do nich dostęp przez metodę getChildren() każdej zakładki rodzica.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/retrieve-bookmarks.javaimport 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 keyLicense.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 detailsSystem.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 tylko płaską listę zakładek najwyższego poziomu. Aby przejść pełne drzewo zakładek, rekurencyjnie wywołuj getChildren() na każdej zakładce, która ma 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 celowaną zakładkę według jej indeksu na liście, a następnie wywołaj addNextBookmark, aby wstawić nową zakładkę rodzeństwa bezpośrednio po niej. Użyj addChildBookmark, aby umieścić nowy wpis jeden poziom głębiej, 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.javaimport 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 keyLicense.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 nowe wpisy jako rodzeństwo wybranej zakładki, zaraz po niej na liście. Metoda addChildBookmark umieszcza nowy wpis jeden poziom głębiej, zagnieżdżony pod wybraną 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. Silnik BookmarkManager IronPDF obsługuje pełen zakres operacji na zakładkach: dodawanie płaskich list wpisów, budowanie głębokich wielopoziomowych konturów, pobieranie istniejących wpisów i wstawianie w określonych pozycjach.
Aby kontynuować pracę z funkcjami struktury dokumentu i nawigacji, zapoznaj się z tymi zasobami:
Podziel PDFy w Java: twórz mniejsze, samodzielne dokumenty, które każdy przenoszą swoją własną strukturę zakładek.
Drukuj PDFy w Java: wyślij dokumenty z zakładkami do drukarki zachowując nawigację.
Java PDF tutorials: dodatkowe przykłady end-to-end dla typowych procesów pracy z PDF.
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.
What features does IronPDF provide beyond PDF bookmarking?
IronPDF supports a variety of PDF manipulation features such as merging PDFs, creating forms, adding watermarks, and many more functionalities that integrate with Java applications.
How do you insert a bookmark at a specific index in a PDF with IronPDF?
Use `addNextBookmark` to insert a bookmark immediately after a specific entry and `addChildBookmark` to place a new entry one level deeper under a selected bookmark.
Can IronPDF handle PDF generation and modification pipelines?
Yes, IronPDF allows for incremental updates to PDFs, making it suitable for pipelines where new content can be appended with appropriate bookmarks without rebuilding the entire document structure.
Where can I find more information about using IronPDF for Java?
You can explore additional resources and tutorials on the IronPDF website, which provide detailed examples for splitting PDFs, printing, adding annotations, and using the full range of IronPDF Java API features.
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ęczników.