Typst 如何导出透明背景 PNG?--ppi、--pages 与 {p}/{t} 输出文件命名
2026/9/9 21:53:57 网站建设 项目流程

Typst 如何导出透明背景 PNG?--ppi、--pages 与 {p}/{t} 输出文件命名

【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst

Typst 除了生成 PDF,还可以直接把页面渲染为 PNG 位图:多页文档会输出一张一张独立的 PNG 文件。默认情况下这些 PNG 带有不透明白色背景,如果你的目标是拿到透明背景的 PNG(例如在图像处理软件中叠到其他素材上),需要在文档源码里把页面填充设为none,再用compile子命令配合--ppi--pages控制分辨率与导出页范围。本文基于 Typst 官方文档 PNG 导出参考页 说明完整操作路径。

让背景透明:#set page(fill: none)

Typst 文档明确说明:PNG 可以带透明背景,但默认输出是不透明白色背景的 PNG。要让背景透明,在文档中加入:

#set page(fill: none)

这一行的效果与版本有关:从 0.12.0 起,page.fill设为{none}时 PNG 和 SVG 会输出透明页面,而不是白色页面;新引入的默认值auto则表示 PDF 透明、PNG 和 SVG 为白色(详见 0.12.0 版本记录)。所以在 0.12.0 及以上版本中,想让 PNG 背景透明,必须显式写fill: none,不能依赖默认值。

判断是否生效的方式就是观察导出结果:加入该设置前导出的 PNG 背景为不透明白色,加入后页面底色消失,只保留内容本身。文档同时提醒,PNG 只是像素栅格,其中的文字无法直接复制或被读屏软件识别,需要文字可访问时应改导出 PDF 或 HTML——透明背景只解决视觉叠加问题,不改变这一点。

指定 PNG 输出与 {p}/{t} 文件命名

触发 PNG 导出有两种方式(二选一即可):

  • compilewatch子命令传--format png
  • 或直接把输出文件名写成以.png结尾的形式。

单页文档直接输出一个文件即可,例如:

typst compile document.typ output.png

多页文档则不同:输出文件名必须是一个模板字符串,且至少包含以下占位符之一:

  • {p}:替换为页码;
  • {0p}:替换为零填充的页码(所有页码位数相同,便于排序);
  • {t}:替换为总页数。

例如导出到按页编号的目录:

typst compile --format png document.typ page-{p}.png

如果希望文件名同时体现总页数(如page-1-of-5.png),组合两个占位符:

typst compile --format png document.typ page-{p}-of-{t}.png

用 --ppi 控制分辨率

PNG 位图绑定在固定分辨率上,Typst 按每页的物理尺寸乘以 PPI(每英寸像素数)计算输出像素数。分辨率通过--ppi参数指定,默认值为144

typst compile --format png --ppi 300 document.typ page-{p}.png

文档给出的取值参考是:

  • 桌面印刷常用 300 或 600;
  • 精细图形类专业印刷最高可到 1200;
  • 远距离观看的内容(如海报)可以选小于 300 的值;
  • 仅在屏幕上查看时,智能手机的典型 PPI 约为 400–500。

需要注意文档指出的限制:如果查看设备的分辨率高于导出的 PNG,会看到质量损失——分辨率只应在满足目标用途的前提下选择,而不是无脑拉高。

用 --pages 只导出部分页面

--pages后接逗号分隔的页码数字或连字符分隔的页码区间,区间可以是半开的。文档给出的示例:

typst compile --format png --pages 2,3,7-9,11- document.typ page-{p}.png

这里2,3,7-9,11-表示导出第 2、3、7 到 9 页,以及第 11 页到最后一页。该选项在 0.12.0 版本中引入(见 0.12.0 版本记录)。文件名中的{p}只会被实际导出的页码替换,因此配合区间筛选时输出文件与所选页一一对应。

一条完整的导出命令

把上面几部分组合起来,导出「透明背景、300 PPI、仅前 3 页」的 PNG:

typst compile --format png --ppi 300 --pages 1-3 document.typ page-{p}.png

前提是document.typ中已写入#set page(fill: none)。执行后应得到page-1.pngpage-2.pngpage-3.png三个文件,在支持透明度的查看器中打开可见背景透明、内容完整;若看到白色底,先确认文档中的page.fill设置是否生效。

限制与注意事项

  • 文字不可提取:PNG 内文字不经 OCR 无法复制,需要可访问文本时改用 PDF/HTML 导出。
  • 分辨率绑定:PPI 选得低于查看设备实际分辨率会出现质量损失,文档未提供其他补救手段,只能重新导出更高分辨率。
  • 命名规则只在多页时强制:单页输出可以直接给文件名,多页输出则模板字符串中至少要有一个{p}{0p}{t},否则无法区分各页文件。
  • 除命令行外,Typst 网页应用(File > Export as > PNG)也提供 PPI 和页范围(All pages / Current page / Custom ranges)的配置选项,页范围语法与--pages一致;透明背景同样由文档源码中的#set page(fill: none)控制。

【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询