# V10.0SP1及更早版本Puppeteer打印补丁操作手册
# 前言
本文作为在线 Wiki 部署手册,用于指导实施人员在明确支持的低版本客户环境安装 Puppeteer 打印标准化补丁。标题中的“V10.0SP1 及以下”不表示任意低版本都可使用,只支持本文列出的 11 个版本。
V11 标准版本请查看同目录《V11发版-Puppeteer打印部署手册.md》。
本次正式补丁名称:V11版本puppeteer打印组件标准化代码低版本迁移补丁
正式补丁汇总包从以下 OBS 地址下载:
https://puppeteer-chromium.obs.cn-north-4.myhuaweicloud.com/patches/puppeteer-print-patch.zip
OBS 对象文件名为 puppeteer-print-patch.zip。该 ZIP 只包含代码补丁,不包含本文、其他 Markdown、图片或部署说明。必须先完整下载并解压该文件,实际结构为:
puppeteer-print-patch.zip
V11版本puppeteer打印组件标准化代码低版本迁移补丁/
01-Tomcat/<版本>/seeyon.zip
02-S1正式PAK/<版本>/<对应版本PAK文件>.pak
03-客开源码/<版本>/src.zip
SHA256SUMS.txt
补丁汇总包不包含部署文档、PrintEngine 和容器镜像,这些内容分别通过在线 Wiki 和本文后续固定 OBS 地址提供。当前代码补丁 SHA256:
6e1a091baa6962035e64adf06bb9eb3b5a4a001d87f7f0436ddb342826f66efe
本文将 OBS 补丁解压后生成的以下目录简称为 <OBS补丁根目录>:
V11版本puppeteer打印组件标准化代码低版本迁移补丁/
本文所有 Tomcat 补丁、S1 PAK 和客开源码路径均从 <OBS补丁根目录> 开始。实施人员应继续查看在线 Wiki,不要在代码补丁 ZIP 中查找部署文档。
# 一、支持版本
| 版本 | OBS 补丁解压后的 Tomcat 文件 | OBS 补丁解压后的 S1 文件 | OBS 补丁解压后的客开源码 |
|---|---|---|---|
| V8.0SP2 | <OBS补丁根目录>/01-Tomcat/V8.0SP2/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.0SP2/QP_2607161354_PUPPETEER-COMMON-V8.0SP2.pak | <OBS补丁根目录>/03-客开源码/V8.0SP2/src.zip |
| V8.0SP2_LTS | <OBS补丁根目录>/01-Tomcat/V8.0SP2_LTS/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.0SP2_LTS/QP_2607161354_PUPPETEER-COMMON-V8.0SP2-LTS.pak | <OBS补丁根目录>/03-客开源码/V8.0SP2_LTS/src.zip |
| V8.1 | <OBS补丁根目录>/01-Tomcat/V8.1/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.1/QP_2607161354_PUPPETEER-COMMON-V8.1.pak | <OBS补丁根目录>/03-客开源码/V8.1/src.zip |
| V8.1SP1 | <OBS补丁根目录>/01-Tomcat/V8.1SP1/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.1SP1/QP_2607161354_PUPPETEER-COMMON-V8.1SP1.pak | <OBS补丁根目录>/03-客开源码/V8.1SP1/src.zip |
| V8.1SP2 | <OBS补丁根目录>/01-Tomcat/V8.1SP2/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.1SP2/QP_2607161354_PUPPETEER-COMMON-V8.1SP2.pak | <OBS补丁根目录>/03-客开源码/V8.1SP2/src.zip |
| V8.2 | <OBS补丁根目录>/01-Tomcat/V8.2/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.2/QP_2607161354_PUPPETEER-COMMON-V8.2.pak | <OBS补丁根目录>/03-客开源码/V8.2/src.zip |
| V8.2SP1 | <OBS补丁根目录>/01-Tomcat/V8.2SP1/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V8.2SP1/QP_2607161354_PUPPETEER-COMMON-V8.2SP1.pak | <OBS补丁根目录>/03-客开源码/V8.2SP1/src.zip |
| V9.0 | <OBS补丁根目录>/01-Tomcat/V9.0/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V9.0/QP_2607161354_PUPPETEER-COMMON-V9.0.pak | <OBS补丁根目录>/03-客开源码/V9.0/src.zip |
| V9.0SP1 | <OBS补丁根目录>/01-Tomcat/V9.0SP1/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V9.0SP1/QP_2607161354_PUPPETEER-COMMON-V9.0SP1.pak | <OBS补丁根目录>/03-客开源码/V9.0SP1/src.zip |
| V10.0 | <OBS补丁根目录>/01-Tomcat/V10.0/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V10.0/QP_2607161354_PUPPETEER-COMMON-V10.0.pak | <OBS补丁根目录>/03-客开源码/V10.0/src.zip |
| V10.0SP1 | <OBS补丁根目录>/01-Tomcat/V10.0SP1/seeyon.zip | <OBS补丁根目录>/02-S1正式PAK/V10.0SP1/QP_2607161354_PUPPETEER-COMMON-V10.0SP1.pak | <OBS补丁根目录>/03-客开源码/V10.0SP1/src.zip |
# 二、总体原则
安装补丁后的机制优先级:
| 优先级 | 机制 | 生效规则 |
|---|---|---|
| 1 | 后台打印引擎模式 | 明确选择传统、本地或远程时优先生效 |
| 2 | PrintEngine 存在性 | 后台未配置且存在 PrintEngine 时使用本地 Puppeteer |
| 3 | 旧配置兼容 | 后台未配置且不存在 PrintEngine 时兼容旧项目化、本地或远程配置 |
生产环境应在后台明确选择打印引擎模式。
本次只支持两种新 Puppeteer 运行方案:本地 PrintEngine 和 新远程容器。不要使用旧 Windows 手工安装 Node/Puppeteer/Chromium 的方式,也不要使用旧容器。
# 三、安装前确认
- 确认客户精确版本、SP、Build ID 和部署形态。
- 确认是否存在客开 class、JSP、JS、Spring 或国际化资源。
- 备份 A8 程序目录、数据库和将被覆盖的文件。
- 校验所选补丁 SHA256。
- 准备回滚文件和维护窗口。
# 四、更新补丁
# 非 S1/Tomcat 环境
使用:
OBS补丁根目录/01-Tomcat/版本/seeyon.zip
安装步骤:
- 停止 OA/Tomcat 服务。
- 解压对应版本
seeyon.zip,确认内部顶层目录为seeyon/。 - 按 zip 内相对路径备份现场同名文件。
- 以
seeyon/为基础目录覆盖客户 A8 对应目录。 - 清理应用缓存和 JSP 编译缓存。
- 启动 OA,检查启动日志和系统参数页面。
- 按测试矩阵验证打印。
不同版本的 seeyon.zip 不得混用。
# S1 标准环境
使用:
OBS补丁根目录/02-S1正式PAK/版本/对应版本PAK文件.pak
安装步骤:
- 停止业务操作并完成程序和数据库备份。
- 在 A8/S1 标准补丁安装工具中选择与客户版本完全一致的 PAK。
- 按标准补丁流程执行校验、安装和重启。
- 检查补丁安装记录、启动日志和目标文件。
- 按测试矩阵验证打印。
禁止手工解压 PAK 覆盖。部分正式 PAK 条目经过加密,普通 ZIP 工具提示需要密码属于正常格式。
# 有客开源码的环境
使用:
OBS补丁根目录/03-客开源码/版本/src.zip
处理步骤:
- 在客户精确源码基线上建立分支。
- 合并
src.zip中的 Java、JSP、JS、Spring 和国际化资源。 - 处理同名文件冲突,不用标准文件直接覆盖客户修改。
- 使用客户原有 JDK、Maven 和依赖配置完成编译。
- 非 S1 环境制作客户专属
seeyon.zip;S1 环境制作客户专属 BPO 输入并生成 PAK。 - 对客户专属包重新执行结构、SHA256、安装和业务验证。
标准运行态补丁和标准 PAK 不作为客开环境的直接覆盖包。
# 五、安装步骤
# 方案1、部署本地 PrintEngine
PrintEngine 不在补丁汇总 ZIP 内。按客户操作系统从以下固定 OBS 对象选择并下载运行包:
| 包名 | 适用环境 | SHA256 |
|---|---|---|
| PupCentos7Amd.7z (opens new window) | CentOS 7 x86_64 | 1fe5e5dc5676ff712b777e5c6857bfc8145dfb7f129dc1f6c53c5c26bfdbcd59 |
| PupLinuxAmd.7z (opens new window) | CentOS 8+、Rocky、openEuler、Ubuntu x86_64 | caf6136c9f4669e0405f7a98ef82037c4f325bd5ba5d262d448a2eec23e5ba9c |
| PupLinuxArm.7z (opens new window) | UOS、麒麟等 ARM64 Linux | 0c96c605b7b6ebdf7e284411ff3fa9e9059864e0a78ec2fcecf5fecd02f60596 |
| PupWinHigh.7z (opens new window) | Windows Server 2016 及以上 | ad8cd0c977efb11ed6e26956ed5a8ef7b360789087f27b5f0958e50eca9759a5 |
校验 SHA256 后,将运行包直接解压到ApacheJetspeed目录同级:
<A8安装根目录>
├── ApacheJetspeed/
└── PrintEngine/
PrintEngine结构:
PrintEngine/
app/
node_modules/
puppeteer-core/
chromium/
node/
fonts/
libs/
不要多套一层压缩包目录。Linux 环境执行以下检查,Windows 不执行:
chmod +x <A8安装根目录>/PrintEngine/node/bin/node
chmod +x <A8安装根目录>/PrintEngine/chromium/chrome
ldd <A8安装根目录>/PrintEngine/chromium/chrome | grep "not found"
需要补充字体时,将字体放入 <A8安装根目录>/PrintEngine/fonts,Linux 执行 fc-cache -fv <A8安装根目录>/PrintEngine/fonts 后重启 OA。
# 方案2、部署远程 Puppeteer 新容器
容器镜像不在补丁汇总 ZIP 内。按宿主机架构从固定 OBS 对象选择镜像,加载后标签统一为:
puppeteer-service:V11-20260403
固定 OBS 下载地址:
| 架构 | 下载地址 | SHA256 |
|---|---|---|
| AMD64 | https://puppeteer-chromium.obs.cn-north-4.myhuaweicloud.com/amd64/puppeteer-service-amd64.tgz | 9444c17fef28fd5e5c65d28cd69fcf425380f6d8bf9c61c3d4638323c264af41 |
| ARM64 | https://puppeteer-chromium.obs.cn-north-4.myhuaweicloud.com/arm64/puppeteer-service-arm64.tgz | 9ed16df8fc6a1f6edf821332a40dc3973afee30b37d336487b56ab378dcb95cf |
下载后先执行 sha256sum <镜像文件名>,确认与上表一致
再执行 docker load -i <镜像文件名>。
启动命令:
# 创建puppeteer目录
mkdir /data/Seeyon/Puppeteer-Service -p
# 启动容器
cd /data/Seeyon/Puppeteer-Service
docker run -d \
--name puppeteer-service \
--restart unless-stopped \
--memory="4g" \
--memory-swap="6g" \
--cpus="4.0" \
--cpu-quota=-1 \
--shm-size="2g" \
--ulimit nofile=65536:65536 \
--ulimit nproc=65536:65536 \
-p 16395:16395 \
-e TZ=Asia/Shanghai \
-e NODE_ENV=production \
-e SAVE_SCREENSHOTS=true \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/screenshots:/app/screenshots \
-v $(pwd)/fonts:/usr/share/fonts:ro \
-v /dev/shm:/dev/shm \
--cap-add=SYS_ADMIN \
--security-opt seccomp=unconfined \
--tmpfs /tmp:rw,noexec,nosuid,size=2g \
--tmpfs /run:rw,noexec,nosuid,size=256m \
puppeteer-service:V11-20260403
需要补充字体时,将字体放入 /data/Seeyon/Puppeteer-Service/fonts
# 刷新字体
docker exec puppeteer-service fc-cache -f
# 查看已安装字体
docker exec puppeteer-service fc-list
健康检查:
curl -fsS http://127.0.0.1:16395/health
# 六、后台配置
系统管理员进入:
系统管理 -> 系统设置 -> 系统参数设置 -> 功能选项 -> 打印引擎模式
后台入口示意:

