SuperAPI AI 工具集

frappe-typst-expert

办公与效率

查看项目

更新于 10-15 23:44

技能介绍

用途:在 Frappe 应用内将 Typst 标记编译为 PDF、PNG、SVG 文档,全部在进程内完成,无需 CLI。模块位于 tweaks/utils/typst.py,并在 safe_exec 中以 typst.build(...) 暴露。

主要能力:build() 支持从 raw 字符串/字节、Frappe File 文档名、文件系统路径或多文件字典加载,返回 TypstBuilder 实例,raw、doc、path、files 四者只能提供一个。TypstBuilder 提供 read_file_path(.typ 或 .tar.gz)、read_file_doc、read_string、read_files 等加载方法并支持链式调用;name 无扩展名时自动补 .typ,默认 main.typ。compile() 返回字节,可指定 format 与 ppi(PNG);失败时经 frappe.throw 抛出 frappe.ValidationError。compile_and_save() 将结果保存为 Frappe File 文档,可设置 attached_to_doctype、attached_to_name、is_private、folder。compile_response() 用于白名单端点,设置 frappe.response 的 filename、filecontent、content_type、type。save_files_as_tar() 可将 builder.files 打包为 tar.gz 保存。query() 可查询元素,结果由 typst.query() 解析 JSON。generate() 为内置白名单 HTTP 端点,通过 /api/method/tweaks.utils.typst.generate?file=FILE-000123&format=pdf&download=1 访问,参数含 file、format、ppi、sys_inputs、download。

使用方式:通过 sys_inputs 传入动态数据,值必须为字符串,复杂类型用 json.dumps 序列化,模板内用 json(bytes(sys.inputs.items)) 反序列化。多文件项目需 tar 包内含 main.typ 或 main 作为入口,可用 save_files_as_tar() 创建并存储,再用 read_file_doc() 或 read_file_path() 读回。

适用场景:Frappe 应用中的发票、报表等文档生成与下载。

限制:sys_inputs 值必须为字符串;多文件 tar 包必须有入口 main.typ;错误经 frappe.throw 抛出,需捕获 frappe.ValidationError。其他收费、平台等信息暂未提供。