pdf.js源码解析-渲染的时序分析

news/发布时间2024/5/20 19:36:26

首先来一张总结的图,也就是pdf.js在解析和渲染pdf的一个时序图,下图:

首先要明白,pdf.js在渲染pdf的时候是做分层渲染,也就是时间展现的内容是通过canvas进行绘制的,而我们通过鼠标进行选择时候的内容是通过dom进行普通渲染,也就是 <div>123</div> 这样的普通组件,只是通过设置透明度让内容不直接肉眼可见,但是能够让用户使用鼠标将内容进行选择以及在进行搜索的时候显示背景高亮的。
那么首先来看看在canvas上pdf.js是如果一步步让PDF的内容显示到界面上的:

  • 解析PDF文件内容 initialize方法,是pdf.js中对pdfviewer的各种组件的初始化
  • open方法,是将PDF文件加载解析,将二进制数据读取出来之后构造成PDFDocument对象
  • setDocument通过将解析的PDFDOcument对象设置,进行pdf的pageview的设置
  • 之后通过forceRendering进行渲染PDF的内容,会在渲染进程中render_enqueue中继续渲染内容
  • 调用canvas.js中的方法对内容进行渲染,使用showText等方法将文本绘制到canvas中去
  • 在完成canvas的渲染之后,会继续渲染textLayer的内容
    以上顺序便是一个简单的pdf.js的解析和绘制的顺序,具体的内容可以查看上面时序图,标记了具体的js文件和方法的顺序。
    最后注意一下,由于对部分promise的内容不是理解的特别深入,所以其中的部分顺序可能不一定正确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.diaolansx.cn/news/33405357.html

如若内容造成侵权/违法违规/事实不符,请联系吊兰实现网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

[UE 虚幻插件 DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明

本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。下载连接在文章最后。数据库连接 【 Create Postgre SQL 】输入:Host:数据库IP地址。Port: 数据库开放端口。User: 数据库用户名。Password:数据库密码。DBName:指定连接的数据库库名。输出:Success:返回数据库是…

五一假期学习总结:从DevOps到SRE

五一假期,没出远门,带娃露营玩水玩沙骑平衡车,累的不亦乐乎。同时,也刷了一门极客时间的课程《SRE实战手册》,给我带来了一些新的认知,我将这些认知整理了以下,特此总结分享与你,强烈建议已经实践了DevOps的童鞋了解一下SRE。大家好,我是Edison。 五一假期,没出远门,…

Arduino安装esp32-cam

没买下载主板的可使用usb转串口模块进行烧录,接线方式可参考arduino-esp32-cam环境配置和例程使用。 2. 软件 2.1 arduino下载安装 官网https://www.arduino.cc/en/main/software下载,我的版本是2.1.0,IDE默认安装路径为C盘,自己可以选择其他盘进行安装。 2.2 arduino配置e…

[转帖]长连接黑洞重现和分析

https://plantegg.github.io/2024/05/05/%E9%95%BF%E8%BF%9E%E6%8E%A5%E9%BB%91%E6%B4%9E%E9%87%8D%E7%8E%B0%E5%92%8C%E5%88%86%E6%9E%90/ 长连接黑洞重现和分析 这是一个存在多年,遍及各个不同的业务又反反复复地在集团内部出现的一个问题,本文先通过重现展示这个问题,然后…

[转帖]Linux内核版本升级,性能到底提升多少?

https://plantegg.github.io/2019/12/24/Linux%E5%86%85%E6%A0%B8%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%EF%BC%8C%E6%80%A7%E8%83%BD%E5%88%B0%E5%BA%95%E6%8F%90%E5%8D%87%E5%A4%9A%E5%B0%91%EF%BC%9F%E6%8B%BF%E6%95%B0%E6%8D%AE%E8%AF%B4%E8%AF%9D/ 背景 X 产品在公有云售…

WDS+MDT网络启动自动部署windows(十五)使用it天空万能驱动

简介: 虽然我们可以使用dism这样的工具来备份驱动,并通过适当的厂家、型号来区分并自动注入驱动,它没万能驱动用着方便呀,还得去备份。 本文目标:在MDT部署时使用it天空的万能驱动。 下载 或许是我脑子坏掉了,印象中不是这个域名。 IT天空 - 新的十年,新的天空 (itsk.co…