# 包目录结构说明
# 包结构介绍
在 10.0 版本之前,Foxit PDF SDK for Web 提供了如下的三种包:
- 无字体标准包: FoxitPDFSDKForWeb_9_XXX_NoFonts.zip (不包含字体资源的标准包)
- 标准包: FoxitPDFSDKForWeb_9_XXX.zip (包含字体的标准包)
- 完整包: FoxitPDFSDKForWeb_9_XXX_Full.zip (包含字体, 相对标准包增加了一些高级功能,比如:文档比较、高级编辑功能和动态XFA)
如果您已有字体资源或者只需使用在线字体,那么您可以选择无字体标准包。如果您不需要对字体库进行任何修改以及不介意包的大小,那么可以选择标准包。 如果您需要一些高级功能,比如文档比、高级编辑功能或者动态XFA,那么完整包是最合适的选择。
从 10.0 版本开始,Foxit PDF SDK for Web 只提供完整包,根据License加载单独授权的功能,并添加了3D功能。
- 完整包: FoxitPDFSDKForWeb_10_XXX.zip
Package包含如下的文件夹和文件:
文件夹/文件 | 描述 |
---|---|
docs | 包含API手册和Foxit PDF SDK for Web的开发手册。 注意:HTML版本的开发者指南是使用VuePress构建的,不支持双击直接打开。需要启动HTTP服务器并通过Web浏览器访问。此外,其包括一些可运行的示例,需要启用WebPDFJRWorker.js,以便在支持HTTP服务器的环境中正确运行。 |
examples | 一系列 demo 和示例,用来说明如何充分使用 Foxit PDF SDK for Web 功能。 |
external | 字体资源。 |
lib | Foxit PDF SDK for Web 核心库。 |
server | Web viewer 中使用的一系列基于服务器的应用程序所需的 http-server 和 Node.js 脚本。 |
legal.txt | 法律和版权信息。 |
package.json | 项目描述文件。 |
lib
文件夹包括如下的文件:
文件夹/文件 | 描述 |
---|---|
jr-engine | 前端渲染引擎。 |
locales | 支持的国际化语言。不同语言的资源文件按标签放置在不同的目录下。 |
PDFViewCtrl | PDFViewCtrl 库附加的 plugin。 |
stamps | Stamp 资源文件,图片文件和模板。 |
assets | 包含文档比较功能需要用到的模板资源文件,当前仅在完整包中包含此目录。 |
uix-addons | UIExtension 库附加的 plugin。 |
PDFViewCtrl.css | PDFViewCtrl viewer UI 样式的 CSS 文件。 |
PDFViewCtrl.full.js | PDFViewCtrl viewer 库的完整脚本文件。 |
PDFViewCtrl.js | 无第三方库的 PDFViewCtrl viewer 库的脚本文件。 |
PDFViewCtrl.polyfills.js | PDFViewCtrl 所依赖的 polyfill 脚本文件,用于兼容不同的浏览器。 |
PDFViewCtrl.vendor.js | PDFViewCtrl 所使用的第三方库 (列表见后文)。 |
preload-jr-worker.js | 用于并行加载 JS 引擎资源以提升 viewer 加载速度的 worker 脚本文件。 |
UIExtension.css | UI 样式默认的 CSS 文件。 |
UIExtension.dark-variable.css | 用于暗黑主题的样式文件。 |
UIExtension.vw.css | 使用 vmin unit 的 CSS 文件。 |
UIExtension.full.js | UIExtension viewer 库的完整脚本文件。 |
UIExtension.js | 无第三方库的 UIExtension viewer 库的脚本文件。 |
UIExtension.polyfills.js | UIExtension 所依赖的 polyfill 脚本文件,用于兼容不同的浏览器。 |
UIExtension.vendor.js | UIExtension 所使用的第三方库 (列表见后文)。 |
WebPDFJRWorker.js | Web Worker 中运行的脚本,用来调用前端渲染引擎。 |
WebPDFSRWorker.js | Web Worker 中运行的脚本,用来调用服务器端渲染引擎。 |
*.d.ts | "d.ts"文件用于为TypeScript 提供有关用JavaScript 编写的API 的类型信息,目的在于让 IDE 能够识别它并提供代码提示,以及在编译时执行静态类型检查。在提供便利的同时也保证了接口调用的准确性。 |
# 静态库与动态库
在 10.0 版本之前,Foxit PDF SDK for Web 使用的底层库是静态库。 从 10.0 版本开始,Foxit PDF SDK for Web 使用的底层库是动态库。
# 动态库模块划分
从 10.0 版本开始,动态库模块被划分为主模块和侧模块。
主模块:
- gsdk.wasm
侧模块: (按需加载)
- compare.wasm
- pageeditor.wasm
- touchup.wasm
- xfa.wasm
- 3d.wasm
- lr.wasm
- Pageformat.wasm
- docprocess.wasm
模块名 | 功能 | 依赖 |
---|---|---|
gsdk.wasm | 提供基础功能和Redact功能。 | pageformat.wasm lr.wasm docprocess.wasm optimizer.wasm |
compare.wasm | Overlay Compare功能依赖该模块。 | lr.wasm |
pageeditor.wasm | Paragraph-based editor (高级编辑器) 依赖该模块。 | lr.wasm |
touchup.wasm | 高级编辑器的 EditText 和 AddText 功能依赖该模块。 | lr.wasm |
xfa.wasm | 动态XFA表单功能依赖该模块。 | lr.wasm |
3d.wasm | PDF 3D功能依赖该模块。 | 无 |
optimizer.wasm | 数字图章功能依赖该模块。 | 无 |
lr.wasm | Layout Recognition engine (布局识别引擎) 模块为高级功能提供基础支持。当触发依赖的相关模块时,它将被加载。 | 无 |
Pageformat.wasm | Header&Footer 和 Watermark 功能依赖该模块。 | 无 |
docprocess.wasm | 表单识别功能依赖该模块。 | 无 |
# Package.json
Foxit PDF SDK for Web 提供了一个 package.json 文件,用来帮助开发人员快速部署和使用 Web PDF,以及更轻松地将 Web PDF 集成到他们的项目中。package.json 文件内容如下:
{
"name": "@foxitsoftware/foxit-pdf-sdk-for-web-library",
"version": "10.0.0",
"description": "Foxit pdf sdk for web.",
"author": "Foxit Software Inc.",
"main": "./lib/UIExtension.full.js",
"types": "./lib/UIExtension.full.d.ts",
"typings": "./lib/UIExtension.full.d.ts",
"scripts": {
"start": "concurrently --kill-others \"npm run start-http-server\" \"npm run start-snapshot-server\"",
"start-snapshot-server": "node ./server/snapshot/src/index -p 3002",
"start-http-server": "node ./server/index"
},
"license": "Commercial",
"devDependencies": {
"boxen": "^4.1.0",
"chalk": "^2.4.1",
"concurrently": "^8.2.2",
"http-proxy-middleware": "^3.0.0",
"koa": "^2.7.0",
"koa-body": "^4.0.4",
"koa-body-parser": "^1.1.2",
"koa-cors": "0.0.16",
"koa-router": "^7.4.0",
"koa-serve-list": "^1.0.1",
"koa-static": "^5.0.0",
"koa2-connect": "^1.0.2",
"lru-cache": "^4.1.3",
"raw-body": "^2.3.3",
"require-dir": "^1.0.0",
"serve-handler": "^6.0.2",
"sockjs": "^0.3.21",
"ws": "^7.3.1"
},
"dependencies": {
"@csstools/normalize.css": "^10.1.0",
"@types/hammerjs": "^2.0.36",
"@types/jquery": "^3.3.29",
"bootstrap-datepicker": "^1.9.0",
"core-js": "3.35.1",
"dayjs": "^1.11.1",
"dayjs-plugin-utc": "^0.1.2",
"dialog-polyfill": "^0.4.10",
"dom4": "^2.1.4",
"es6-promise": "^4.2.5",
"eventemitter3": "^3.1.0",
"fast-printf": "^1.6.9",
"flatpickr": "4.6.9",
"hammerjs": "^2.0.8",
"human-format": "^0.11.0",
"i18next": "^23.8.1",
"i18next-chained-backend": "^4.6.2",
"i18next-localstorage-backend": "^4.2.0",
"i18next-xhr-backend": "^3.2.2",
"jquery": "^3.4.1",
"jquery-contextmenu": "^2.7.1",
"jszip": "^3.7.1",
"lodash": "^4.17.21",
"papaparse": "^5.4.1",
"print-area": "^0.1.4",
"punycode": "^2.1.1",
"sortablejs": "~1.9.0",
"whatwg-fetch": "^3.0.0"
},
"resolutions": {
"jquery": "^3.4.1",
"core-js": "3.35.1",
"qs": ">=6.0.4"
},
"overrides": {
"jquery": "^3.4.1",
"core-js": "3.35.1",
"qs": ">=6.0.4"
},
"serve": {
"port": 8080,
"public": "/",
"proxy": {
"target": "http://127.0.0.1:3002",
"changeOrigin": true
}
},
"files": [
"lib",
"server",
"legal.txt",
"locales_changelog.txt",
"MigrationNode.txt",
"ReleaseNote.txt"
]
}
# Foxit PDF SDK for Web 使用的第三方库
Foxit PDF SDK for Web 提供了两种版本的 JS 文件:包含第三方库的完整版本的 JS 文件和不包含第三方库的常规的 JS 文件。如果您的工程已经使用了 SDK 中包含的第三方库,那么您不需要再安装该库。
PDFViewCtrl.full.js 脚本包含:
- PDFViewCtrl.full.js: PDFViewCtrl viewer 库的完整脚本文件。
- PDFViewCtrl.polyfills.js: PDFViewCtrl 所依赖的 polyfill 脚本文件,用于兼容不同的浏览器。
- PDFViewCtrl.vendor.js: PDFViewCtrl所使用的第三方库 (列表见后文)。
- PDFViewCtrl.js: 无第三方库的 PDFViewCtrl viewer 库的脚本文件。
因此,PDFViewCtrl.polyfills.js
+ PDFViewCtrl.vendor.js
+ PDFViewCtrl.js
= PDFViewCtrl.full.js.
以下两种形式是等效的:
<script src="../FoxitPDFSDKForWeb/lib/PDFViewCtrl.full.js"></script>
和
<script src="../FoxitPDFSDKForWeb/lib/ PDFViewCtrl.polyfills.js"></script>
<script src="../FoxitPDFSDKForWeb/lib/PDFViewCtrl.vendor.js"></script>
<script src="../FoxitPDFSDKForWeb/lib/PDFViewCtrl.js"></script>
PDFViewCtrl.vendor.js
包含的第三方库如下所示:
jquery
i18next
i18next-chained-backend
i18next-localstorage-backend
i18next-xhr-backend
jquery-contextmenu
dialog-polyfill
hammerjs
eventemitter3
UIExtension.full.js脚本包含:
- UIExtension.full.js: UIExtension viewer 库的完整脚本文件。
- UIExtension.polyfills.js: UIExtension 所依赖的 polyfill 脚本文件,用于兼容不同的浏览器。
- UIExtension.vendor.js: UIExtension 所使用的第三方库 (列表见后文)。
- UIExtension.js: 无第三方库的 UIExtension viewer 库的脚本文件。
因此, UIExtension.polyfills.js
+ UIExtension.vendor.js
+ UIExtension.js
= UIExtension.full.js.
以下两种形式是等效的:
<script src="../FoxitPDFSDKForWeb/lib/UIExtension.full.js"></script>
和
<script src="../FoxitPDFSDKForWeb/lib/UIExtension.polyfills.js"></script>
<script src="../FoxitPDFSDKForWeb/lib/UIExtension.vendor.js"></script>
<script src="../FoxitPDFSDKForWeb/lib/UIExtension.js"></script>
UIExtension.vendor.js
包含的第三方库如下所示:
jquery
i18next
i18next-chained-backend
i18next-localstorage-backend
i18next-xhr-backend
dialog-polyfill
hammerjs
eventemitter3
file-saver
快速运行示例 →