Dapatkan, Perbarui dan Kembangkan Penanda
Dapatkan Penanda
Koleksi OutlineCollection dari objek Document berisi semua penanda dari file PDF. Artikel ini menjelaskan cara mendapatkan penanda dari sebuah file PDF, dan bagaimana mengetahui halaman mana penanda tertentu berada.
Untuk mendapatkan penanda, lakukan loop melalui koleksi OutlineCollection dan dapatkan setiap penanda dalam OutlineItemCollection. The OutlineItemCollection menyediakan akses ke semua atribut penanda buku. Potongan kode berikut menunjukkan cara mendapatkan penanda buku dari file PDF.
void GettingBookmarks() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// Buka dokumen
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// Loop melalui semua penanda buku
for (auto outlineItem : pdfDocument->get_Outlines()) {
Console::WriteLine(u"Judul :- " + outlineItem->get_Title());
Console::WriteLine(u"Apakah Miring :- " + outlineItem->get_Italic());
Console::WriteLine(u"Apakah Tebal :- " + outlineItem->get_Bold());
Console::WriteLine(u"Warna :- {0}", outlineItem->get_Color());
}
}
Mendapatkan Nomor Halaman Penanda Buku
Setelah Anda menambahkan penanda buku, Anda dapat mengetahui halaman mana penanda buku tersebut dengan mendapatkan PageNumber tujuan yang terkait dengan objek Bookmark.
void GettingBookmarksPageNumber() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// Buat PdfBookmarkEditor
auto bookmarkEditor = MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();
// Buka file PDF
bookmarkEditor->BindPdf(_dataDir + u"UpdateBookmarks.pdf");
// Ekstrak penanda buku
auto bookmarks = bookmarkEditor->ExtractBookmarks();
for (auto bookmark : bookmarks) {
String strLevelSeprator("");
for (int i = 1; i < bookmark->get_Level(); i++) {
strLevelSeprator += u"---- ";
}
Console::WriteLine(u"Judul :- " + strLevelSeprator + bookmark->get_Title());
Console::WriteLine(u"Nomor Halaman :- " + strLevelSeprator + bookmark->get_PageNumber());
Console::WriteLine(u"Tindakan Halaman :- " + strLevelSeprator + bookmark->get_Action());
}
}
Memperbarui Penanda Buku dalam Dokumen PDF
Untuk memperbarui penanda buku dalam berkas PDF, pertama, dapatkan penanda buku tertentu dari koleksi OutlineColletion objek Dokumen dengan menentukan indeks penanda buku. Setelah Anda mendapatkan penanda buku ke dalam objek OutlineItemCollection, Anda dapat memperbarui properti-propertinya dan kemudian menyimpan berkas PDF yang diperbarui menggunakan metode Save. Cuplikan kode berikut menunjukkan cara memperbarui penanda buku dalam dokumen PDF.
void UpdateBookmarksInPDFDocument() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// Buka dokumen
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// Dapatkan objek penanda buku
auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);
// Perbarui objek penanda buku
pdfOutline->set_Title(u"Updated Outline");
pdfOutline->set_Italic(true);
pdfOutline->set_Bold(true);
// Tetapkan halaman target sebagai 2
pdfOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));
// Simpan keluaran
pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}
Memperbarui Penanda Buku Anak dalam Dokumen PDF
Untuk memperbarui penanda buku anak:
- Ambil penanda buku anak yang ingin Anda perbarui dari file PDF dengan terlebih dahulu mendapatkan penanda buku induk dan kemudian penanda buku anak menggunakan nilai indeks yang sesuai.
- Simpan file PDF yang diperbarui menggunakan metode Save.
Cuplikan kode berikut menunjukkan kepada Anda cara memperbarui penanda buku anak dalam dokumen PDF.
void UpdateChildBookmarksInPDFDocument() {
String _dataDir("C:\\Samples\\Bookmarks\\");
// Buka dokumen
auto pdfDocument = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// Dapatkan objek penanda buku
auto pdfOutline = pdfDocument->get_Outlines()->idx_get(1);
// Dapatkan objek penanda buku anak
auto childOutline = pdfOutline->idx_get(1);
// Perbarui objek penanda buku
childOutline->set_Title(u"Updated Outline");
childOutline->set_Italic(true);
childOutline->set_Bold(true);
// Tetapkan halaman target sebagai 2
childOutline->set_Destination(MakeObject<Aspose::Pdf::Annotations::GoToAction>(pdfDocument->get_Pages()->idx_get(2)));
// Simpan keluaran
pdfDocument->Save(_dataDir + u"Bookmarkupdated_output.pdf");
}
Penanda Buku yang Diperluas saat Melihat Dokumen
Penanda buku disimpan dalam koleksi OutlineItemCollection objek Dokumen, yang berada dalam koleksi OutlineCollection. Namun, kita mungkin memiliki kebutuhan untuk memperluas semua penanda buku saat melihat file PDF.
Untuk memenuhi kebutuhan ini, kita dapat mengatur status terbuka untuk setiap item garis besar/penanda buku sebagai Terbuka. Cuplikan kode berikut menunjukkan cara mengatur status terbuka untuk setiap penanda buku agar diperluas dalam dokumen PDF.
void ExpandedBookmarks() {
String _dataDir("C:\\Samples\\Bookmarks\\");
auto doc = MakeObject<Document>(_dataDir + u"UpdateBookmarks.pdf");
// atur mode tampilan halaman yaitu tampilkan thumbnail, layar penuh, tampilkan panel lampiran
doc->set_PageMode(PageMode::UseOutlines);
// cetak jumlah total Penanda Buku dalam file PDF
Console::WriteLine(doc->get_Outlines()->get_Count());
// telusuri setiap item Outline dalam koleksi outline file PDF
for (int counter = 1; counter <= doc->get_Outlines()->get_Count(); counter++) {
// atur status terbuka untuk item outline
doc->get_Outlines()->idx_get(counter)->set_Open(true);
}
// simpan file PDF
doc->Save(_dataDir + u"Bookmarks_Expanded.pdf");
}