能力入口 · 本地维护插件
Markdown 导出 PDF
把 Markdown 稳定变成可交付 PDF,并防止页数、中文字体、分页或旧输出看起来成功但实际不对。
正式源码已更新 / 当前入口运行待验先看怎么用
你不需要记住 Skill 名,直接说需求就行
什么时候用
- Markdown 需要正式 PDF
- 需要指定视觉样式或演示版式
- 需要实际页数符合要求,或控制哪里换页
- 中文文件名和路径必须稳定
可以直接这样说
例如把一篇中文讲义导出为规定页数的 PDF。它会选择合适样式,生成后核对源文件指纹、页数和关键文字。
最后会得到什么
得到与当前 Markdown 和样式对应、通过页数与关键文字检查的 PDF;随后按实际用途核对页面。转换失败、资源缺失或源文件中途变化时,保留上一份已接受 PDF,不用残缺新文件替换。
不适合这样用
- 需要修改原 Markdown 正文
- 把渲染成功当语义验收
- 绕过现有文档样式约束
正常时
PDF 能正常解析、来源未变化且页数和关键文字符合要求时,才替换目标文件,再完成需要的页面目检。
发现问题时
图片或样式缺失、页数不符、文字缺失或源文件变化时,本次导出不通过,上一份已接受结果保留。
入口不可用或证据不足时
登记的 Python、浏览器或转换依赖不可用时,明确入口缺口并保留 Markdown 与旧 PDF;不改走已移除的弱校验后备路线。
从哪里开始
在当前 AI 对话给出 Markdown 文件和想要的 PDF;已有项目样式或页数要求可以一并说明,AI 负责生成与核对。
需要准备什么
- 一篇或一组 Markdown 原件及目标 PDF 位置
- 确有需要时给出 CSS、图片、字体、分页或版面偏好
为什么需要这个能力
文件生成成功不代表 PDF 可交付:中文可能变方框,分页可能错位,输出也可能其实是上一次留下的旧文件。
从需求到结果
给出 Markdown、目标 PDF 和实际需要的样式、页数或关键文字。AI 使用这台电脑已登记的转换环境,不要求你选择运行程序。
默认使用中性样式。项目或个人视觉由选定 CSS 提供;历史绿色样式只在原文档确实需要时选择,不把它当所有成品的品牌。
正文中的样式和真实分页标记按所选规则保留;代码块、行内代码和注释里的示例仍是文字,不会被误当执行样式。
图片与字体从选定 Markdown 和 CSS 的原目录解析。远程资源和文档脚本默认不运行,只有可信文档确实需要时才明确允许;资源缺失就报失败,不悄悄交一份缺图 PDF。
单篇和批量走同一个转换核心。生成后检查 PDF 确实可读、有页面、没有加密阻碍,核对所需页数与文字,并重新检查源文件没有变化。
全部检查通过才替换目标 PDF;不覆盖 Markdown 或样式原件,失败时保留上一份已接受成品,也不改用检查较弱的替代转换路线冒充成功。
版面重要时继续逐页目检,转换成功不等于语义正确。生成文件不自动授权提交、发送、上传或分享。
失败时会怎样恢复
输出位置会覆盖原 Markdown 或样式
系统反应:开始转换前拒绝,不动原件。
恢复方式:选择独立输出;同一个文件的其他链接也不能绕过。
转换器或正式运行环境不可用
系统反应:保留原错误、原文和此前 PDF,不切到弱检查后备。
恢复方式:修复现有登记环境后再用统一入口重试。
图片、字体或样式资源缺失
系统反应:本次导出失败,不交残缺文件。
恢复方式:核对选定目录与真实资源;只有可信文档确实需要时才明确允许网络或脚本。
页数、关键文字或 PDF 解析不符合要求
系统反应:不替换已经接受的旧 PDF。
恢复方式:调整源样式或准确要求后重新生成,不手改最终成品冒充源一致。
源文件在转换中发生变化
系统反应:停止发布本次结果,旧成品保留。
恢复方式:待源版本稳定后重新生成,并核对同一份 Markdown 与 CSS。
技术身份与验证证据
Skill · md-to-pdf · 成熟度 A(稳定)
这个 Skill 用到的名词
- 统一启动入口
- Invoke-MdPdfToolkit.ps1 convert/batch使用PCConfig注册Host Python与pdf_export_core.py,不依赖PATH中任意python或旧Node打印入口。
- 样式选择
- 默认neutral,legacy-green仅作已有文档兼容;项目CSS可重复--css-file。--document-style-policy preserve|ignore|reject控制文档style,不将代码/注释示例变成样式。
- 资源边界
- 本地资源限Markdown/CSS roots;远程HTTP/HTTPS与文档JS默认拒绝,可信实际需要才--allow-network/--allow-scripts。缺资源失败,不交残缺PDF。
- 页数和文字约束
- --expected-pages与重复--require-text检查实际可解析非加密PDF;至少一页,源hash(内容指纹)重验后才原子替换,失败保留旧结果。
- 转换实现
- 单篇与batch共用Playwright,保持Edge/Chrome进程至page.pdf()完成;旧Edge CLI(命令行工具) fallback(后备路线)已移除。
- 视觉验收
- 使用pdf-render-safe稳定report中的总览和实际页面路径目检;转换成功不证明版面和内容全部正确。
专业定义
通过PCConfig登记Host Python与统一Playwright核心,在Windows将Markdown转换成可核验PDF。单篇/批量共用资源检查、分页/文字约束、源hash(内容指纹)重验与原子替换;Edge CLI(命令行工具) fallback(后备路线)已移除。
执行参考
下面保留 AI 和工具实际使用的参数、步骤与依赖。日常使用可以直接提出需求,不需要先手工准备这些协议。
输入
- Markdown绝对路径、PDF绝对输出路径
- 按需要的--css-file、--profile、--document-style-policy preserve|ignore|reject
- 可选--expected-pages与重复--require-text;明确可信需求才--allow-network/--allow-scripts
输出
- 通过解析、页数、可提取文字与源一致性检查后原子替换的PDF
- 源Markdown/CSS未变、资源完整与失败保旧的结果
- 版面敏感时继续pdf-render-safe的稳定报告与页面目检
执行顺序
- 1
Invoke-MdPdfToolkit.ps1 convert或batch解析PCConfig注册Host Python,复用pdf_export_core.py。
- 2
默认neutral;legacy-green只用于既有兼容文档,品牌/项目CSS由消费者拥有。
- 3
样式策略默认preserve,保留media等属性;代码和HTML注释示例不当真style,真实PDF_PAGE_BREAK/page-break标记生效。
- 4
资源只从选定Markdown/CSS roots读取;HTTP/HTTPS与文档JavaScript默认阻断,缺失或被阻断资源导致失败。
- 5
Playwright保持本地Edge/Chrome进程至page.pdf()完成;单篇与批量同核,不使用Edge CLI(命令行工具) fallback(后备路线)。
- 6
暂存输出必须可解析、非加密且至少一页;expected-pages/require-text通过并重验源hash(内容指纹)后才原子替换。
- 7
PDF输出不得与Markdown/CSS同一文件;验证失败或源漂移保留上一份已接受PDF。
- 8
生成后对版面敏感文档逐页验收;转换成功不替代语义或视觉审查。
操作边界
- 转换不改Markdown/CSS原件、不依赖Typora许可
- 远程资源/文档脚本仅可信实际需求下显式允许,不静默放宽
- 无Edge CLI(命令行工具) fallback(后备路线),不以弱资源或PDF检查降级
- 真实页数约束不要求人工分页标记,旧输出不冒充本轮
- 转换不授权commit/push/email/upload/share,秘密不得藏入CSS/注释/元数据
依赖
- md-pdf-toolkit统一PowerShell启动器
- PCConfig登记的Host Python与Playwright
- 本地Edge/Chrome与PDF解析依赖
验证状态
源码、安装、供应检查、当前任务、新任务和真实使用分别列出;一层通过不自动提升另一层。
- Source(源码)
- 本轮定向核对 .agents 已发布 main 83db4ff5c274c309207340114af02bdd9ea99758 中的规范 Skill 原文;未采用进行中的未提交修改。
- Install(安装)
- 保留原供应安装观察;本轮未重新运行已发布统一启动入口,不宣称新版已安装并实测。
- Transaction(供应事务)
- 供应事务检查通过;供应采集于2026-09-24 12:56(中国时间),未重跑真实PDF转换或渲染
- Current task(当前任务)
- 本轮核对已发布 Skill 与相关活动合同并修正网页说明;未处理私人业务材料或运行真实能力任务。
- Fresh task(全新任务)
- 新任务回执未知
- End to end(端到端)
- 本轮未执行新版真实转换/渲染与逐页目检;已发布源码不等于当前运行或视觉验收通过。
正式源码cdb09b1将单篇/批量转换收敛到统一核心,并包含资源、样式、页数/文本、源一致性与失败保旧回归。本轮仅核对已发布源码和Skill原文,没有重跑源测试或生成真实PDF;历史回归不升级为新入口当前运行PASS。
证据时间与来源
- Observed at(观察时间)
- 2026-09-22:已发布 Skill 正文与活动 E166 合同定向核对;安装、运行与既有业务测试保留各自原观察,不由本轮文字核对刷新。
- Source commit(来源提交)
83db4ff5c274c309207340114af02bdd9ea99758- Supply command(供应验证命令)
E:\.agents\tools\Test-PersonalSkillSupply.ps1 -RequireInstalled -NoExternalEvidence -Json- Evidence basis(证据来源)
- 已发布 main 83db4ff 的 plugins/md-pdf-toolkit/skills/md-to-pdf/SKILL.md 与活动 E166 相关合同;正文、源码身份与安装/运行/E2E(端到端验证)各自区分,未将文字核对当成业务验收。
Canonical source(唯一维护源)
E:\.agents\plugins\md-pdf-toolkit\skills\md-to-pdf\SKILL.md该路径是维护源;用户目录中的发现入口不是第二份源码。
