文档管理中心
我的

您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录

指南与API参考指南应用服务PDF Kit(PDF服务)pdfService能力添加、删除书签

添加、删除书签

PDF Kit支持添加和删除PDF文档书签。

添加书签时,可设置标题、颜色,是否粗体、斜体、跳转信息等。

接口说明

展开
接口名 描述
createBookmark(): Bookmark 创建PDF文档书签。
getRootBookmark(): Bookmark 获取PDF文档第一个根书签。
insertBookmark(bookmark: Bookmark, parent: Bookmark, position: number): boolean 插入PDF文档书签。
setBookmarkInfo(info: BookmarkInfo): void 设置书签信息。
removeBookmark(bookmark: Bookmark): boolean 移除PDF文档书签。
setDestInfo(info: DestInfo): void 设置书签的跳转信息。
getBookmarkInfo(): BookmarkInfo 获取书签信息。

示例代码

添加书签:

  1. 调用loadDocument方法,加载PDF文档。

  2. 调用createBookmark方法,创建书签。

  3. 调用setDestInfo方法,设置书签的跳转信息。

  4. 调用getBookmarkInfo方法,获取书签信息。

  5. 调用setBookmarkInfo方法,设置书签内容及样式。

  6. 设置保存文档沙箱路径并保存。

删除书签:

  1. 调用loadDocument方法,加载PDF文档。

  2. 调用getRootBookmark方法,获取文档的第一个根书签。

  3. 调用removeBookmark方法,删除书签。

  4. 设置保存文档沙箱路径并保存。

收起
自动换行
深色代码主题
复制
  1. import { pdfService } from '@kit.PDFKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. // ...
  4. @Entry
  5. @Component
  6. struct BookmarkPage {
  7. private pdfDocument: pdfService.PdfDocument = new pdfService.PdfDocument();
  8. private context = this.getUIContext().getHostContext() as Context;
  9. build() {
  10. Column() {
  11. // ...
  12. Button('addBookmark').onClick(async () => {
  13. // 确保在工程目录src/main/resources/resfile里有input.pdf文档
  14. let filePath = this.context.resourceDir + '/input.pdf';
  15. this.pdfDocument.loadDocument(filePath);
  16. // 创建书签
  17. let mark1: pdfService.Bookmark = this.pdfDocument.createBookmark();
  18. let mark2: pdfService.Bookmark = this.pdfDocument.createBookmark();
  19. // 设置书签的跳转信息
  20. let destInfo: pdfService.DestInfo = mark1.getDestInfo();
  21. destInfo.fitMode = pdfService.FitMode.FIT_MODE_XYZ;
  22. destInfo.pageIndex = 1;
  23. destInfo.left = 20;
  24. destInfo.top = 30;
  25. destInfo.zoom = 1.5;
  26. mark1.setDestInfo(destInfo);
  27. // 设置书签内容及样式
  28. let bookInfo: pdfService.BookmarkInfo = mark1.getBookmarkInfo();
  29. bookInfo.title = '这里是跳到第一页的书签';
  30. bookInfo.titleColor = 12;
  31. bookInfo.isBold = true;
  32. bookInfo.isItalic = true;
  33. mark1.setBookmarkInfo(bookInfo);
  34. // 把创建的书签插入到PDF页面
  35. this.pdfDocument.insertBookmark(mark1, null, 1);
  36. this.pdfDocument.insertBookmark(mark2, mark1, 1);
  37. // 设置保存文档沙箱路径并保存
  38. let outPdfPath = this.context.filesDir + '/testAddBookmark.pdf';
  39. let result = this.pdfDocument.saveDocument(outPdfPath);
  40. hilog.info(0x0000, 'BookmarkPage', 'saveAddBookmark %{public}s!', result ? 'success' : 'fail');
  41. })
  42. // 删除书签
  43. Button('removeBookmark').onClick(async () => {
  44. // 确保沙箱目录有testAddBookmark.pdf文档
  45. this.pdfDocument.loadDocument(this.context.filesDir + '/testAddBookmark.pdf');
  46. let bookmarks: pdfService.Bookmark = this.pdfDocument.getRootBookmark();
  47. if (bookmarks.isRootBookmark()) {
  48. let hasRemoveBookmark: boolean = this.pdfDocument.removeBookmark(bookmarks);
  49. hilog.info(0x0000, 'BookmarkPage', 'removeBookmark %{public}s!', hasRemoveBookmark ? 'success' : 'fail');
  50. let outPdfPath = this.context.filesDir + '/testRemoveBookmark.pdf';
  51. let result = this.pdfDocument.saveDocument(outPdfPath);
  52. hilog.info(0x0000, 'BookmarkPage', 'saveRemoveBookmark %{public}s!', result ? 'success' : 'fail');
  53. }
  54. })
  55. // ...
  56. }
  57. }
  58. }