SuperAPI AI 工具集

PDF Generator

办公与效率

查看项目

更新于 10-15 16:28

技能介绍

PDF Generator 是一个用于创建和操作专业 PDF 文档的技能。根据资料,它能够从多种来源生成 PDF,包括 Markdown、HTML、纯文本和结构化数据,并处理格式化、图片、元数据、水印和多页布局。该技能借助 Node.js 库(如 puppeteer、pdfkit 或 jsPDF)实现 PDF 生成能力。

用途方面,资料列出以下典型场景:将文档转换为 PDF、生成带图表的报告、创建可打印表单,以及产出客户交付物,目标是创建出版级质量的 PDF。

主要能力体现为五类核心工作流:

  1. 将 Markdown 转换为 PDF:读取 Markdown 源文件,使用 marked 等库解析为 HTML,应用 CSS 样式,再用 Puppeteer 将 HTML 渲染为 PDF 并处理分页,添加元数据后保存到指定输出路径。资料中给出了完整代码,涉及依赖 puppeteer、marked、fs,使用 A4 格式与 20mm 边距。

  2. 生成多页 PDF 报告:定义报告结构(封面页、目录、章节、附录),创建 PDFKit 文档实例,添加含标题、标志和日期的封面页,生成带页码引用的目录,按统一格式添加章节,为每页添加页眉页脚和页码后完成。资料给出了基于 pdfkit 与 fs 的实现代码。

  3. 批量将 HTML 转换为 PDF:扫描目录中的 HTML 文件或接受文件列表,复用同一个 Puppeteer 浏览器实例,逐个加载 HTML、应用标准样式、以一致设置渲染为 PDF,并保存为对应文件名,最后关闭浏览器并报告结果。

  4. 为现有 PDF 添加水印:使用 pdf-lib 加载现有 PDF,遍历所有页面,绘制对角、半透明的水印文字或叠加水印图片,保存修改后的 PDF 并保留原始元数据。资料给出了基于 pdf-lib 的实现代码,参数包括位置、字号、灰度颜色、0.3 透明度与 -45 度旋转。

  5. 合并多个 PDF:创建新 PDF 文档,加载每个来源 PDF,复制其所有页面并追加到新文档,保存合并后的 PDF 并合并元数据。

使用方式方面,资料提供了一份快速参考的触发方式,例如“convert [file.md] to pdf”用于 Markdown 转 PDF,“create pdf report from [data]”用于从数据生成报告,“convert all html files to pdf”用于批量转换 HTML,“add watermark [text] to [file.pdf]”用于添加水印,“merge [file1.pdf] and [file2.pdf]”用于合并 PDF,另有提取页面、压缩 PDF、设置元数据等触发描述。依赖安装命令为 npm install puppeteer pdfkit pdf-lib marked。

资料还给出最佳实践:始终指定页面尺寸(如 A4、Letter)和方向;页边距至少 15mm 以保证可打印性;嵌入字体或使用标准 PDF 字体(Helvetica、Times、Courier);嵌入前压缩图片以减小体积;关注 PDF 大小,超过 5MB 的文件使用压缩;尽量包含文档结构标签以提升无障碍性;始终设置标题、作者和创建日期元数据;使用 CSS page-break-before 或 page-break-after 控制分页;在多种阅读器(Adobe、Preview、浏览器)中测试;为敏感文档提供密码保护和权限设置;如需归档质量可验证 PDF/A 合规性;批量操作时复用浏览器实例。

错误处理方面涉及:文件未找到时先核实源文件路径;大型 PDF 使用流式与分块处理以应对内存问题;自定义字体加载失败时回退到标准字体;复杂页面可增加 Puppeteer 超时;妥善处理读写权限错误。性能建议包括:批量操作复用 Puppeteer 浏览器实例;对含大量图片的文件使用压缩;缓存渲染后的 HTML;大型 PDF 逐页处理而非一次性载入内存;使用 worker 线程并行生成。

限制方面,资料未明确给出该技能的适用范围限制、支持的文件大小上限或平台兼容性说明,这些信息暂未提供。此外,资料未说明该技能是否收费、具体价格或授权方式,暂未提供。