SuperAPI AI 工具集

office

办公与效率

查看项目

更新于 10-14 21:58

技能介绍

Office Document Generation 是一套用于以 TypeScript 编程方式生成 Microsoft Office 文档和 PDF 的技能,状态为 Production Ready,最后更新于 2026-01-12,无依赖(纯 JavaScript 库)。所用库版本为 docx@9.5.0、xlsx@0.18.5、pdf-lib@1.17.1、pptxgenjs@4.0.1。

用途与运行环境

该技能用于程序化生成 DOCX、XLSX、PDF、PPTX 四类文档。所有库均为纯 JavaScript、零原生依赖,因此支持通用运行时:DOCX、XLSX、PDF 在 Cloudflare Workers、浏览器、Node.js 中均可用;PPTX 在 Workers 中标注为“⚠️*”,即对本地图片/数据可用,远程图片抓取需要变通(使用 https 模块)。

安装

npm install docx xlsx pdf-lib pptxgenjs

可按需只安装其中部分。

主要能力

DOCX(docx):采用构建器模式,核心概念包括 Document(根容器)、Section(包含页面,多数文档为 1 个 section)、Paragraph(文本行/块)、TextRun(段落内格式化文本)、Table(TableRow → TableCell → Paragraph 的网格)。支持标题与段落、表格、图片(ImageRun,可指定宽高与类型)。导出方式:Node.js 用 Packer.toBuffer 写文件;浏览器用 Packer.toBlob 触发下载;Cloudflare Workers 返回 Response 并设置 Content-Type 与 Content-Disposition。

XLSX(xlsx / SheetJS):使用工具函数,核心概念包括 Workbook(工作表容器)、Worksheet(单元格网格)、utils.aoa_to_sheet(数组的数组转工作表)、utils.json_to_sheet(JSON 数组转工作表)、utils.book_new/book_append_sheet(创建/添加工作表)。支持公式(如 { f: 'B2*C2' }、SUM)、列宽(ws['!cols'],单位字符)、多工作表。导出:Node.js 用 XLSX.writeFile;浏览器/Workers 用 XLSX.write 获取 buffer;Workers 返回 Response。

PDF(pdf-lib):采用基于页面的方式,核心概念包括 PDFDocument、PDFPage、坐标原点在左下角(非左上角)、单位为点(72 点 = 1 英寸)。支持标准页面尺寸(LETTER [612,792]、A4 [595.28,841.89]、LEGAL [612,1008])、文本与标准字体(Helvetica、HelveticaBold 等)、绘制形状(矩形、线条)、图片(embedPng/embedJpg)、填写 PDF 表单(getForm、getTextField、setText、flatten)、合并 PDF(copyPages、addPage)。导出用 pdfDoc.save() 获取字节。

PPTX(pptxgenjs):采用基于幻灯片的方式,核心概念包括 Presentation(new pptxgen())、Slide(addSlide())、元素(文本、图片、形状、表格、图表),默认单位为英寸。支持标题页、项目符号、表格、图表(如 ChartType.line)、图片(文件路径、base64、URL——URL 仅 Node.js,使用 https 模块)、形状(rect、ellipse、rightArrow 等)、幻灯片母版(defineSlideMaster)。导出:Node.js 用 writeFile;浏览器触发下载;可输出 base64、blob、arraybuffer;Workers 返回 Response。

使用方式

资料给出各格式的快速上手示例(约 30 秒创建):DOCX 用 Document/Packer/Paragraph/TextRun;XLSX 用 aoa_to_sheet/book_new/book_append_sheet;PDF 用 PDFDocument.create/addPage/embedFont/drawText;PPTX 用 new pptxgen()/addSlide/addText/writeFile。导出模式统一覆盖 Node.js 写文件、浏览器下载、Cloudflare Workers 返回 Response 三种场景。

Cloudflare Workers 集成

四种库均可在 Workers 中使用(PPTX 对远程图片有注意事项)。资料给出基于 Hono 的 DOCX 生成端点示例:app.get('/api/invoice/:id') 中构造 Document,用 Packer.toBuffer 得到 buffer,返回带正确 Content-Type 与 Content-Disposition 的 Response。对于需要 CSS 的复杂布局,资料提到可使用 Cloudflare Browser Rendering(付费功能)配合 @cloudflare/puppeteer 实现 HTML 转 PDF,但该段内容在资料中未完整给出。

适用场景

适合需要在服务端、边缘运行时或浏览器中批量生成发票、报表、演示文稿、PDF 表单等文档的开发者,尤其是希望避免原生依赖、追求跨运行时一致性的场景。

限制

PPTX 在 Cloudflare Workers 中处理远程图片需要变通(依赖 https 模块);HTML 转 PDF 的 Browser Rendering 为付费功能;资料未提供各库的收费、价格、性能或效果数据。