远程配置示意:

远程模式必须填写:
| 参数 | 填写内容 |
|---|---|
| 远程服务地址 | A8 可访问的容器地址,例如 http://<容器宿主机IP>:16395 |
| A8 callback 地址 | 容器可访问的 OA 地址,例如 https://oa.example.com 或 http://<OA内网IP>:8080 |
外部 HTTPS 与内部 HTTP 的协议或端口不一致时,必须填写真实 A8 callback 地址。
# 七、专项问题说明
# 10.1 HTTPS 转内部 HTTP 端口错误
补丁已提供 A8 callback 地址配置能力。远程容器使用的 OA 地址应以“容器实际可访问”为准,不依赖浏览器访问地址自动转换。
验证时应从容器宿主机或容器内部访问配置的 callback 地址,并确认协议、端口、反向代理和证书均正确。
# 10.2 Windows 本地 Puppeteer 临时目录
本次 11 个版本的完整补丁均已包含 Windows Chrome profile 临时目录治理:
%TEMP%\seeyon-puppeteer
每次打印使用独立会话目录,正常结束后删除本次目录;下一次打印前清理超过 24 小时的历史会话目录。无需再叠加无版本标识的专项 JS 补丁。
# 八、验证清单
| 检查项 | 结果 |
|---|---|
| 客户版本与补丁目录完全一致 | |
| 部署形态与 Tomcat/PAK/客开源码选择一致 | |
| 补丁 SHA256 校验通过 | |
| 后台只出现打印相关配置且国际化正常 | |
| 本地或远程运行环境可用 | |
| A8 callback 地址从容器侧可访问 | |
| 标准打印场景验证通过 | |
| Windows 本地模式临时目录可回收 |
详细测试矩阵见同目录《测试点与影响点.md》。
# 九、回滚建议
- 停止 OA 服务。
- S1 环境按标准补丁工具执行回滚;Tomcat 环境恢复安装前备份文件。
- 恢复原打印配置和原运行环境。
- 清理缓存后启动 OA。
- 验证原打印链路和日志。
# 十、实施结论
标准低版本客户按“精确版本补丁 + PrintEngine 或新容器”部署。S1 使用正式 PAK,非 S1/Tomcat 使用 seeyon.zip,客开环境使用 src.zip 合并后重新编译制包。
快速跳转