实战示例:将英文 PDF 文档转换为 Markdown 并翻译为中文,最后输出为 PDF
本章通过一个完整的自动化流程示例,展示如何利用 n8n 将英文 PDF 文档转换为 Markdown,再调用大语言模型翻译为中文,最终生成中文 PDF 文件。你将系统掌握文件读写、本地命令执行、API 调用、数据处理等节点的组合应用,并了解每一步的衔接与调试方法。
触发与读取原始 PDF
流程起点采用 Manual Trigger 节点,便于测试和调试。随后用 Execute Command 节点调用 pandoc
工具,将 PDF 转为 Markdown 文件。配置命令如:
pandoc /Users/alice/Documents/input.pdf -f pdf -t markdown -o /Users/alice/Documents/output.md
执行后,Markdown 文件会生成在指定路径。接着用 Read Binary File 节点读取该 Markdown 文件内容,设置 Output Data In Field 为 data
,以 Base64 编码存入 $binary.data
,方便后续处理。
提示:如未安装 pandoc,可用
brew install pandoc
安装。确保 n8n 环境能找到 pandoc 命令。
Markdown 二进制数据转为纯文本
Read File 节点输出的 Markdown 内容为 Base64 编码。用 Code 节点(JavaScript)将其转为字符串:
const buffer = await this.helpers.getBinaryDataBuffer('data');
const mdText = buffer.toString('utf8');
return [{ json: { markdown: mdText } }];
这样输出的 $json.markdown 即为英文 Markdown 文本。
调用 Gemini 翻译 Markdown
用 HTTP Request 节点调用 Gemini API,将 Markdown 翻译为中文。配置:
- Method: POST
- URL:
https://api.gemini.com/v1/chat/completions
- Authentication: Header Auth,添加
Authorization: Bearer YOUR_GEMINI_API_KEY
和Content-Type: application/json
- Body:
{
"model": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "请将以下 Markdown 内容翻译为中文,并保持格式:\n{{$json[\"markdown\"]}}"}
]
}
表达式 {{$json["markdown"]}}
注入上一步输出。执行后,响应的 choices[0].message.content
即为中文 Markdown。
更多 API 配置详见 n8n HTTP Request 节点文档。
提取翻译后的 Markdown
用 Set 节点提取 HTTP 节点输出的中文 Markdown:
- 新增字段
cnMarkdown
,值为表达式:{{$node["HTTP Request"].json["choices"][0]["message"]["content"]}}
这样即可获得翻译后的中文 Markdown 字符串。
生成中文 PDF 文件
将中文 Markdown 保存为临时文件,再用 pandoc 转为 PDF:
- 用 Write Binary File 节点,将
cnMarkdown
写入/Users/alice/Documents/output_cn.md
。 - 用 Execute Command 节点运行:
pandoc /Users/alice/Documents/output_cn.md -o /Users/alice/Documents/output_cn.pdf
执行后即可得到中文 PDF 文件。
可用 Read Binary File 节点读取 PDF,再通过 Email 节点发送或 Webhook Respond 返回。
流程扩展与自动化场景
本流程可扩展为 API 服务或定时任务:
- 用 Webhook Trigger 支持文件上传,实现对外 PDF 翻译 API
- 用 Schedule Trigger 定期扫描文件夹自动翻译 PDF
n8n 支持多种节点组合,灵活应对实际需求。更多节点用法见 n8n 节点文档。