# @0-ai/slide-gen 中文文档

规范地址：https://npmcn.com/package/%400-ai/slide-gen/

版本：0\.1\.2
npm 元数据更新时间：2026-03-28T11:46:47.589Z
中文译文更新时间：2026-11-06T09:24:38.434Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%400-ai/slide-gen
原文对照：https://npmcn.com/package/%400-ai/slide-gen/?lang=original
项目主页：https://github.com/0-AI-UG/slide-gen
源码仓库：https://github.com/0-AI-UG/slide-gen

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：191 kB，29 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-03-27T15:33:33.307Z
- 最新版本发布：2026-03-28T11:46:47.268Z
- 近 30 天下载量：3607（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

将 HTML 幻灯片甲板转换为 PPTX、 PDF 和 PNG

## 安装

```sh
npm install @0-ai/slide-gen
```

也可以使用：`pnpm add @0-ai/slide-gen`、`yarn add @0-ai/slide-gen`、`bun add @0-ai/slide-gen`

## README

# 幻灯片源

将 HTML 幻灯片甲板转换为 PPTX, PDF, 和 PNG 。 以 HTML + CSS 设计幻灯片,然后导出为本地 PowerPoint 格式的高纯度转换 .

## 如何运作

幻灯片源在无头 Chromium 浏览器中使 HTML (通过 Playwright) , 从 DOM 中提取每个可见元素—— 形状、 文本运行、 图像、 梯度 —— 并把它们重建为本地 OOXML 对象 `.pptx` 文档。 结果是一个真实的有可编辑文本的PowerPoint文件,而不是光栅化的图像.

## 所需资源

-   [阿宝](https://bun.sh/) 页:1
-   剧作家铬( R)`bunx playwright install chromium`(中文(简体) )
-   **可选 :** LibreOffice + Ghostscript (仅用于 `--render` PPTX 验证)

## 安装

```bash
bun add @0-ai/slide-gen
```

## CLI 使用情况

```bash
bunx slide-gen slides.html -o ./output
```

此生成 `presentation.pptx`, (中文(简体) ), `presentation.pdf`,以及 `slide-*.png` 输出目录中的文件.

### 选项

```
-o, --output-dir <dir>   Output directory (default: ./output)
--no-pdf                 Skip PDF generation
--no-pptx                Skip PPTX generation
--no-png                 Skip PNG screenshots
--render                 Render PPTX back to PNG via LibreOffice (for verification)
--skip-fonts             Use previously cached fonts
--fonts-dir <dir>        Custom fonts cache directory
```

## API 使用情况

### 基于文件的管道

从磁盘读取 HTML, 将输出写入目录 :

```typescript
import { convertHtmlToSlides } from "@0-ai/slide-gen";

const result = await convertHtmlToSlides("slides.html", {
  outputDir: "./output",
  onProgress: console.log,
});

console.log(result.pptxPath);  // ./output/presentation.pptx
console.log(result.pdfPath);   // ./output/presentation.pdf
console.log(result.pngPaths);  // ["./output/slide-1.png", ...]
```

### 缓冲管

接受 HTML 为字符串, 以内存缓冲返回一切 —— 不需要输出目录 :

```typescript
import { convertHtmlBuffers } from "@0-ai/slide-gen";

const result = await convertHtmlBuffers({
  html: "<html>...</html>",
  noPdf: true,   // skip PDF
  noPng: true,   // skip PNGs
});

// result.pptxBuffer — Buffer containing the .pptx file
// result.pngBuffers — Buffer[] of slide screenshots
// result.slideData  — extracted slide structure
```

### 低级 API

直接使用单个管道相:

```typescript
import {
  launchBrowser,
  loadHtmlContent,
  extractSlideData,
  prepareFontsFromSlideData,
  buildPptx,
  generatePdfBuffer,
  generateSlidePngBuffers,
  closeBrowser,
} from "@0-ai/slide-gen";
```

## HTML 幻灯片格式

每个幻灯片都是 `<div class="slide">` 元素大小为 1920x1080px:

```html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=1920, initial-scale=1" />
  <style>
    @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');

    *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

    body { background: #000; }

    .slide {
      position: relative;
      width: 1920px;
      height: 1080px;
      overflow: hidden;
      font-family: 'Inter', sans-serif;
      color: #fff;
      background: #0a0a0a;
    }
    .slide + .slide { page-break-before: always; }
  </style>
</head>
<body>
  <div class="slide">
    <h1 style="padding: 80px; font-size: 64px;">Hello, World</h1>
  </div>
  <div class="slide">
    <h1 style="padding: 80px; font-size: 64px;">Slide Two</h1>
  </div>
</body>
</html>
```

## 支助的CSS

| 特性 | 页:1 |
| --- | --- |
| 固体背景 | `background-color` 关于任何元素 |
| 线性和线性梯度 | `linear-gradient()`, (中文(简体) ), `radial-gradient()` |
| 弹性框和网格布局 | 通过 `getBoundingClientRect()` |
| 谷歌字体 | 所有重量(100-900)——自动下载并嵌入 |
| 边框 | 平面颜色和宽度(%% 1px) |
| `border-radius` | 统一价值(不单价) |
| 不透明度 | 从祖先链中累积 |
| CSS 变量 | 提取前由浏览器解决 |
| `transform: rotate()` | 仅旋转——无比例/比例/翻译 |
| `::before` 编号 : `::after` | 位置、 大小、 仅是背景( 无文本) |
| 字体样式 | 大小、 重量、 样式、 家庭、 颜色、 字母间距、 行高 |
| 文本格式化 | 文本转换、文本对齐 |
| `<img>`,内置SVG | 升级和嵌入为PNG |
| `background-image: url()` | 单一图像背景 |
| `writing-mode` | `vertical-rl`编号 :`vertical-lr` |

### 数据属性

控制带有这些属性的转换行为 :

| 属性 | 数值 | 目的 |
| --- | --- | --- |
| `data-sg-wrap` | `"true"` 编号 : `"false"` | 明确的文本包装控制 |
| `data-sg-group` | 任意字符串 | 分组文本运行到一个 PPTX 文本框 |

### 不支持( 沉默忽略)

暗影 过滤器 背景过滤器 剪辑路径 文字装饰 变换 `rotate()`,二次曲线梯度,多背景层,穿角边框-射线,位置布局相抵.

## 字体

Google 字体是自动下载的, 本地缓存( in) `.slide-gen-fonts/`),并被嵌入到PPTX文件中. 系统字体有效但只得到二进制粗体——没有重量变体.

使用 `--skip-fonts` 以重用缓存字体.

## 许可证

麻省理工学院

## 常见问题

### @0-ai/slide-gen 是什么？

将 HTML 幻灯片甲板转换为 PPTX、 PDF 和 PNG

### 如何安装 @0-ai/slide-gen？

在项目目录运行 npm install @0-ai/slide-gen，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 slide-gen，可以用 npx slide-gen 直接运行。

### @0-ai/slide-gen 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @0-ai/slide-gen 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @0-ai/slide-gen 可以商用吗？

@0-ai/slide-gen 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @0-ai/slide-gen 的下载量有多少？

根据 npm 官方下载统计，@0-ai/slide-gen 在 2026/10/04 – 2026/11/02 这 30 天内被下载 3,607 次，日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @0-ai/slide-gen 还在维护吗？

最新版本 0\.1\.2 发布于 2026/03/28（7 个月前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/03/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

