「PDF 生成」是「龙虾部署大师」技能市场中的文档生成技能:它从 HTML、Markdown、字符串或结构化内容直接产出排版规范的 PDF,适配报告、发票、合同、证书和简历等场景,能自动选择渲染引擎、处理中日韩字体并规避乱码,保证在 Windows、macOS、Linux 上输出稳定。
技能效果
把Markdown周报生成PDF时,它内嵌中文字体输出A4文档,保留了表格样式和页眉。

把文档导成 PDF,为什么总不省心
生成 PDF 看似简单,落地时却常踩坑:把 Markdown 或 HTML 转成 PDF,表格错位、分页断在奇怪的地方;正式文档要页眉页脚、品牌样式,临时拼出来的工具往往支持不全;最常见的是中文 PDF 出现乱码或方块字——很多渲染引擎默认不嵌入 CJK 字体。同一份文档在不同系统上跑,结果还可能不一致,交付前总要反复检查。
这个技能能帮你产出什么
它把"内容"和"稳定输出 PDF"两件事接上。来源上,它能从 HTML、Markdown 或短文本生成带版式控制的 PDF;引擎上,它统一通过脚本执行,自动在 weasyprint、xhtml2pdf、reportlab、fpdf2 之间选择,并检测 CSS 支持程度、报告降级等级和风险;字体上,它专门处理中文、日文、韩文的字体检测、嵌入和乱码规避;模板上,它为报告、合同、证书、发票和简历提供版式指引。它还强调先写完整 HTML 文件、用 ASCII 文件名、嵌入 CSS 与 @page 设置,以此保证跨平台输出稳定。
用前须知
该技能无需外部 API Key,但需要 Python 环境。它会按 setup 流程检查 weasyprint、xhtml2pdf、reportlab、fpdf2 以及 CJK 字体;在 Windows 上要支持完整 CSS 渲染,可能还需 GTK3。
怎么用它
用法是把内容和对成品的要求用自然语言交给它,不必指定用哪个引擎。例如可以这样对它说:
可以这样对它说
- "把这份 Markdown 周报生成中文 PDF,保留表格样式和页眉。"
- "用这些订单数据做一份发票 PDF,标题、抬头、金额和税号都标清楚。"
- "把这份 HTML 合同导出成 PDF,中文换行别乱掉,版式要正式可打印。"
它适合这些场景:把结构化业务报告或 Markdown 文档转成可交付的 PDF;生成带品牌样式、表格、页眉页脚和分页控制的正式文档;中文 PDF 出现乱码或方块字、需要可靠选择 CJK 渲染引擎;在 Windows、macOS 或 Linux 上批量生成合同、证书或简历。它适合需要本地生成正式 PDF 的运营、财务、法务、教育、HR 和开发团队,尤其适合有中文排版和跨平台要求的工作流。
大家常问
HTML 转 PDF 时中文为什么会出现乱码或方块字,字体嵌入到底是在做什么
HTML 是流式渲染、能动态回落字体;PDF 是固定页面,每个字符都写死「用哪个字体、哪个字形编号、画在哪」。字体没嵌入或 ToUnicode CMap 映射错,PDF 阅读器找不到对应字形就退回 .notdef 方块,或映射到错字成乱码。字体嵌入就是把字形数据(多用子集化)打包进 PDF,让文件不再依赖阅读器本地字体。

可搜索 PDF 和扫描型 PDF 是什么意思,怎么区分双层 PDF 和单层 PDF
PDF 页面由文本对象和图像对象组合。扫描型 PDF 整页只有图像,字符被拍平成像素,无法选中或搜索;可搜索 PDF 含文本对象,能选词复制。双层 PDF 是图像在底层做视觉、OCR 文字层透明叠在顶层(Tr 3 不可见),看着像扫描件但可全文检索。选词时高亮贴合单字=有文本层,整页框选不到字=纯图像。

PDF/A 是什么格式,和普通 PDF 相比为什么更适合长期归档
PDF/A 是 ISO 19005 定义的 PDF 严格子集,把所有「依赖外部环境才能确定的渲染决策」全部砍掉:强制嵌入所有字体、禁止 JavaScript / 音视频 / 加密、禁止透明与图层、必须声明输出意图固化颜色、强制 XMP 元数据、压缩算法限定稳定的 FlateDecode。普通 PDF 几十年后字体丢失或解码器停更就会花屏,PDF/A 自包含、确定性渲染。

HTML 转 PDF 时表格、标题经常断在页底是什么原理,@page 和 page-break 解决的是什么问题
HTML 是无限流,PDF 是定长分页,引擎用贪婪填充把流压进有限页框,表格行被截成上下两半、标题孤悬页底就是这么来的。@page 定义页框(A4 尺寸、页边距、页眉页脚 margin box),决定「能装多大」;page-break-inside: avoid 让表格/代码块尽量整块下移、page-break-after: avoid 防止孤儿标题,配合 widows/orphans 收敛断行位置。

注:技能的实际效果与所选用的 AI 模型能力有关,不同模型下的表现可能存在差异。

提示