@lemonppt/renderer 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/export-pdf.d.ts.map +1 -1
- package/dist/export-pdf.js +14 -3
- package/dist/export-pdf.js.map +1 -1
- package/dist/export-pptx.d.ts +5 -0
- package/dist/export-pptx.d.ts.map +1 -1
- package/dist/export-pptx.js +1042 -121
- package/dist/export-pptx.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +5 -3
- package/dist/render.js.map +1 -1
- package/package.json +4 -4
package/dist/export-pdf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-pdf.d.ts","sourceRoot":"","sources":["../src/export-pdf.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"export-pdf.d.ts","sourceRoot":"","sources":["../src/export-pdf.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS/C,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC9F"}
|
package/dist/export-pdf.js
CHANGED
|
@@ -2,18 +2,29 @@
|
|
|
2
2
|
// Copyright (c) 2026 lemonforme
|
|
3
3
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
4
|
import { normalizeDeckGoal } from '@lemonppt/core';
|
|
5
|
-
import { writeFile } from 'node:fs/promises';
|
|
5
|
+
import { cp, mkdir, mkdtemp, writeFile } from 'node:fs/promises';
|
|
6
6
|
import os from 'node:os';
|
|
7
7
|
import path from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
8
9
|
import { chromium } from 'playwright';
|
|
9
10
|
import { renderDeck } from './render.js';
|
|
10
11
|
export async function exportDeckToPdf(goal, options) {
|
|
11
12
|
goal = normalizeDeckGoal(goal);
|
|
12
13
|
const { outFile, width = 1280, height = 720 } = options;
|
|
13
14
|
const result = renderDeck(goal);
|
|
14
|
-
const
|
|
15
|
-
|
|
15
|
+
const theme = goal.theme || 'base';
|
|
16
|
+
// 在临时目录中准备 HTML 和主题/字体资源,确保相对引用可用
|
|
17
|
+
const tempDir = await mkdtemp(path.join(os.tmpdir(), 'lemonppt-'));
|
|
18
|
+
const tempHtml = path.join(tempDir, 'index.html');
|
|
19
|
+
const assetsDir = path.join(tempDir, 'assets');
|
|
20
|
+
await mkdir(assetsDir, { recursive: true });
|
|
16
21
|
await writeFile(tempHtml, result.html, 'utf-8');
|
|
22
|
+
const pkgRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
23
|
+
const themesRoot = path.join(pkgRoot, '..', 'themes', 'src');
|
|
24
|
+
await cp(path.join(themesRoot, theme, 'styles.css'), path.join(assetsDir, `${theme}.css`));
|
|
25
|
+
const fontsSource = path.join(pkgRoot, 'assets', 'fonts');
|
|
26
|
+
const fontsDest = path.join(assetsDir, 'fonts');
|
|
27
|
+
await cp(fontsSource, fontsDest, { recursive: true, force: true });
|
|
17
28
|
const browser = await chromium.launch();
|
|
18
29
|
const page = await browser.newPage();
|
|
19
30
|
try {
|
package/dist/export-pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../src/export-pdf.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,gCAAgC;AAChC,6CAA6C;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../src/export-pdf.ts"],"names":[],"mappings":"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"}
|
package/dist/export-pptx.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DeckGoal } from '@lemonppt/core';
|
|
2
|
+
import { type Slide as PptxSlide } from 'pptxgenjs';
|
|
2
3
|
export interface PptxExportOptions {
|
|
3
4
|
outFile: string;
|
|
4
5
|
title?: string;
|
|
@@ -6,4 +7,8 @@ export interface PptxExportOptions {
|
|
|
6
7
|
author?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare function exportDeckToPptx(goal: DeckGoal, options: PptxExportOptions): Promise<void>;
|
|
10
|
+
type PptxRenderFn = (slide: PptxSlide, props: unknown) => void;
|
|
11
|
+
/** 注册主题专属 PPTX 渲染器(按 role + theme 覆盖默认 layout 渲染器)。 */
|
|
12
|
+
export declare function registerPptxRoleRenderer(role: string, theme: string, renderFn: PptxRenderFn): void;
|
|
13
|
+
export {};
|
|
9
14
|
//# sourceMappingURL=export-pptx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-pptx.d.ts","sourceRoot":"","sources":["../src/export-pptx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"export-pptx.d.ts","sourceRoot":"","sources":["../src/export-pptx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAC;AAEnE,OAAkB,EAAE,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4FD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhG;AAED,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAqB/D,uDAAuD;AACvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMlG"}
|