概述
您可以使用 ONLYOFFICE Document Builder 通过命令行(CLI)从 .js 脚本文件生成文档。要启动它,请运行:
- Windows
- Linux
- macOS
docbuilder.exe mydocument.js
documentbuilder mydocument.js
documentbuilder mydocument.js
如果从其他文件夹运行,请使用可执行文件的完整路径。将 mydocument.js 替换为脚本文件的路径。
有关文件结构和语法规则的更多信息,请访问脚本文件章节。
服务器集成
有关在服务器上使用不同编程语言(C#、Node.js、PHP、Ruby)的 Document Builder CLI 示例,请参阅 document-builder-integration 仓库。
builder 与 builderJS 的区别
有两个对象可用于处理文档。两者都可以访问 CDocBuilder 方法,但它们处理 JavaScript 变量的方式不同。
| 对象 | 描述 | JS 变量 |
|---|---|---|
| builder | 逐行解析器。最适合具有静态值的简单脚本。 | 用 jsValue 包装:"jsValue(myVar)" |
| builderJS | 原生 JavaScript 包装器。最适合动态值和复杂逻辑。 | 直接使用:myVar |
示例
const outputPath = "result.docx";
// builder - 需要 jsValue 包装
builder.CreateFile("docx");
builder.SaveFile("docx", "jsValue(outputPath)");
builder.CloseFile();
// builderJS - 直接使用变量
builderJS.CreateFile("docx");
builderJS.SaveFile("docx", outputPath);
builderJS.CloseFile();
错误示范
const outputPath = "result.docx";
builder.SaveFile("docx", outputPath); // 无法工作!
builderJS.SaveFile("docx", "jsValue(outputPath)"); // 无法工作!
处理多个文件
Document Builder 一次只能处理一个文件。要在脚本中处理多个文件,请在打开另一个文件之前关闭当前文件:
builderJS.CreateFile("docx");
// ... 处理第一个文档
builderJS.SaveFile("docx", "first.docx");
builderJS.CloseFile();
builderJS.CreateFile("xlsx");
// ... 处理第二个文档
builderJS.SaveFile("xlsx", "second.xlsx");
builderJS.CloseFile();
OpenTmpFile
builderJS 对象在 CDocBuilder 之外还提供了一个额外的 OpenTmpFile 方法。要打开另一个文件进行操作(文档比较、邮件合并等)而不影响主文档:
const tmpFile = builderJS.OpenTmpFile("document.docx");
返回的对象具有以下方法:
| 名称 | 描述 |
|---|---|
| IsValid | 如果临时文件有效,则返回 true。 |
| GetBinary | 返回包含 doct/pptt/xlst 二进制内容的 Uint8Array。 |
| GetFolder | 返回包含文件内容的临时文件夹路径。 |
| Close | 关闭文件并删除临时文件夹内容。 |
| GetImageMap | 返回包含 imageId -> imagePath 键值对的字典,用于插入文档。 |
传递参数
您可以使用 --argument 标志从命令行向脚本传递参数。参数以 JSON 对象形式传递,并通过全局 Argument 对象访问。
有关详细信息和示例,请参阅使用命令行参数。
GlobalVariable
使用全局 GlobalVariable 对象在文档之间共享数据。变量在关闭文件后仍然存在,可以在随后打开的文件中访问。
有关详细信息和示例,请参阅在文件之间共享数据。