You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandoc将Markdown转RTF时保留图片?

解决方案:Markdown转带图片的RTF/富文本(macOS)

核心问题

textutil在HTML转RTF时不会下载并嵌入远程图片,导致RTF中图片丢失。以下是两种无需大幅改动现有工作流的替代方案:

方案1:直接用Pandoc生成RTF(推荐)

跳过HTML中转步骤,直接让Pandoc把Markdown转为RTF,它会自动下载远程图片并嵌入到输出文件中,同时保留你的CSS样式。

修改脚本中的命令为:

// 替换原来的两步命令为这一步
await execAsync(`${pandocPath} -f markdown-smart -t rtf -H ${cssHtmlPath} ${tempMarkdownPath} -o ${tempRtfPath}`);

如果需要直接复制到剪贴板,可以生成RTF后再执行:

await execAsync(`pbcopy < ${tempRtfPath}`);

方案2:通过AppleScript将HTML转为剪贴板富文本

保留Pandoc转HTML的步骤,用AppleScript把HTML内容转换成macOS支持的富文本格式并复制到剪贴板,邮件客户端会自动解析并显示图片。

修改脚本如下:

// 保留Pandoc生成HTML的步骤
await execAsync(`${pandocPath} -f markdown-smart -t html -H ${cssHtmlPath} ${tempMarkdownPath} -o ${tempHtmlPath}`);

// 读取HTML内容并转义双引号(避免AppleScript语法错误)
const htmlContent = (await fs.readFile(tempHtmlPath, 'utf8')).replace(/"/g, '\\"');

// 用AppleScript将HTML写入剪贴板
await execAsync(`osascript -e 'set the clipboard to "${htmlContent}" as «class HTML»'`);

这种方式无需生成RTF文件,直接把富文本放到剪贴板,更适合Raycast扩展的使用场景,粘贴到邮件时会自动渲染图片和样式。

补充说明

  • Pandoc处理远程图片时会自动下载并嵌入,无需额外配置;
  • macOS剪贴板的«class HTML»格式被主流邮件客户端(如Mail.app、Outlook)支持,能完整保留图片和样式;
  • 若需自定义RTF样式,可继续通过-H参数传入CSS,Pandoc会将样式转换为RTF支持的格式。

内容的提问来源于stack exchange,提问作者CSEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:12:21