Skip to content
全新发布

PDF SDK 与 AI 文档处理

在 GitHub 获取完整的私有化部署SDK 包及 AI 智能文档处理能力,一键部署,快速构建您的文档处理工作流。

部署

本指南介绍生产构建命令、构建流水线和发布产物结构。

构建命令

脚本命令效果
devpnpm --filter @compdfkit/webview devVite 开发服务器(--host 0.0.0.0 --port 3032)。
dev:corepnpm --filter @compdfkit/core build:watchRollup watch + sourcemap(core)。
buildpnpm --filter @compdfkit/webview buildvite buildpackages/webview/dist/
build:corepnpm --filter @compdfkit/core build:prodRollup 生产构建 → webview.min.js + PDFWorker.jswebview/lib/
build:webviewerpnpm --filter @compdfkit/core build:webviewerRollup webviewer 配置 → webviewer.js + webviewer.global.jswebview/lib/
build:releasenode scripts/build-release.mjs运行 build:corebuild:webviewerbuild,再组装 release/

各包脚本

@compdfkit/webview devbuildvite build)、previewtest:unitvitest run --environment happy-dom --root src/)、lint

@compdfkit/core clearrimraf lib)、buildrollup -c)、build:watchbuild:prodcross-env NODE_ENV=production rollup -c)、build:webviewer

构建流水线

完整发布流水线(build:release)按顺序运行三个构建,再组装发布文件夹:

build:core          → packages/webview/lib/webview.min.js, PDFWorker.js
build:webviewer     → packages/webview/lib/webviewer.js, webviewer.global.js
build (webview)     → packages/webview/dist/  (Vite)
scripts/build-release.mjs → release/

core 如何生成到 packages/webview/lib/

  • packages/core/rollup.config.js(两个 bundle):src/worker/compdfkit_worker.js../webview/lib/PDFWorker.js(ES);src/index.js../webview/lib/webview.min.js(ES)。terser 含保留名称列表(WASM 绑定符号如 ComPDFKitJSRect,不可混淆);Babel 目标 edge17/ff60/chrome67/safari10/ie10。
  • packages/core/rollup.webviewer.config.jswebviewer.js../webview/lib/webviewer.js(ES)+ ../webview/lib/webviewer.global.js(UMD,全局 ComPDFKitViewer)。

Vite 配置

packages/webview/vite.config.js

  • base: './'(相对资源路径——对 iframe/S3 托管很重要)。
  • 插件:@vitejs/plugin-vueunplugin-vue-components(自动导入)、vite-svg-plugin(用于 ./src/assets/icons/)。
  • 别名 @./src
  • 配置中开发服务器端口 3000(被 dev 脚本覆盖为 3032)。

packages/webview/lib/ 内容

构建产物 + 预构建引擎资源:webview.min.js(+ .map)、PDFWorker.js(+ .map)、webviewer.jswebviewer.global.js,以及 ComPDFKit.jsComPDFKit.wasmpdf.worker.min.jsDroidSansFallbackFull.ttfTHSarabunNew.ttffont.ffCMYK/,和遗留的 ComPDFKit1/2.*index.js/wasmpdfium.js/wasm

发布结构

scripts/build-release.mjs 复制到:

release/
├── @compdfkit/
│   ├── webviewer.global.js       # UMD 嵌入入口(全局 ComPDFKitViewer)
│   └── webviewer.js              # ES 嵌入入口
└── webviewer/
    ├── index.html
    ├── favicon.ico
    ├── assets/                    # Vite 构建的 webview 资源
    ├── locales/                   # translation-*.json(6 种语言)
    ├── images/
    ├── example/Quick Start Guide for ComPDFKit Web Demo.pdf
    └── lib/
        ├── ComPDFKit.js
        ├── ComPDFKit.wasm
        ├── PDFWorker.js
        ├── DroidSansFallbackFull.ttf
        ├── pdf.worker.min.js
        └── CMYK/

托管

部署时,将 release/webviewer/ 文件夹托管在公开 URL,并将集成方的 path 选项指向它:

javascript
ComPDFKitViewer.init(
  { path: 'https://cdn.example.com/webviewer/', pdfUrl: '...', license: '...' },
  document.getElementById('viewer')
);
  • Vite 配置中的 base: './' 使所有资源路径相对,因此构建可在任意子路径下工作(iframe、S3、CDN)。
  • locales/ 文件夹必须与资源一起托管(i18next-http-backend 加载 ./locales/translation-<lng>.json)。
  • lib/ 文件夹(引擎 + WASM)必须以正确的 MIME 类型提供;.wasm 应以 application/wasm 提供。

CI 中的测试与 Lint

bash
pnpm --filter @compdfkit/webview test:unit   # Vitest + happy-dom
pnpm --filter @compdfkit/webview lint        # ESLint (.vue/.js/.jsx/.cjs/.mjs)

没有工作区级别的统一测试入口。core 包除少量手动运行的 .test.js 文件外没有测试基础设施。

相关