如何在PDF.js中使用注释层?

问题描述 投票:0回答:2

一些 PDF.js 代码提到了“注释层”,例如此处的 AnnotationLayerBuilder:

https://github.com/mozilla/pdf.js/blob/95e102c07bc257c2120fd7fd9141762b2c813a1c/web/annotation_layer_builder.js#L118

还有

pdfDocument.annotationStorage
pdfjsLib.AnnotationLayer
,在我尝试过的所有文档中,它们都是空的,即使在确实有文本注释的文档中也是如此。

我找不到有关注释层以及如何使用它的任何示例或文档,但听起来确实很有趣:)

  1. 什么是注释层?这是在谈论标准 PDF 注释吗,如 https://pspdfkit.com/blog/2018/what-are-annotations/https://www.adobe.com/content/dam/acom/en 中所述/devnet/acrobat/pdfs/pdf_reference_1-7.pdf 第 8.4 节注释?或者,它是 PDF.js 内部的东西吗?

  2. 如何列出 PDF.js 中 JavaScript 代码的现有注释,以及如何添加注释? (仅用于显示;当然,并不指望能够将其保存在 pdf 中)任何人都可以提供工作代码示例吗?

谢谢!

javascript pdf firefox pdf.js
2个回答
5
投票
注释是 PDF 文件格式的标准,如您提供的链接中所述。它们对于 PDF.js 来说并不是一个新概念。

如何获取注释将取决于您的情况。我正在构建一个视图层来替换 PDF.js 团队构建的查看器。基本想法就是你:

    通过
  1. const doc = getDocument(url)
     获取对 PDFDocumentProxy 对象的引用
    
  2. 通过
  3. const page = await doc.getPage(num)
     获取对 PDFPageProxy 对象的引用
    
  4. 通过
  5. await page.getAnnotations()
     获取注释
    
如果您已经在使用他们构建的查看器,它似乎不会暴露在任何地方。


0
投票
我进行了很多测试,发现我们可以使用下面的代码从注释存储中获取序列化的地图。

我在

PDF.js

 版本 
4.1
 Web 查看器
进行了测试

var serializedMap = pdfPage._transport.annotationStorage.serializable.map); console.log(serializedMap);
    
© www.soinside.com 2019 - 2024. All rights reserved.