Java를 사용하여 PDF 책갈피 및 개요를 추가하는 방법
IronPDF의 Java 라이브러리를 사용하면 BookmarkManager 클래스를 통해 PDF 문서에 북마크와 개요를 프로그래밍 방식으로 추가할 수 있으며, 사용자 정의 가능한 탐색 지점을 갖춘 단일 계층 및 다중 계층 북마크 구조를 모두 지원합니다.
빠른 시작: Java에서 PDF 책갈피 추가
- IronPDF Java 라이브러리를 설치하고 라이선스 키를 설정하세요
PdfDocument.fromFile()을 사용하여 PDF를 불러오세요BookmarkManager을pdf.getBookmark()으로 가져오기addBookMarkAtEnd("Title", pageNumber)을 사용하여 북마크 추가pdf.saveAs()를 포함하여 PDF를 저장하십시오.
```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"));
PDF 북마크는 문서의 사용성과 탐색성을 향상시킵니다. 아웃라인은 PDF 내에서 구조화된 탐색을 제공하여 사용자가 목차와 유사하게 주요 섹션으로 직접 이동할 수 있도록 합니다. 이것은 긴 문서, 보고서 또는 조직화된 탐색이 필요한 다장 PDF를 작업할 때 필수적입니다.
IronPDF Java 애플리케이션에서 PDF 조작을 간소화합니다. 북마킹 API는 PDF 파일에서 사용자 정의 북마크를 만드는 간단한 방법을 제공합니다. 라이브러리는 Java 애플리케이션과 통합되며, 북마킹 외에도 [PDF 병합](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/), [양식 생성](https://ironpdf.com/java/how-to/create-forms/), [워터마크 추가](https://ironpdf.com/java/how-to/custom-watermark/) 등 다양한 PDF 조작 기능을 지원합니다.
<div class="hsg-featured-snippet">
<h2>PDF에 책갈피와 개요를 추가하는 방법</h2>
<ol>
<li><a href="https://ironpdf.com/java/#download-modal">Java 라이브러리를 설치하여 PDF에 북마크를 추가하세요</a></li>
<li><strong>PdfDocument</strong> 클래스를 사용하여 Java에서 기존 PDF 파일을 로드하세요</li>
<li><strong>BookmarkManager</strong> 클래스로 북마크를 생성 및 사용자 정의하세요</li>
<li><code>addBookMarkAtEnd</code> 사용하여 PDF의 특정 페이지에 책갈피를 추가할 수 있습니다.</li>
<li>새로운 개요와 책갈피가 포함된 PDF 문서를 저장하세요.</li>
</ol>
</div>
## 시작하기 전에 무엇이 필요합니까?
PDF 북마크를 구현하기 전에 IronPDF가 Java 프로젝트에 구성되어 있는지 확인하세요. 라이브러리는 Java 8 이상이 필요하며, [Maven 또는 Gradle](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf)을 통해 통합됩니다. 프로젝트의 빌드 파일에 IronPDF 종속성을 추가하세요. 자세한 설정 지침은 [시작 개요](https://ironpdf.com/java/docs/)를 참조하세요.
개발 및 생산 사용을 위해 유효한 라이선스 키가 필요합니다. 응용 프로그램의 시작 부분에서 라이선스 키를 설정하고 IronPDF 메서드를 호출하기 전에 설정하세요. 라이선싱 옵션에 대한 정보는 [라이선싱 가이드](https://ironpdf.com/java/get-started/license-keys/)를 방문하세요.
팁IronPDF의 모든 페이지 인덱스는 0 기반 번호 매기기를 사용합니다. 문서의 페이지 1은 인덱스 0, 페이지 2는 인덱스 1입니다.
## PDF에 아웃라인과 북마크를 추가하려면 어떻게 해야 하나요?
아래 예제는 이 [샘플 PDF](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf)를 사용하여 아웃라인 및 북마크 생성을 시연합니다. 이 과정에는 기존 PDF 문서를 불러온 후 IronPDF의 `BookmarkManager`를 사용하여 문서 전체에 탐색 지점을 추가하는 작업이 포함됩니다.
### 책갈피를 한 겹으로 추가하려면 어떻게 해야 하나요?
명확하고 비계층적 구조를 지닌 보고서, 제품 매뉴얼 또는 각 섹션이 독립적으로 서있는 슬라이드 데크와 같은 문서에는 평면 북마크 목록이 적합합니다. `PdfDocument.fromFile()`을 사용하여 파일 경로에서 PDF를 로드한 후, `BookmarkManager` 객체를 불러와 북마크 추가를 시작합니다.
`addBookMarkAtEnd` 및 `addBookMarkAtStart` 메서드는 각각 북마크 컬렉션의 끝이나 시작 부분에 항목을 추가합니다. 이 메서드들은 문서의 구조에 맞게 북마크를 조직하는 유연성을 제공합니다. 각 항목은 표시 제목과 0 기반 페이지 인덱스를 수용합니다.
```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"));
}
}
위의 PDF 뷰어를 사용하여 대부분의 브라우저에서 왼쪽 상단 모서리에 있는 목차를 확인하여 추가된 모든 북마크를 확인하세요. 이 평면 북마크 구조는 단순한 조직적 요구가 있는 문서에 대한 간단한 탐색을 제공합니다.
책갈피를 여러 겹으로 만드는 방법은 무엇인가요?
중첩 북마크는 독자가 챕터로뿐만 아니라 챕터 내의 하위 섹션으로 탐색해야 하는 다장문서나 리서치 보고서에 적합한 선택입니다. 이전 섹션에서 생성한 동일한 평면 북마크를 시작으로, insertBookmark을 사용하여 새 레이어에 항목을 추가하십시오.
insertBookmark 메서드는 북마크 이름, 대상 페이지 인덱스, 상위 북마크 이름, 그리고 바로 앞의 형제 북마크 이름이라는 네 가지 매개변수를 받습니다. 상위 북마크 이름을 전달하면 그 아래에 중첩된 자식 항목을 생성합니다. sibling 매개변수를 null로 설정하면 새 항목이 해당 부모의 첫 번째 자식 노드로 배치됩니다.
//: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는 insertBookmark에 의해 생성된 북마크의 트리 구조를 보여줍니다. 아웃라인 패널을 확장하여 각 자식 항목이 상위 아래에 어떻게 중첩되는지 확인하세요. 이 레이어드 접근 방식은 챕터, 하위 챕터 및 부록이 있는 보고서에 적합합니다.
PDF 파일에서 기존 책갈피를 어떻게 복구할 수 있나요?
PDF에서 북마크 데이터를 읽어 들이는 것은 전체 탐색 구조를 다시 빌드하지 않고 문서를 업데이트할 때 필수 사항입니다. IronPDF는 북마크를 추가하는 데 사용되는 것과 동일한 BookmarkManager 인터페이스를 통해 이 기능을 제공합니다. PdfDocument.fromFile()로 PDF를 불러온 후, BookmarkManager에 액세스하고, getBookmarks()를 호출하여 모든 최상위 북마크를 가져옵니다.
get(index)을 사용하여 목록 내 위치로 특정 북마크에 접근할 수 있습니다. getText() 메서드는 북마크의 표시 레이블을 반환하고, getPageIndex()은 해당 북마크가 가리키는 0을 기준으로 한 페이지 번호를 반환합니다. getBookmarks()에서 반환하는 평면 목록에는 하위 북마크가 포함되지 않습니다; 각 상위 북마크의 getChildren() 메서드를 통해 액세스할 수 있습니다.
//: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() 메서드는 최상위 북마크로만 구성된 평면 리스트를 반환합니다. 전체 북마크 트리를 탐색하려면 중첩된 항목이 있는 각 북마크에 대해 getChildren()를 재귀적으로 호출하십시오.이 검색 패턴은 배포 전에 기존 PDF의 탐색 구조를 감사하거나, 게시 전에 필수 섹션이 올바르게 북마크됐는지 확인해야 하는 도구 빌딩에 유용합니다.
특정 목차에 책갈피를 삽입하려면 어떻게 해야 하나요?
특정 포지션에 북마크를 삽입하여 전체 아웃라인을 처음부터 다시 빌드하지 않고도 기존 PDF를 점진적으로 업데이트할 수 있습니다. 이는 PDF가 파이프라인에서 생성되거나 수정되며, 새로운 콘텐츠가 다운스트림으로 추가될 때 특히 유용합니다.
getBookmarks()를 사용하여 평면 북마크 목록을 가져온 다음, 목록 인덱스를 통해 대상 북마크를 선택하고, addNextBookmark를 호출하여 해당 북마크 바로 뒤에 새로운 북마크를 삽입합니다. addChildBookmark을 사용하여 선택한 북마크 아래에 한 단계 더 깊게 새 항목을 중첩하여 배치하십시오. 두 메서드는 제목 문자열과 0 기반 페이지 인덱스를 수용합니다.
//: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"));
}
}
addNextBookmark 메서드는 새 항목을 선택한 북마크의 바로 다음 위치에 동급 항목으로 삽입합니다. addChildBookmark 메서드는 새 항목을 선택한 북마크 아래에 중첩하여 한 단계 더 깊게 배치합니다. 두 메서드는 제목 문자열과 0 기반 페이지 인덱스를 수용합니다.
Java에서 PDF 북마크를 위한 다음 단계는 무엇인가요?
PDF 북마크는 복잡한 문서를 스크롤 없이 직접 탐색 경로를 사용자에게 제공합니다. IronPDF의 BookmarkManager는 평면 항목 목록 추가, 심층적인 다단계 개요 작성, 기존 항목 검색, 특정 위치 삽입 등 모든 북마크 작업을 처리합니다.
문서 구조와 탐색 기능 작업을 계속하려면 관련 리소스를 탐색하세요:
- Java에서 PDF 분할: 각자 자신의 북마크 구조를 지닌 더 작고 자급자족적인 문서를 작성하세요
- Java에서 PDF 인쇄: 북마크된 문서를 탐색을 유지한 채로 프린터에 보냅니다
- Java PDF 튜토리얼: 일반 PDF 워크플로우에 대한 추가 끝에서 끝 예제
- Java에서 PDF에 주석 추가: 특정 페이지 위치에 주석과 마크업을 첨부합니다
- Java IronPDF 예제: 전체 IronPDF Java API에 대한 코드 샘플을 복사-붙여넣기하세요
무료 체험을 시작하여 Java PDF 워크플로우에 북마크, 아웃라인 및 다른 탐색 기능을 추가하세요. 생산용으로 라이선스를 구매하려면, 라이선싱 옵션 보기를 클릭하세요.
자주 묻는 질문
Java를 사용하여 PDF 문서에 책갈피를 추가하는 방법은 무엇인가요?
PdfDocument.fromFile()를 사용하여 PDF를 로드한 다음, pdf.getBookmark()를 호출하여 BookmarkManager를 가져옵니다. addBookMarkAtEnd("Title", pageIndex)를 사용하여 표시 이름과 0 기반 페이지 번호로 각 북마크를 추가하고 pdf.saveAs()로 저장합니다.
Java에서 PDF 북마크를 추가하기 위한 전제 조건은 무엇인가요?
Java 8 이상, Maven 또는 Gradle 종속 항목으로 추가된 IronPDF 라이브러리, 그리고 IronPDF 호출 전에 License.setLicenseKey()로 설정된 유효한 라이선스 키가 필요합니다. 추가 도구나 프레임워크는 필요하지 않습니다.
PDF에서 다단계 책갈피 계층 구조를 만들 수 있나요?
네. addBookMarkAtEnd로 상위 북마크를 먼저 추가한 다음, insertBookmark(name, pageIndex, parentName, siblingName)를 호출하여 상위 북마크 아래에 하위 항목을 둡니다. 새로운 항목을 첫 번째 자식으로 배치하려면 null을 형제 이름으로 전달하세요.
addBookMarkAtEnd와 insertBookmark의 차이점은 무엇인가요?
addBookMarkAtEnd는 북마크 목록 끝에 새로운 최상위 항목을 추가합니다. insertBookmark는 부모 북마크 이름과 선택적인 앞선 형제를 지정함으로써, 중첩된 윤곽을 가능하게 하여, 계층 내 특정 위치에 북마크를 배치합니다.
Java에서 기존 PDF 북마크를 어떻게 읽나요?
pdf.getBookmark().getBookmarks()를 호출하여 최상위 북마크의 평면 목록을 가져옵니다. 인덱스를 사용하여 개별 항목에 접근하고, list.get(index)로 접근합니다. bookmark.getText()로 제목을, bookmark.getPageIndex()로 0 기반 페이지 번호를 가져옵니다. 자식 북마크는 bookmark.getChildren()를 통해 접근할 수 있습니다.
기존 북마크 후에 새 북마크를 어떻게 삽입하나요?
getBookmarks()로 북마크 목록을 가져오고, 인덱스로 대상 항목을 선택한 다음, bookmark.addNextBookmark("Title", pageIndex)를 호출하여 즉시 뒤에 형제를 삽입하거나 bookmark.addChildBookmark("Title", pageIndex)로 하위 항목을 그 밑에 넣습니다.


