PDF.JS渲染PDF的过程

1.调用getDocument

在viewer.js中通过getDocument获取到PDf文档后,返回了文档数据pdfDocument!

2.调用了self.load

然后调用了self.load(pdfDocument, scale);方法,在方法的内部又调用了pdfViewer.setDocument(pdfDocument);方法

3.setDocument

在setDocument方法内部,通过调用getPage方法获取到了pdf文档的页面

大致过程如下

  1. 进过在pdf.js内部的一些操作后,通过postmessage发送给pdf.worker.js一个对象

  2. 这时候就会调用pdf.worker.js PDFDocument构造函数的getpage方法

  3. 同时PDFDocument的方法有会去调用catalog构造函数的getpage方法,调用page构造函数,随后会返回一个实例化之后的page对象。调用page构造函数的参数从哪来的呢:

    1.在pdfManager函数内部传入的pdfManager和xref

    pdfManager是通过接口调取返回的一个xhr对象转buffer后在LocalPdfManager构造函数中生成的

    xref这个数据是在PDFDocument构造函数中使用xref构造函数实例化的

    2.pageIndex是构造函数内部的getPageIndex生成的,是PDF页码索引

    3.dict, ref是将pageIndex传入了内部的getPageDict方法生成的

    4.fontCache是RefSetCache构造函数的实例化对象

4.pdf.worker.js page构造函数

  • 内部的annotations方法调用了Annotation构造函数的fromRef方法,把xref对象和内部的annotationRefs方法生成的ref对象作为参数`

  • 调用了xref对象内部的fetchIfRef方法,用ref做为参数,返回一个dict对象

  • 把dict对象传给Util.getInheritableProperty返回一个Sig的字符串,以此调用WidgetAnnotation

  • 进入WidgetAnnotation构造函数内,直接看最后的Util.inherit部分,把WidgetAnnotation构造函数本身和Annotation构造函数和最后一个变量传输过去

  • 最后一个变量会返回一个 { isViewablefunction WidgetAnnotation_isViewable },函数内部判断在page方法中调用时传的fieldtype是不是Sig,如果是返回false,不是就调用parent.isViewable.call(this),然后又进入到了Annotation构造函数的fromRef方法

  • 这时候会进行判断会调用函数,如果注释掉之前的sig的判断,这时候返回值为true,同时就会触发return annotation

最后return了一个数组,数组里的内容就是annotation,同时调用shadow方法给page构造函数绑定了一个属性annotations,属性值为annotation数组。

5.handler的getpage事件

以上操作完成后会执行handler对象的getpage方法,返回数据发送给pdf.js

6.PDF.js的WorkerTransport

PDF.js接收信息后调用WorkerTransport构造函数的getpage方法,返回了一个promise,然后通过执行一些方法后重新把数据发送给viewer.js

7.执行绘制方法

viewer.js获取getpage方法返回的数据后,就调用了PDFPageView.draw方法,最后通过this.pdfPage.render();方法完成绘制过程

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pdf.js和turn.js都是常见的用于网页中展示PDF文件的JavaScript库。 pdf.js是Mozilla开发的一个开源项目,用于在网页中渲染和显示PDF文件。它可以将PDF文件解析成HTML5技术支持的格式,然后利用Canvas和SVG等技术进行绘制,以便在网页中以更佳的视觉效果展示。pdf.js具有高度自定义的能力,可以根据需求自定义样式、布局和用户交互方式。此外,pdf.js还支持导出PDF页面为图片,支持缩放、旋转和分页等功能。 turn.js是一款专门用于在网页中实现翻书效果的JavaScript插件,它可以让网页上的内容以类似真实书籍的方式进行翻页展示。通过turn.js,可以将网页中的内容,如文字、图片、视频等,以翻书的形式进行展示。turn.js可以很好地模拟实际书籍的视觉效果,使得用户在浏览网页时有更加亲切的感受。 结合pdf.js和turn.js,可以实现在网页中以翻书的形式展示PDF文件。首先,使用pdf.jsPDF文件渲染为HTML5格式,然后利用turn.js渲染后的内容呈现为翻书效果。这样,用户可以通过拖拽、点击等方式进行翻页,浏览PDF文件的内容。使用两个库的结合,不仅可以在网页中呈现出高质量的PDF内容,还可以增加交互性和视觉效果。 总而言之,pdf.js和turn.js是两个常用的JavaScript库,可以分别用于处理和展示PDF文件和实现翻书效果。它们的结合使用可以让我们在网页中实现以翻书形式展示PDF文件的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值