SuperAPI AI 工具集

solo-pdf-print

办公与效率

查看项目

更新于 10-15 21:46

技能介绍

用途:把 HTML 或 Markdown 生成适合 A4 打印的 PDF,重点解决页眉页脚页码、可预期的分页与 @page 控制。工具选用 WeasyPrint,因为它在候选中支持页码页脚、分页控制和 @page 规则。

主要能力与用法:

  • 基本调用:from weasyprint import HTML; HTML(filename="out.html").write_pdf("out.pdf")。
  • 用 @page 设置 size: A4 portrait、margin,并用 @bottom-right 输出 counter(page) " / " counter(pages);@page :first 可去掉首页页码。
  • 分页用 break-before: page、break-inside: avoid、break-after: avoid,而非过时的 page-break-*。
  • 单位用 mm 和 pt,不用 px。
  • Markdown 转 PDF 有现成示例 6-crm/bin/md_to_pdf.py,命令:DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib uv run python bin/md_to_pdf.py --out OUT.pdf FILE1.md FILE2.md。

macOS 注意:WeasyPrint 可能报 OSError: cannot load library 'libgobject-2.0-0',需设置 export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib,脚本、CI 和钩子中都要设置,或在脚本开头 os.environ.setdefault("DYLD_FALLBACK_LIBRARY_PATH", "/opt/homebrew/lib")。

不推荐:headless Chrome --print-to-pdf 可能挂起且不支持 @page margin-boxes;wkhtmltopdf 引擎老旧;pandoc → LaTeX 对单页文档过重。Chrome 仅在页面由 JavaScript 渲染时适用,WeasyPrint 不执行脚本。

字体:系统 Georgia / Times New Roman 覆盖西里尔字母,无需网页字体。

检查:不要只用 pdftotext,用 pdftoppm -f 1 -l 2 -r 76 -png out.pdf /tmp/page 生成 PNG 目视检查溢出、空白页、重复内容和 emoji。

打印建议:字号不小于 10pt,一思一块,超过三页加页码,裁切卡片留 2-3 mm 余量,黑白打印靠字重和边框区分层级。

限制:资料未提供收费、平台支持范围等更多信息。