如何一键删除当前页面上的特定类型注释或 所有注释?

1. 获取当前视图所在的页码信息

var pdfviewer = await pdfui.getPDFViewer();  
var docRender = pdfviewer.getPDFDocRender();  
var curPageIndex = docRender.getCurrentPageIndex();

2. 获取当前PDF的文档对象

var pdfdoc = pdfviewer.getCurrentPDFDoc();  

3. 获取当前页面的页面对象

var curPage = await pdfdoc.getPageByIndex(curPageIndex);

4. 删除当前页面的所有注释 或 特定类型注释

  • 删除当前页面的所有注释
curPage.removeAllAnnot();
  • 删除当前页面的特定类型注释

如果当前页有多种类型的注释(图章、高亮、下划线等等),可以使用getAnnots接口获取当前页所有注释,过滤出特定类型的注释,然后使用removeAnnotById 或 removeAnnotByObjectNumber 删除特定注释。

curPage.getAnnots().then(annots => {  
    annots.forEach(annot => {  
          if (annot.getType() === annotType) {  
             curPage.removeAnnotByObjectNumber(annot.getObjectNumber());  
          }  
       });  
});

示例代码如下:

/*入参类型:字符串
入参值:待删除的注释类型,如“highlight”——高亮注释,"ink"——铅笔注释。如果入参值为“all”,则代表删除当前页的所有注释
*/
async function deleteAnnotsOnCurPage(annotType) {  
    // 获取当前视图所在的页码信息  
    var pdfviewer = await pdfui.getPDFViewer();  
    var docRender = pdfviewer.getPDFDocRender();  
    var curPageIndex = docRender.getCurrentPageIndex();  
    // 获取当前PDF的文档对象  
    var pdfdoc = pdfviewer.getCurrentPDFDoc();  
    // 获取当前页面的页面对象  
    var curPage = await pdfdoc.getPageByIndex(curPageIndex);  
    // 删除当前页面的所有注释 或 特定类型注释  
    curPage.getAnnots().then(annots => {  
       if (annots.length === 0) return;  
       if(annotType ==='all') {  
          // 删除当前页面的所有注释  
          curPage.removeAllAnnot();  
       }else{  
          // 删除当前页面的特定类型注释  
          annots.forEach(annot => {  
             if (annot.getType() === annotType) {  
                curPage.removeAnnotByObjectNumber(annot.getObjectNumber());  
             }  
          });  
       }  
    });  
}