# 包目录结构说明

# 包结构介绍

Foxit PDF SDK for Web 提供了如下的三种包:

  • 无字体标准包: FoxitPDFSDKForWeb_8_XXX_NoFonts.zip (不包含字体资源的标准包)
  • 标准包: FoxitPDFSDKForWeb_8_XXX.zip (包含字体的标准包)
  • 完整包: FoxitPDFSDKForWeb_8_XXX_Full.zip (包含字体, 相对标准包增加了一些高级功能,比如:文档比较)

如果您已有字体资源或者只需使用在线字体,那么您可以选择无字体标准包。如果您不需要对字体库进行任何修改以及不介意包的大小,那么可以选择标准包。 如果您需要一些高级功能,比如文档比较功能,那么完整包是最合适的选择。

Package包含如下的文件夹和文件:

目录名 描述
docs 包含API手册和Foxit PDF SDK for Web的开发手册。
examples 一系类demo和示例,用来说明如何充分使用Foxit PDF SDK for Web功能。
external 字体资源(只有full package包才有)。
integrations 包含将Foxit PDF SDK for Web集成到当前主流JavaScript框架的示例 (angular/react.js/vue.js框架的集成示例)。
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。
adaptive.js 响应式设计脚本用来自适应移动设备。
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.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中运行的脚本,用来调用服务器端渲染引擎。

# Package.json

Foxit PDF SDK for Web提供了一个package.json文件,用来帮助开发人员快速部署和使用Web PDF,以及更轻松地将Web PDF集成到他们的项目中。package.json文件内容如下:

{
    "name": "foxit-pdf-sdk-for-web",
    "version": "9.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": "^4.1.0",
        "http-proxy-middleware": "^3.0.0",
        "koa": "^2.7.0",
        "koa-body": "^4.0.4",
        "koa-body-parser": "^1.1.2",
        "koa-router": "^7.4.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",
        "koa-cors": "0.0.16",
        "koa-serve-list": "^1.0.1",
        "koa-static": "^5.0.0",
        "ws": "^7.3.1"
    },
    "dependencies": {
        "@types/hammerjs": "^2.0.36",
        "@types/jquery": "^3.3.29",
        "@types/i18next": "^13.0.0",
        "@babel/runtime": "^7.17.9",
        "@babel/runtime-corejs3": "^7.17.9",
        "@csstools/normalize.css": "^10.1.0",
        "art-template": "^4.13.0",
        "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",
        "flatpickr": "4.6.9",
        "hammerjs": "^2.0.8",
        "human-format": "^0.11.0",
        "i18next": "^23.8.1",
        "i18next-chained-backend": "^0.1.2",
        "i18next-localstorage-backend": "^1.1.4",
        "i18next-xhr-backend": "^1.5.1",
        "jquery": "^3.3.1",
        "jquery-contextmenu": "^2.7.1",
        "jszip": "^3.7.1",
        "lodash": "^4.17.21",
        "moment": "^2.29.1",
        "print-area": "^0.1.4",
        "punycode": "^2.1.1",
        "sortablejs": "~1.9.0",
        "whatwg-fetch": "^3.0.0",
        "xlsx": "^0.17.2",
        "fast-printf": "^1.6.9"
    },
    "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
spectrum-colorpicker
file-saver