SuperAPI AI 工具集

lovstudio-any2pdf

办公与效率

查看项目

更新于 10-15 16:29

技能介绍

any2pdf 是一个将 Markdown 文件转换为出版级 PDF 的技能,使用 Python 的 reportlab 库实现。它经过在真实中文技术报告上的大量迭代,针对朴素 MD→PDF 转换器容易做错的多个难点进行了处理。

用途 当用户希望把 .md 文件转换为 .pdf,或手头有 Markdown 报告/文档并想要专业排版,或文档包含中英(CJK)混排文字、围栏代码块、Markdown 表格、嵌套列表、本地/远程图片、Obsidian 标注块、emoji、数学公式,或希望在 PDF 中加入封面页、目录、水印时,可以使用本技能。

主要能力

  • 字体系统:macOS 上使用 Palatino(拉丁正文)、Songti SC(CJK 正文)、Menlo(代码),Linux 上自动回退。
  • CJK 包装:_font_wrap() 将 CJK 字符段包裹在 <font> 标签中以实现自动字体切换,避免中文渲染成方框。
  • 混合文本渲染:_draw_mixed() 在 canvas 上处理中英混排文字(封面、页眉、页脚)。
  • 代码块处理:esc_code() 保留缩进与换行,解决 reportlab 把 \n 当空白的问题。
  • 智能表格宽度:按内容长度按比例分配列宽,最小 18mm。
  • 书签系统:ChapterMark flowable 生成 PDF 侧边书签和命名锚点。
  • 标题预处理:_preprocess_md() 拆分形如 # Part## Chapter 的合并标题。
  • 图片处理:本地、相对路径、file:// 和远程 Markdown 图片按比例缩放进正文框架,出错时显示回退文字。
  • 标注渲染:Obsidian 风格 > [!NOTE] 块渲染为主题化方框标注。
  • 公式渲染:行间公式使用可选的 matplotlib mathtext 图片,失败时使用样式化文本回退。
  • Emoji 回退:可用时渲染为缓存的 Twemoji PNG,或有本地 emoji 字体回退。

使用方式 基本命令: python md2pdf/scripts/md2pdf.py --input report.md --output report.pdf --title "My Report" --author "Author Name" --theme warm-academic 除 --input 外所有参数均可选,有合理默认值。

转换前需通过交互式提问确认选项,包括设计风格(a 暖学术、b 经典论文、c Tufte、d 期刊蓝、e 精装书、f 中国红、g 水墨、h GitHub、i Nord 冰霜、j 海洋)、扉页图片(跳过/本地路径/AI 生成)、水印(不加/自定义文字)、封底物料(跳过/图片/纯文字)。用户选择映射到 CLI 参数:风格对应 --theme,扉页对应 --frontispiece,水印对应 --watermark,封底图片对应 --banner,封底文字对应 --disclaimer 与 --copyright。

主题对应的 --theme 值:warm-academic、classic-thesis、tufte、ieee-journal、elegant-book、chinese-red、ink-wash、github-light、nord-frost、ocean-breeze。可用主题包括 warm-academic、nord-frost、github-light、solarized-light、paper-classic、ocean-breeze;每个主题定义页面背景、墨色、强调色、淡化文字、边框、代码背景、水印色调。

架构流程:Markdown → 预处理(拆分合并标题)→ 解析(识别代码围栏)→ Story(reportlab flowables)→ 构建 PDF。

配置参考 常用参数及 frontmatter 键:--input(必填,Markdown 路径)、--output(默认 output.pdf)、--title(默认取第一个 H1)、--subtitle、--author、--date(默认今天)、--version、--watermark、--theme(默认 warm-academic)、--theme-file、--cover(默认 true)、--toc(默认 true)、--page-size(默认 A4,或 Letter)、--frontispiece、--banner、--header-title、--footer-left(默认 author)、--stats-line、--stats-line2、--edition-line、--disclaimer、--copyright、--code-max-lines(默认 30)。显式 CLI 参数优先于 frontmatter 值。

依赖安装 pip install reportlab --break-system-packages 可选公式渲染:pip install matplotlib --break-system-packages Ubuntu/Debian 推荐字体: sudo apt install fonts-dejavu-core fonts-liberation fonts-freefont-ttf fonts-noto fonts-noto-cjk fonts-noto-color-emoji

适用场景 适合把包含中英混排、代码块、表格、图片、标注、公式等技术内容的 Markdown 报告转换为带封面、目录、水印的专业 PDF,覆盖学术论文、技术报告、白皮书、长篇专著等排版需求。

限制 资料未提供价格、平台支持范围、转换速度或效果保证等信息;具体主题数量与名称以资料所列为准,未列出的主题暂未提供。