多页 Canvas 一键导出 A4 PDF
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3ff3c268/canvas-multipage-pdf。
技能介绍
要解决什么问题
字帖、作业纸、表格在 Canvas 上画好后,打印成册往往只能一页页 canvas.toDataURL 存图,再手工拼 PDF,页码和分页也容易错。本技能面向「多页 Canvas → 可打印 A4 PDF」:在浏览器里一键合成,带连续页码、自动分页,并遵守 10 页硬上限(超出先确认再截断)。
技能如何工作
- 固定 A4 画布:内部尺寸 1240×1754(150dpi);
jsPDF使用unit: 'px'、format: [1240, 1754],避免 px/mm 混用导致缩放错位。 - 导出质量:页面切片经
toDataURL('image/jpeg', 0.95)写入 PDF。 - 核心流程:
detectPageNumbers识别模板页码 →estimatePages估算总页数与是否超限 →sliceCanvas按页切片 →composePDF逐页addPage+addImage合成(第一页后必须先addPage,否则内容叠在同一页)。 - 自测:附
selftest.js,在 Node 侧验证页码检测、分页与切片逻辑,不依赖浏览器里的 jsPDF。 - 引用实现:
references/pdf-export.js(UMD,页码检测 + 分页 + 切片 + 合成)。
适用边界与注意点
- 环境:
composePDF需要 jsPDF(浏览器 CDN 或 Nodenpm i jspdf)。微信小程序没有 jsPDF,需先wx.canvasToTempFilePath出每页图,再在 web-view 或后端合 PDF,或在前端页复用同一套分页逻辑。 - 组合使用:与 canvas-grid-engine(画网格字帖)、svg-to-canvas-replica(SVG 复刻到 Canvas)互补——前者负责「画/复刻」,本技能负责「出 PDF」。
使用场景
- 字帖或作业纸已在 Canvas 画好五六页,需要带连续页码合成一份 A4 PDF 直接送打印机
- 单页模板高度不够,内容超出单屏,要按固定 1240×1754 尺寸自动切片并导出多页 PDF
- 老师用网格引擎生成练习卷预览后,要把多页 Canvas 一键下载为可打印 PDF 发给家长
- 已有带页码标记的 Canvas 模板,导出前要先估算总页数并在超过 10 页时确认是否截断
适合人员
- 在浏览器里做字帖/田字格 Canvas 页面、每次打印前都要合 PDF 的教育类前端开发者
- 需要把自家孩子多页练字 Canvas 导出成标准 A4、在家打印机直接打的家长
- 维护 Canvas 工具链(画网格 + 出 PDF)并要复用 `detectPageNumbers` / `composePDF` 的 Skill 集成者
- 在微信小程序里已能出每页 Canvas 图、还要对齐同一套分页逻辑再在 web-view 或后端合 PDF 的小程序工程师