实战示例:将英文 PDF 文档转换为 Markdown 并翻译为中文,最后输出为 PDF
本章通过一个完整的自动化流程示例,展示如何利用 n8n 将英文 PDF 文档转换为 Markdown,再调用大语言模型翻译为中文,最终生成中文 PDF 文件。你将系统掌握文件读写、本地命令执行、API 调用、数据处理等节点的组合应用,并了解每一步的衔接与调试方法。
触发与读取原始 PDF
流程起点采用 Manual Trigger 节点,便于测试和调试。随后用 Execute Command 节点调用 PDF 提取转换工具,将 PDF 转为 Markdown 文件。推荐使用 MinerU 将 PDF 转换为 Markdown,还有一些其他工具也可以实现类似功能,详见 PDF 转 Markdown 开源工具深度探讨 。
执行后,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 节点文档 。