pdf(Portable Document Format) 的 HTML5 查看器
文件流管理
file:
区分,fs.createReadStream
http:
区分,http.request
/ https.request
=> response
XMLHttpRequest
/ fetch
使用 web worker 保证大文件处理的性能
Promise
定义ReadableStream
定义
在两端消息内用‘暗语’传递状态变更
ReadableStream.start
‘发送请求’ReadableStream.start
的promise
完成,ReadableStream.pull
‘发送暗语-传吧’controller.enqueue()
数据入流;ReadableStream.pull
的promise
完成,controller.close()
onready
-sendtest
-ontest
,做三次握手
确保worker准备好了sendready
-ontest
-sendtest
PostScript 内容按对象存储,页面由对对象的引用构成,文件首位做标识做辨认 线性内容,即只有一个对象,直接按页面展示?
%PDF-${version}
new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d])
new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a])
交叉引用表
不一定有
startxref ${开始位置}
new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66])
wintersmith
根据./config.json
配置构建,加上jsdoc
,交付在gh-pages
分支,用于github-docgulp chromium
src/pdf.js
、src/pdf.worker.js
和web/viewer.js
做webpack
打包输出gulp server
gulp generic
gulp dist-install
git``commit
信息为依据version.json
[
"src/{display,shared}/*.js",
"!src/shared/{cffStandardStrings,fonts_utils}.js",
"src/pdf.js",
"web/*.js",
"!web/{app,pdfjs,preferences,viewer}.js"
]
acorn
做代码解析,构建ASTescodegen
从AST再生成代码default_preferences.json
I18n
文件夹内的文件夹,并验证处理viewer.properties
文件locale.properties