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.
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
BookmarkManagerza pomocąpdf.getBookmark() - Dodaj zakładki za pomocą
addBookMarkAtEnd("Title", pageNumber) - Zapisz PDF za pomocą
pdf.saveAs()
: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"));
: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, tworzenie formularzy i dodawanie znaków wodnych.
Jak dodawać zakładki PDF i spis treści
- Zainstaluj bibliotekę Java, aby dodawać zakładki do PDF
- Użyj klasy PdfDocument, aby wczytać istniejący plik PDF w Java
- Twórz i dostosowuj zakładki za pomocą klasy BookmarkManager
- Użyj
addBookMarkAtEnddo 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.
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.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"));
}
}
//: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. 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.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"));
}
}
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.
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
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.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());
}
}
}
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.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"));
}
}
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.
- Dodawanie adnotacji do PDF w Java: dołącz komentarze i oznaczenia w określonych lokalizacjach na stronie.
- IronPDF for Java examples: kopiuj-wklejaj przykłady z pełnego API Java IronPDF.
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.


