file2md 1.1.9 → 1.1.10
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/parsers/pptx-parser.d.ts +3 -0
- package/dist/parsers/pptx-parser.d.ts.map +1 -1
- package/dist/parsers/pptx-parser.js +82 -2
- package/dist/parsers/pptx-parser.js.map +1 -1
- package/dist/utils/libreoffice-converter.d.ts +33 -0
- package/dist/utils/libreoffice-converter.d.ts.map +1 -0
- package/dist/utils/libreoffice-converter.js +169 -0
- package/dist/utils/libreoffice-converter.js.map +1 -0
- package/dist/utils/libreoffice-detector.d.ts +57 -0
- package/dist/utils/libreoffice-detector.d.ts.map +1 -0
- package/dist/utils/libreoffice-detector.js +295 -0
- package/dist/utils/libreoffice-detector.js.map +1 -0
- package/dist/utils/pptx-visual-parser.d.ts +190 -0
- package/dist/utils/pptx-visual-parser.d.ts.map +1 -0
- package/dist/utils/pptx-visual-parser.js +648 -0
- package/dist/utils/pptx-visual-parser.js.map +1 -0
- package/dist/utils/puppeteer-renderer.d.ts +65 -0
- package/dist/utils/puppeteer-renderer.d.ts.map +1 -0
- package/dist/utils/puppeteer-renderer.js +393 -0
- package/dist/utils/puppeteer-renderer.js.map +1 -0
- package/dist/utils/slide-renderer.d.ts +30 -2
- package/dist/utils/slide-renderer.d.ts.map +1 -1
- package/dist/utils/slide-renderer.js +300 -39
- package/dist/utils/slide-renderer.js.map +1 -1
- package/package.json +3 -1
@@ -0,0 +1,65 @@
|
|
1
|
+
import type { ImageData } from '../types/interfaces.js';
|
2
|
+
import type { SlideLayout } from './pptx-visual-parser.js';
|
3
|
+
export interface PuppeteerRenderOptions {
|
4
|
+
readonly width?: number;
|
5
|
+
readonly height?: number;
|
6
|
+
readonly quality?: number;
|
7
|
+
readonly format?: 'png' | 'jpeg';
|
8
|
+
readonly deviceScaleFactor?: number;
|
9
|
+
readonly timeout?: number;
|
10
|
+
readonly headless?: boolean;
|
11
|
+
}
|
12
|
+
export interface PuppeteerRenderResult {
|
13
|
+
readonly slideImages: readonly ImageData[];
|
14
|
+
readonly slideCount: number;
|
15
|
+
readonly metadata: {
|
16
|
+
readonly renderMethod: 'puppeteer';
|
17
|
+
readonly width: number;
|
18
|
+
readonly height: number;
|
19
|
+
readonly quality: number;
|
20
|
+
readonly format: string;
|
21
|
+
};
|
22
|
+
}
|
23
|
+
export declare class PuppeteerRenderer {
|
24
|
+
private readonly outputDir;
|
25
|
+
private puppeteer;
|
26
|
+
private browser;
|
27
|
+
constructor(outputDir: string);
|
28
|
+
/**
|
29
|
+
* Initialize Puppeteer (lazy loading to avoid dependency issues)
|
30
|
+
*/
|
31
|
+
private initializePuppeteer;
|
32
|
+
/**
|
33
|
+
* Launch browser instance
|
34
|
+
*/
|
35
|
+
private launchBrowser;
|
36
|
+
/**
|
37
|
+
* Render slides using visual layouts in browser
|
38
|
+
*/
|
39
|
+
renderSlidesFromLayouts(visualLayouts: readonly SlideLayout[], options?: PuppeteerRenderOptions): Promise<PuppeteerRenderResult>;
|
40
|
+
/**
|
41
|
+
* Generate HTML content for a slide
|
42
|
+
*/
|
43
|
+
private generateSlideHtml;
|
44
|
+
/**
|
45
|
+
* Render individual element to HTML
|
46
|
+
*/
|
47
|
+
private renderElement;
|
48
|
+
/**
|
49
|
+
* Escape HTML characters
|
50
|
+
*/
|
51
|
+
private escapeHtml;
|
52
|
+
/**
|
53
|
+
* Check if Puppeteer is available
|
54
|
+
*/
|
55
|
+
static isAvailable(): Promise<boolean>;
|
56
|
+
/**
|
57
|
+
* Close browser instance
|
58
|
+
*/
|
59
|
+
close(): Promise<void>;
|
60
|
+
/**
|
61
|
+
* Clean up resources
|
62
|
+
*/
|
63
|
+
cleanup(): Promise<void>;
|
64
|
+
}
|
65
|
+
//# sourceMappingURL=puppeteer-renderer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"puppeteer-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/puppeteer-renderer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAQD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,OAAO,CAAa;gBAEhB,SAAS,EAAE,MAAM;IAI7B;;OAEG;YACW,mBAAmB;IAcjC;;OAEG;YACW,aAAa;IA8B3B;;OAEG;IACG,uBAAuB,CAC3B,aAAa,EAAE,SAAS,WAAW,EAAE,EACrC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;IAkGjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwIzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4FrB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
@@ -0,0 +1,393 @@
|
|
1
|
+
import path from 'node:path';
|
2
|
+
import fs from 'node:fs/promises';
|
3
|
+
import { ParseError } from '../types/errors.js';
|
4
|
+
export class PuppeteerRenderer {
|
5
|
+
outputDir;
|
6
|
+
puppeteer = null;
|
7
|
+
browser = null;
|
8
|
+
constructor(outputDir) {
|
9
|
+
this.outputDir = outputDir;
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* Initialize Puppeteer (lazy loading to avoid dependency issues)
|
13
|
+
*/
|
14
|
+
async initializePuppeteer() {
|
15
|
+
if (this.puppeteer) {
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
try {
|
19
|
+
const puppeteerModule = await Function('return import("puppeteer")')();
|
20
|
+
this.puppeteer = puppeteerModule;
|
21
|
+
console.log('Puppeteer initialized successfully');
|
22
|
+
}
|
23
|
+
catch (error) {
|
24
|
+
throw new ParseError('PuppeteerRenderer', 'Puppeteer not available. Install with: npm install puppeteer', error);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Launch browser instance
|
29
|
+
*/
|
30
|
+
async launchBrowser(options) {
|
31
|
+
if (this.browser) {
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
await this.initializePuppeteer();
|
35
|
+
try {
|
36
|
+
this.browser = await this.puppeteer.launch({
|
37
|
+
headless: options.headless !== false ? 'new' : false,
|
38
|
+
defaultViewport: {
|
39
|
+
width: options.width || 1920,
|
40
|
+
height: options.height || 1080,
|
41
|
+
deviceScaleFactor: options.deviceScaleFactor || 2
|
42
|
+
},
|
43
|
+
args: [
|
44
|
+
'--no-sandbox',
|
45
|
+
'--disable-setuid-sandbox',
|
46
|
+
'--disable-web-security',
|
47
|
+
'--disable-features=VizDisplayCompositor',
|
48
|
+
'--font-render-hinting=none'
|
49
|
+
]
|
50
|
+
});
|
51
|
+
console.log('Puppeteer browser launched successfully');
|
52
|
+
}
|
53
|
+
catch (error) {
|
54
|
+
throw new ParseError('PuppeteerRenderer', 'Failed to launch Puppeteer browser', error);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
/**
|
58
|
+
* Render slides using visual layouts in browser
|
59
|
+
*/
|
60
|
+
async renderSlidesFromLayouts(visualLayouts, options = {}) {
|
61
|
+
const { width = 1920, height = 1080, quality = 90, format = 'png', deviceScaleFactor = 2, timeout = 30000 } = options;
|
62
|
+
try {
|
63
|
+
// Ensure output directory exists
|
64
|
+
await fs.mkdir(this.outputDir, { recursive: true });
|
65
|
+
console.log('Created Puppeteer output directory:', this.outputDir);
|
66
|
+
// Launch browser
|
67
|
+
await this.launchBrowser(options);
|
68
|
+
// Create a new page
|
69
|
+
const page = await this.browser.newPage();
|
70
|
+
await page.setViewport({ width, height, deviceScaleFactor });
|
71
|
+
const slideImages = [];
|
72
|
+
// Render each slide
|
73
|
+
for (let i = 0; i < visualLayouts.length; i++) {
|
74
|
+
const layout = visualLayouts[i];
|
75
|
+
const slideNumber = i + 1;
|
76
|
+
try {
|
77
|
+
console.log(`Rendering slide ${slideNumber} with Puppeteer...`);
|
78
|
+
// Generate HTML for this slide
|
79
|
+
const slideHtml = this.generateSlideHtml(layout, { width, height });
|
80
|
+
// Load HTML content
|
81
|
+
await page.setContent(slideHtml, {
|
82
|
+
waitUntil: 'networkidle0',
|
83
|
+
timeout
|
84
|
+
});
|
85
|
+
// Wait for any fonts to load
|
86
|
+
await page.waitForTimeout(1000);
|
87
|
+
// Take screenshot
|
88
|
+
const filename = `slide-${slideNumber.toString().padStart(3, '0')}.${format}`;
|
89
|
+
const savedPath = path.join(this.outputDir, filename);
|
90
|
+
const screenshotBuffer = await page.screenshot({
|
91
|
+
path: savedPath,
|
92
|
+
type: format,
|
93
|
+
quality: format === 'jpeg' ? quality : undefined,
|
94
|
+
fullPage: false,
|
95
|
+
clip: {
|
96
|
+
x: 0,
|
97
|
+
y: 0,
|
98
|
+
width,
|
99
|
+
height
|
100
|
+
}
|
101
|
+
});
|
102
|
+
// Verify file was created
|
103
|
+
const stats = await fs.stat(savedPath);
|
104
|
+
console.log(`Puppeteer rendered slide ${slideNumber}: ${savedPath} (${stats.size} bytes)`);
|
105
|
+
slideImages.push({
|
106
|
+
originalPath: `slide${slideNumber}`,
|
107
|
+
savedPath,
|
108
|
+
size: stats.size,
|
109
|
+
format
|
110
|
+
});
|
111
|
+
}
|
112
|
+
catch (slideError) {
|
113
|
+
console.warn(`Failed to render slide ${slideNumber} with Puppeteer:`, slideError);
|
114
|
+
// Continue with other slides
|
115
|
+
}
|
116
|
+
}
|
117
|
+
await page.close();
|
118
|
+
return {
|
119
|
+
slideImages,
|
120
|
+
slideCount: slideImages.length,
|
121
|
+
metadata: {
|
122
|
+
renderMethod: 'puppeteer',
|
123
|
+
width,
|
124
|
+
height,
|
125
|
+
quality,
|
126
|
+
format
|
127
|
+
}
|
128
|
+
};
|
129
|
+
}
|
130
|
+
catch (error) {
|
131
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
132
|
+
throw new ParseError('PuppeteerRenderer', `Puppeteer rendering failed: ${message}`, error);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
/**
|
136
|
+
* Generate HTML content for a slide
|
137
|
+
*/
|
138
|
+
generateSlideHtml(layout, dimensions) {
|
139
|
+
const { width, height } = dimensions;
|
140
|
+
// Convert EMU to pixels (1 EMU = 1/914400 inches, assume 96 DPI)
|
141
|
+
const emuToPixels = (emu) => Math.round(emu / 914400 * 96);
|
142
|
+
const slideWidth = emuToPixels(layout.dimensions.width);
|
143
|
+
const slideHeight = emuToPixels(layout.dimensions.height);
|
144
|
+
// Scale factor to fit slide into viewport
|
145
|
+
const scaleX = width / slideWidth;
|
146
|
+
const scaleY = height / slideHeight;
|
147
|
+
const scale = Math.min(scaleX, scaleY);
|
148
|
+
const scaledWidth = slideWidth * scale;
|
149
|
+
const scaledHeight = slideHeight * scale;
|
150
|
+
let elementsHtml = '';
|
151
|
+
// Render each element
|
152
|
+
for (const element of layout.elements) {
|
153
|
+
const elementHtml = this.renderElement(element, scale);
|
154
|
+
if (elementHtml) {
|
155
|
+
elementsHtml += elementHtml;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
return `
|
159
|
+
<!DOCTYPE html>
|
160
|
+
<html lang="en">
|
161
|
+
<head>
|
162
|
+
<meta charset="UTF-8">
|
163
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
164
|
+
<title>Slide ${layout.slideNumber}</title>
|
165
|
+
<style>
|
166
|
+
@import url('https://fonts.googleapis.com/css2?family=Arial:wght@400;700&family=Helvetica:wght@400;700&family=Times+New+Roman:wght@400;700&family=Calibri:wght@400;700&display=swap');
|
167
|
+
|
168
|
+
* {
|
169
|
+
margin: 0;
|
170
|
+
padding: 0;
|
171
|
+
box-sizing: border-box;
|
172
|
+
}
|
173
|
+
|
174
|
+
body {
|
175
|
+
width: ${width}px;
|
176
|
+
height: ${height}px;
|
177
|
+
background: ${layout.background?.color || '#FFFFFF'};
|
178
|
+
font-family: 'Calibri', 'Arial', sans-serif;
|
179
|
+
overflow: hidden;
|
180
|
+
position: relative;
|
181
|
+
display: flex;
|
182
|
+
align-items: center;
|
183
|
+
justify-content: center;
|
184
|
+
}
|
185
|
+
|
186
|
+
.slide-container {
|
187
|
+
width: ${scaledWidth}px;
|
188
|
+
height: ${scaledHeight}px;
|
189
|
+
position: relative;
|
190
|
+
background: ${layout.background?.color || '#FFFFFF'};
|
191
|
+
border: 1px solid #e0e0e0;
|
192
|
+
}
|
193
|
+
|
194
|
+
.slide-element {
|
195
|
+
position: absolute;
|
196
|
+
overflow: hidden;
|
197
|
+
}
|
198
|
+
|
199
|
+
.text-element {
|
200
|
+
font-size: 16px;
|
201
|
+
line-height: 1.2;
|
202
|
+
color: #000000;
|
203
|
+
word-wrap: break-word;
|
204
|
+
display: flex;
|
205
|
+
align-items: center;
|
206
|
+
padding: 4px;
|
207
|
+
}
|
208
|
+
|
209
|
+
.shape-element {
|
210
|
+
border: 1px solid #666666;
|
211
|
+
background: #f0f0f0;
|
212
|
+
}
|
213
|
+
|
214
|
+
.image-placeholder {
|
215
|
+
background: linear-gradient(45deg, #f0f0f0 25%, transparent 25%),
|
216
|
+
linear-gradient(-45deg, #f0f0f0 25%, transparent 25%),
|
217
|
+
linear-gradient(45deg, transparent 75%, #f0f0f0 75%),
|
218
|
+
linear-gradient(-45deg, transparent 75%, #f0f0f0 75%);
|
219
|
+
background-size: 20px 20px;
|
220
|
+
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
|
221
|
+
border: 2px dashed #ccc;
|
222
|
+
display: flex;
|
223
|
+
align-items: center;
|
224
|
+
justify-content: center;
|
225
|
+
color: #666;
|
226
|
+
font-size: 14px;
|
227
|
+
}
|
228
|
+
|
229
|
+
.chart-placeholder {
|
230
|
+
background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);
|
231
|
+
border: 2px solid #2196f3;
|
232
|
+
display: flex;
|
233
|
+
align-items: center;
|
234
|
+
justify-content: center;
|
235
|
+
color: #1976d2;
|
236
|
+
font-size: 14px;
|
237
|
+
font-weight: bold;
|
238
|
+
}
|
239
|
+
|
240
|
+
.table-element {
|
241
|
+
border: 1px solid #ccc;
|
242
|
+
background: #fff;
|
243
|
+
}
|
244
|
+
|
245
|
+
.table-element table {
|
246
|
+
width: 100%;
|
247
|
+
height: 100%;
|
248
|
+
border-collapse: collapse;
|
249
|
+
}
|
250
|
+
|
251
|
+
.table-element td {
|
252
|
+
border: 1px solid #ddd;
|
253
|
+
padding: 4px 8px;
|
254
|
+
font-size: 12px;
|
255
|
+
vertical-align: top;
|
256
|
+
}
|
257
|
+
</style>
|
258
|
+
</head>
|
259
|
+
<body>
|
260
|
+
<div class="slide-container">
|
261
|
+
${elementsHtml}
|
262
|
+
</div>
|
263
|
+
</body>
|
264
|
+
</html>`;
|
265
|
+
}
|
266
|
+
/**
|
267
|
+
* Render individual element to HTML
|
268
|
+
*/
|
269
|
+
renderElement(element, scale) {
|
270
|
+
const emuToPixels = (emu) => Math.round(emu / 914400 * 96 * scale);
|
271
|
+
const left = emuToPixels(element.position.x);
|
272
|
+
const top = emuToPixels(element.position.y);
|
273
|
+
const width = emuToPixels(element.size.width);
|
274
|
+
const height = emuToPixels(element.size.height);
|
275
|
+
const baseStyle = `left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;`;
|
276
|
+
switch (element.type) {
|
277
|
+
case 'text':
|
278
|
+
const textContent = element.content?.text || '';
|
279
|
+
const fontSize = Math.max(10, Math.min(24, width / 20)); // Responsive font size
|
280
|
+
return `
|
281
|
+
<div class="slide-element text-element" style="${baseStyle} font-size: ${fontSize}px;">
|
282
|
+
${this.escapeHtml(textContent)}
|
283
|
+
</div>
|
284
|
+
`;
|
285
|
+
case 'shape':
|
286
|
+
return `
|
287
|
+
<div class="slide-element shape-element" style="${baseStyle}">
|
288
|
+
<div style="width: 100%; height: 100%; background: ${element.style?.fill || '#f0f0f0'};"></div>
|
289
|
+
</div>
|
290
|
+
`;
|
291
|
+
case 'image':
|
292
|
+
return `
|
293
|
+
<div class="slide-element image-placeholder" style="${baseStyle}">
|
294
|
+
📷 Image
|
295
|
+
</div>
|
296
|
+
`;
|
297
|
+
case 'chart':
|
298
|
+
const chartType = element.content?.chartType || 'Chart';
|
299
|
+
return `
|
300
|
+
<div class="slide-element chart-placeholder" style="${baseStyle}">
|
301
|
+
📊 ${this.escapeHtml(chartType)}
|
302
|
+
</div>
|
303
|
+
`;
|
304
|
+
case 'table':
|
305
|
+
const rows = element.content?.rows || [];
|
306
|
+
let tableHtml = '<table>';
|
307
|
+
for (const row of rows.slice(0, 10)) { // Limit rows for performance
|
308
|
+
tableHtml += '<tr>';
|
309
|
+
for (const cell of row.cells.slice(0, 6)) { // Limit columns
|
310
|
+
tableHtml += `<td>${this.escapeHtml(cell.text || '')}</td>`;
|
311
|
+
}
|
312
|
+
tableHtml += '</tr>';
|
313
|
+
}
|
314
|
+
tableHtml += '</table>';
|
315
|
+
return `
|
316
|
+
<div class="slide-element table-element" style="${baseStyle}">
|
317
|
+
${tableHtml}
|
318
|
+
</div>
|
319
|
+
`;
|
320
|
+
case 'group':
|
321
|
+
// Render child elements
|
322
|
+
let groupHtml = '';
|
323
|
+
if (element.children && Array.isArray(element.children)) {
|
324
|
+
for (const child of element.children) {
|
325
|
+
// Adjust child positions relative to group
|
326
|
+
const adjustedChild = {
|
327
|
+
...child,
|
328
|
+
position: {
|
329
|
+
x: child.position.x + element.position.x,
|
330
|
+
y: child.position.y + element.position.y,
|
331
|
+
z: child.position.z
|
332
|
+
}
|
333
|
+
};
|
334
|
+
groupHtml += this.renderElement(adjustedChild, scale);
|
335
|
+
}
|
336
|
+
}
|
337
|
+
return groupHtml;
|
338
|
+
default:
|
339
|
+
return `
|
340
|
+
<div class="slide-element" style="${baseStyle} border: 1px dashed #ccc; background: #fafafa;">
|
341
|
+
<div style="padding: 4px; font-size: 12px; color: #666;">
|
342
|
+
${element.type || 'Unknown'}
|
343
|
+
</div>
|
344
|
+
</div>
|
345
|
+
`;
|
346
|
+
}
|
347
|
+
}
|
348
|
+
/**
|
349
|
+
* Escape HTML characters
|
350
|
+
*/
|
351
|
+
escapeHtml(text) {
|
352
|
+
return text
|
353
|
+
.replace(/&/g, '&')
|
354
|
+
.replace(/</g, '<')
|
355
|
+
.replace(/>/g, '>')
|
356
|
+
.replace(/"/g, '"')
|
357
|
+
.replace(/'/g, ''');
|
358
|
+
}
|
359
|
+
/**
|
360
|
+
* Check if Puppeteer is available
|
361
|
+
*/
|
362
|
+
static async isAvailable() {
|
363
|
+
try {
|
364
|
+
await Function('return import("puppeteer")')();
|
365
|
+
return true;
|
366
|
+
}
|
367
|
+
catch {
|
368
|
+
return false;
|
369
|
+
}
|
370
|
+
}
|
371
|
+
/**
|
372
|
+
* Close browser instance
|
373
|
+
*/
|
374
|
+
async close() {
|
375
|
+
if (this.browser) {
|
376
|
+
try {
|
377
|
+
await this.browser.close();
|
378
|
+
this.browser = null;
|
379
|
+
console.log('Puppeteer browser closed');
|
380
|
+
}
|
381
|
+
catch (error) {
|
382
|
+
console.warn('Error closing Puppeteer browser:', error);
|
383
|
+
}
|
384
|
+
}
|
385
|
+
}
|
386
|
+
/**
|
387
|
+
* Clean up resources
|
388
|
+
*/
|
389
|
+
async cleanup() {
|
390
|
+
await this.close();
|
391
|
+
}
|
392
|
+
}
|
393
|
+
//# sourceMappingURL=puppeteer-renderer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"puppeteer-renderer.js","sourceRoot":"","sources":["../../src/utils/puppeteer-renderer.ts"],"names":[],"mappings":"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"}
|
@@ -1,29 +1,37 @@
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
2
2
|
import type { ImageData } from '../types/interfaces.js';
|
3
|
+
import { type SlideLayout } from './pptx-visual-parser.js';
|
4
|
+
import { type PuppeteerRenderOptions } from './puppeteer-renderer.js';
|
3
5
|
export interface SlideRenderOptions {
|
4
6
|
readonly quality?: number;
|
5
7
|
readonly density?: number;
|
6
8
|
readonly format?: 'png' | 'jpg';
|
7
9
|
readonly saveBase64?: boolean;
|
10
|
+
readonly useVisualLayouts?: boolean;
|
11
|
+
readonly usePuppeteer?: boolean;
|
12
|
+
readonly puppeteerOptions?: PuppeteerRenderOptions;
|
8
13
|
}
|
9
14
|
export interface SlideRenderResult {
|
10
15
|
readonly slideImages: readonly ImageData[];
|
11
16
|
readonly slideCount: number;
|
17
|
+
readonly visualLayouts?: readonly SlideLayout[];
|
12
18
|
readonly metadata: {
|
13
19
|
readonly format: string;
|
14
20
|
readonly quality: number;
|
15
21
|
readonly density: number;
|
22
|
+
readonly hasVisualLayouts?: boolean;
|
16
23
|
};
|
17
24
|
}
|
18
25
|
export declare class SlideRenderer {
|
19
26
|
private readonly outputDir;
|
27
|
+
private readonly converter;
|
20
28
|
constructor(outputDir: string);
|
21
29
|
/**
|
22
30
|
* Convert PPTX buffer to individual slide images
|
23
31
|
*/
|
24
32
|
renderSlidesToImages(pptxBuffer: Buffer, options?: SlideRenderOptions): Promise<SlideRenderResult>;
|
25
33
|
/**
|
26
|
-
* Convert PPTX buffer to PDF buffer using
|
34
|
+
* Convert PPTX buffer to PDF buffer using enhanced LibreOffice converter
|
27
35
|
*/
|
28
36
|
private convertPptxToPdf;
|
29
37
|
/**
|
@@ -72,20 +80,40 @@ export declare class SlideRenderer {
|
|
72
80
|
*/
|
73
81
|
private createPlaceholderSlideImage;
|
74
82
|
/**
|
75
|
-
* Convert PDF buffer to individual slide images
|
83
|
+
* Convert PDF buffer to individual slide images with optimization
|
76
84
|
*/
|
77
85
|
private convertPdfToSlideImages;
|
86
|
+
/**
|
87
|
+
* Optimize PDF to image conversion settings based on quality requirements
|
88
|
+
*/
|
89
|
+
private optimizePdfToImageSettings;
|
78
90
|
/**
|
79
91
|
* Generate markdown with slide images
|
80
92
|
*/
|
81
93
|
generateSlideMarkdown(slideImages: readonly ImageData[], title?: string): string;
|
94
|
+
/**
|
95
|
+
* Enhance slide images using visual layout information
|
96
|
+
*/
|
97
|
+
private enhanceSlideImagesWithLayouts;
|
98
|
+
/**
|
99
|
+
* Add visual enhancements based on layout information
|
100
|
+
*/
|
101
|
+
private addVisualEnhancements;
|
82
102
|
/**
|
83
103
|
* Clean up generated image files
|
84
104
|
*/
|
85
105
|
cleanup(): Promise<void>;
|
106
|
+
/**
|
107
|
+
* Render slides using Puppeteer browser-based rendering
|
108
|
+
*/
|
109
|
+
private renderWithPuppeteer;
|
86
110
|
/**
|
87
111
|
* Check if LibreOffice is available on the system
|
88
112
|
*/
|
89
113
|
static checkLibreOfficeAvailability(): Promise<boolean>;
|
114
|
+
/**
|
115
|
+
* Check if Puppeteer is available on the system
|
116
|
+
*/
|
117
|
+
static checkPuppeteerAvailability(): Promise<boolean>;
|
90
118
|
}
|
91
119
|
//# sourceMappingURL=slide-renderer.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slide-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/slide-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
1
|
+
{"version":3,"file":"slide-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/slide-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAKzF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KACrC,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;gBAErC,SAAS,EAAE,MAAM;IAK7B;;OAEG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAmG7B;;OAEG;YACW,gBAAgB;IAmE9B;;OAEG;YACW,4BAA4B;IAkF1C,OAAO,CAAC,oBAAoB,CAAmB;IAE/C;;OAEG;YACW,kBAAkB;IA8DhC;;OAEG;YACW,sBAAsB;IA2CpC;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAwBhB;;OAEG;YACW,yBAAyB;IAmBvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;YACW,eAAe;IAwB7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;YACW,2BAA2B;IAQzC;;OAEG;YACW,uBAAuB;IAwFrC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6ClC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBhF;;OAEG;YACW,6BAA6B;IA2D3C;;OAEG;YACW,qBAAqB;IA6CnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;WACU,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IAW7D;;OAEG;WACU,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5D"}
|