PDFDocumentProxy
pdfDocumentProxy.annotationStorage
获取、设置 PDF 临时注释。
annotationStorage
主要用于在使用 PDF.js 时动态添加或修改注释,而不一定能读取到使用其他 PDF 工具添加的批注和注解。
这是因为这些注释通常被嵌入在 PDF 文档的结构中,而 annotationStorage
是 PDF.js 的一个运行时存储,用于临时管理动态注释。
如果需要获取 PDF 中的注释,需要使用 pdfPageProxy.getAnnotations()
。
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
const annotation = {
id: 'unique-id', // 注释 ID,后续可以通过 ID 再获取
rect: [100, 100, 200, 200], // 位置和大小
contents: '这是一个注释内容', // 内容
color: [0, 0, 255], // 注释的颜色 (RGB)
author: 'xxx', // 注释的作者
modificationDate: new Date().toISOString(), // 修改日期
type: 'Text' // 类型
}
// 添加注释到 annotationStorage
pdfDocumentProxy.annotationStorage.setValue(annotation.id, annotation)
// 获取注释
console.log(pdfDocumentProxy.annotationStorage.getAll()['unique-id'])
console.log(pdfDocumentProxy.annotationStorage.getValue('unique-id', 'defaultValue'))
})
pdfDocumentProxy.filterFactory
过滤工厂实例,可以追加各种过滤器。
官方解释为 The filter factory instance
。应用方式不详。
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
console.log(pdfDocumentProxy.filterFactory)
// pdfDocumentProxy.filterFactory 有很多原型方法,如 addAlphaFilter addFilter addHCMFilter 等
})
pdfDocumentProxy.numPages
获取 PDF 总页数
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
console.log(pdfDocumentProxy.numPages) // 14
})
pdfDocumentProxy.loadingTask
获取用于加载 PDF 文档对象
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
console.log(pdfDocumentProxy.loadingTask === pdfDocumentLoadingTask) // true
})
pdfDocumentProxy.fingerprints
获取 PDF 的指纹
返回长度为 2 的数组。一般没有编辑过的 PDF 只会有一个指纹,编辑过的 PDF 会返回第二个指纹。
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
console.log(pdfDocumentProxy.fingerprints) // ['110dd61fd57444010b1ab5ff38782f0f', '51e5dd1015bb6c73d97454339b52ff77']
})
pdfDocumentProxy.getPage()
获取 PDF 指定页面内容。页码从 1 开始。
返回 PDFPageProxy
。
const pdfDocumentLoadingTask = pdfjsLib.getDocument({url: './demo.pdf'})
pdfDocumentLoadingTask.promise.then(pdfDocumentProxy => {
pdfDocumentProxy.getPage(1).then(pdfPageProxy => {
console.log(pdfPageProxy)
})
})