PDF生成

Frappe 使用三种引擎之一将打印格式转换为 PDF。

适用于 Frappe v16 及更高版本。

引擎 用途 说明
Chromium 在编辑器中创建的格式(默认)、标准格式,以及当打印设置中指定为 chrome 时的 HTML 格式 能正确渲染现代 HTML 和 CSS。首次需要时会自动下载到 bench 的 chromium 文件夹中,也可以提前通过 bench setup-chrome 下载。
Typst 在编辑器中创建的格式,且 PDF 渲染器 设置为 Typst(快速) 实验性功能。速度更快,适合批量打印。仅支持部分功能。
wkhtmltopdf 当打印设置中指定为 wkhtmltopdf 时的 HTML 格式 已不再维护。无法渲染多列或 flexbox 布局。仅为兼容旧版 HTML 格式而保留。

注意:wkhtmltopdf 在版本 17 中已被移除。所有 PDF 均由 Chromium 生成,设置为 wkhtmltopdf 的格式在迁移时会自动切换为 Chromium。

哪种引擎负责打印格式

  1. 在编辑器中创建的格式使用其自身的 PDF 渲染器 设置:Chromium 或 Typst。
  2. 其他格式如果设置了自身的 PDF 生成器,则使用该设置。
  3. 否则,使用打印设置中的 PDF 生成器。

Typst 无法打印的内容

在你选择 Typst 之前,编辑器会检查格式,并列出所有阻碍项:

  • 自定义 HTML 块和字段模板;
  • 格式或字段上的自定义 CSS,且使用了 Typst 无法转换的属性;
  • 除二维码以外的条形码;
  • 从网址加载的图片;
  • 非十六进制颜色值;
  • 带有自定义 CSS、HTML 或网络图片的信头。

如果使用 Typst 的格式之后出现了上述任一情况,打印会失败并给出明确的错误提示,而不会静默切换引擎。

故障排查

问题 需要检查的内容
PDF 中列堆叠在一起 该格式是用 wkhtmltopdf 打印的。请在打印设置中将 PDF 生成器 设为 chrome。
第一个 PDF 耗时很长 正在下载 Chromium。之后的 PDF 会很快。
在没有网络的服务器上 PDF 生成失败 无法下载 Chromium。请在有网络的地方运行 bench setup-chrome,或在 common_site_config.json 中将 chromium_path 设置为已安装的 Chromium。
PDF 中字体看起来不一样 在格式的 字体 中使用 Google Font 名称,以便 PDF 引擎能够加载它。
  • 打印格式编辑器
  • 打印设置