文档与表格
文档与表格
结论先行
产品里自带一个 Office 引擎(LibreOffice Kit),不用装 Office,离线也能转。
两条命令覆盖大部分需求:转 PDF 和 渲染成图片。
一、先把路径拿到
$NODE = "<产品运行时目录>\node.exe"
$CLI = "<产品运行时目录>\node_modules\@deepseek-ai\libreoffice-kit\lib\cli.js"
产品安装后通常在 C:\Program Files\sanshan-kaiwu\resources\runtime\。
二、转 PDF(最常用)
& $NODE $CLI convert --input "C:\work\合同.docx" --output "C:\work\合同.pdf"
- 支持 docx / xlsx / pptx → pdf;
- 源文件不动,输出必须是新文件名;
- 成功返回 JSON,含
outputPath与missingFonts。
验收:读前 4 个字节应为 %PDF,且文件大小 > 1KB。
三、渲染成图片(预览/存档)
$out = Join-Path $env:TEMP ("preview-" + [guid]::NewGuid().ToString('N'))
& $NODE $CLI render --input "C:\work\合同.pdf" --output-dir $out --pages "1"
--output-dir必须是还不存在的目录,命令会创建;- 返回 JSON 清单:每页的
path、width、height; - 目录里会有
manifest.json。
验收:目录里出现 page-0001.png 且体积 > 10KB。
四、生成 Word 文档
没有模板时,用自带脚本生成一个结构干净的 docx(标题 + 若干段落):
& $NODE "<技能目录>\scripts\make-docx.cjs" "C:\work\报价说明.docx" "报价说明" "第一段内容" "第二段内容"
生成后再用 convert 转 PDF 发给客户。
五、已验证记录(2026-11-04)
| 动作 | 输入 | 结果 |
| --- | --- | --- |
| convert | 生成的 合同测试.docx(1,121 字节) | 输出 合同测试.pdf,签名 %PDF,22,212 字节 |
| render | 一份 2 页的扫描 PDF | 第 1 页 → page-0001.png,1190×1684,2.5MB,missingFonts: [] |
六、红线
| 不做 | 原因 |
| --- | --- |
| 覆盖源文件 | 客户原件不可恢复 |
| 转失败就反复重试同一文件 | 浪费时间,应报告限制 |
| 用系统 soffice 或装第三方转换器绕过 | 产品自带引擎已够用 |
| 把含客户信息的文件传到外部服务 | 数据不出本机 |
验收清单
- [ ] 输出路径是新文件,源文件未被改动
- [ ] PDF 前 4 字节为
%PDF且大小 > 1KB - [ ] 渲染出的图片能被打开,不是纯白/纯黑
- [ ]
missingFonts为空,或有明确说明 - [ ] 交付时告诉用户:文件在哪、多少页、有没有缺字体