
开发者发布纯 TypeScript 的 PPTX 转 PDF 工具,无需 LibreOffice
来源标题:Show HN:Pptx-to-Pdf – Convert PowerPoint to PDF in Node.js Without LibreOffice
一个名为 pptx-to-pdf 的纯 TypeScript 转换器已发布,可直接在 Node.js 中将 PPTX 缓冲区转为 PDF,不依赖 LibreOffice 或原生依赖。它提供 slides、fontDirs、dpi 等配置项,支持指定幻灯片、自定义字体和设置输出分辨率。该工具可通过 npm 安装,适用于 Express 接口和 AWS Lambda 等场景。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
纯 TypeScript 实现的 PPTX 转 PDF 转换器。无需 LibreOffice,无原生依赖。输入 buffer,输出 PDF。 npm install pptx-to-pdf 用法 import { convert } from 'pptx-to-pdf'; import fs from 'fs'; const pptx = fs.readFileSync('presentation.pptx'); const pdf = await convert(pptx); fs.writeFileSync('output.pdf', pdf); API convert(pptxBuffer, options?): Promise<Buffer> 选项 类型 默认值 说明 slides number[] 全部 要包含的幻灯片索引(从 0 开始) fontDirs string[] 用于搜索字体的额外目录 fontMap Record<string, string | Buffer> 将字体名称映射到文件路径或 buffer dpi number 96 输出分辨率 onWarning (msg: string) => void 空操作 非致命警告的回调 示例 仅指定幻灯片 const pdf = await convert(pptx, { slides: [0, 2, 4], // 第一、三、五张幻灯片 }); 自定义字体 const pdf = await convert(pptx, { fontDirs: ['/usr/share/fonts/truetype'], fontMap: { 'Calibri': '/path/to/calibri.ttf', 'Custom Font': fs.readFileSync('/path/to/custom.ttf'), }); Express 接口 app.post('/convert', async (req, res) => { const pdf = await convert(req.body); res.type('application/pdf').send(pdf); }); AWS Lambda export const handler = async (event) => { const pptx = Buffer.from(event.body, 'base64'); const pdf = await convert(pptx); return { statusCode: 200, headers: { 'Content-Type': 'application/pdf' }, body: pdf.toString('base64'), isBase64Encoded: true, }; }; 支持的内容 带字体、字号、颜色、粗体/斜体/下划线的文本 形状(矩形、椭圆、箭头、圆角矩形等) 图片(JPEG、PNG),包括裁剪后的图片 带单元格背景、边框和文本的表格 幻灯片背景(纯色、渐变、图片) 主题颜色和字体方案 占位符继承(幻灯片 -> 版式 -> 母版) 带嵌套子项的组合形状 连接符 尚不支持的内容 图表 SmartArt 动画和切换效果 音频/视频 EMF/WMF 矢量图形 3D 效果和复杂文本变换 图案填充 工作原理 该库解析 PPTX 文件(Office Open XML 的 ZIP 归档),并直接渲染为 PDF: 无中间 HTML,无无头浏览器,无子进程。 该库内置了 Liberation Sans、Liberation Serif 和 Liberation Mono(约 2.5MB),作为 Arial、Times New Roman 和 Courier New 的度量兼容替代字体。如需更高的还原度,可通过 fontDirs 或 fontMap 提供实际字体。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。