북마크 가져오기, 업데이트 및 확장
북마크 가져오기
Document 객체의 OutlineCollection 컬렉션에는 PDF 파일의 모든 북마크가 포함되어 있습니다. 이 문서에서는 PDF 파일에서 북마크를 가져오는 방법과 특정 북마크가 있는 페이지를 가져오는 방법을 설명합니다.
북마크를 가져오려면 OutlineCollection 컬렉션을 반복하여 OutlineItemCollection에서 각 북마크를 가져옵니다. The OutlineItemCollection는 모든 북마크의 속성에 접근할 수 있게 해줍니다. 다음 코드 스니펫은 PDF 파일에서 북마크를 가져오는 방법을 보여줍니다.
void GettingBookmarks() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// 문서 열기
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// 모든 북마크 순회
for (auto outlineItem : pdfDocument->get_Outlines()) {
Console::WriteLine(u"제목 :- " + outlineItem->get_Title());
Console::WriteLine(u"기울임꼴 여부 :- " + outlineItem->get_Italic());
Console::WriteLine(u"볼드체 여부 :- " + outlineItem->get_Bold());
Console::WriteLine(u"색상 :- {0}", outlineItem->get_Color());
}
}
북마크의 페이지 번호 가져오기
북마크를 추가한 후에는 북마크 객체와 연관된 목적지 PageNumber를 얻어 그것이 어떤 페이지에 있는지 알 수 있습니다.
void GettingBookmarksPageNumber() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// PdfBookmarkEditor 생성
auto bookmarkEditor = MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();
// PDF 파일 열기
bookmarkEditor->BindPdf(_dataDir + u"UpdateBookmarks.pdf");
// 북마크 추출
auto bookmarks = bookmarkEditor->ExtractBookmarks();
for (auto bookmark : bookmarks) {
String strLevelSeprator("");
for (int i = 1; i < bookmark->get_Level(); i++) {
strLevelSeprator += u"---- ";
}
Console::WriteLine(u"제목 :- " + strLevelSeprator + bookmark->get_Title());
Console::WriteLine(u"페이지 번호 :- " + strLevelSeprator + bookmark->get_PageNumber());
Console::WriteLine(u"페이지 액션 :- " + strLevelSeprator + bookmark->get_Action());
}
}
PDF 문서에서 북마크 업데이트하기
PDF 파일에서 북마크를 업데이트하려면 먼저 북마크의 인덱스를 지정하여 Document 객체의 OutlineColletion 컬렉션에서 특정 북마크를 가져옵니다. OutlineItemCollection 객체로 북마크를 가져온 후, 그 속성을 업데이트하고 Save 메서드를 사용하여 업데이트된 PDF 파일을 저장할 수 있습니다. 다음 코드 스니펫은 PDF 문서에서 북마크를 업데이트하는 방법을 보여줍니다.
void UpdateBookmarksInPDFDocument() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// 문서 열기
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// 북마크 객체 가져오기
auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);
// 북마크 객체 업데이트
pdfOutline->set_Title(u"Updated Outline");
pdfOutline->set_Italic(true);
pdfOutline->set_Bold(true);
// 대상 페이지를 2로 설정
pdfOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));
// 출력 저장
pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}
PDF 문서에서 자식 북마크 업데이트하기
자식 북마크를 업데이트하려면:
- 먼저 부모 북마크를 가져온 후 적절한 인덱스 값을 사용하여 PDF 파일에서 업데이트하려는 자식 북마크를 검색합니다.
- Save 메소드를 사용하여 업데이트된 PDF 파일을 저장합니다.
다음 코드 스니펫은 PDF 문서에서 자식 북마크를 업데이트하는 방법을 보여줍니다.
void UpdateChildBookmarksInPDFDocument() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// 문서 열기
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// 북마크 객체 가져오기
auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);
// 자식 북마크 객체 가져오기
auto childOutline = pdfOutline->idx_get(1);
// 북마크 객체 업데이트
childOutline->set_Title(u"Updated Outline");
childOutline->set_Italic(true);
childOutline->set_Bold(true);
// 대상 페이지를 2로 설정
childOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));
// 출력 저장
pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}
문서 보기 시 확장된 북마크
북마크는 Document 객체의 OutlineItemCollection 컬렉션에 보관되며, 이는 OutlineCollection 컬렉션에 포함되어 있습니다. 그러나 PDF 파일을 볼 때 모든 북마크가 확장되도록 하는 요구 사항이 있을 수 있습니다.
이 요구 사항을 달성하기 위해 각 윤곽/북마크 항목의 열기 상태를 Open으로 설정할 수 있습니다. 다음 코드 스니펫은 PDF 문서에서 각 북마크의 열기 상태를 확장된 상태로 설정하는 방법을 보여줍니다.
void ExpandedBookmarks() {
String _dataDir("C:\\Samples\\Bookmarks\\");
auto doc = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// 페이지 보기 모드 설정 예: 썸네일 보기, 전체 화면, 첨부 파일 패널 보기
doc->set_PageMode(PageMode::UseOutlines);
// PDF 파일의 북마크 총 개수 출력
Console::WriteLine(doc->get_Outlines()->get_Count());
// PDF 파일의 윤곽 컬렉션에서 각 윤곽 항목을 순회
for (int counter = 1; counter <= doc->get_Outlines()->get_Count(); counter++) {
// 윤곽 항목의 열기 상태 설정
doc->get_Outlines()->idx_get(counter)->set_Open(true);
}
// PDF 파일 저장
doc->Save(_dataDir + u"Bookmarks_Expanded.pdf");
}