file2md 1.1.4 → 1.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmI1G;AAGD,mBAAmB,kBAAkB,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyI1G;AAGD,mBAAmB,kBAAkB,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -102,7 +102,13 @@ export async function convert(input, options = {}) {
102
102
  break;
103
103
  }
104
104
  case SUPPORTED_MIME_TYPES.PPTX: {
105
- const result = await parsePptx(buffer, imageExtractor, chartExtractor, { preserveLayout, extractImages, extractCharts });
105
+ const result = await parsePptx(buffer, imageExtractor, chartExtractor, {
106
+ preserveLayout,
107
+ extractImages,
108
+ extractCharts,
109
+ outputDir: imageDir,
110
+ useSlideScreenshots: true // Enable slide screenshots by default
111
+ });
106
112
  markdown = result.markdown;
107
113
  images = result.images || [];
108
114
  charts = result.charts || [];
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import type { Buffer } from 'node:buffer';
2
2
  import type { ImageExtractor } from '../utils/image-extractor.js';
3
3
  import type { ChartExtractor } from '../utils/chart-extractor.js';
4
+ import { type SlideRenderOptions } from '../utils/slide-renderer.js';
4
5
  import type { ImageData, ChartData } from '../types/interfaces.js';
5
6
  export interface PptxParseOptions {
6
7
  readonly preserveLayout?: boolean;
7
8
  readonly extractImages?: boolean;
8
9
  readonly extractCharts?: boolean;
10
+ readonly useSlideScreenshots?: boolean;
11
+ readonly slideRenderOptions?: SlideRenderOptions;
12
+ readonly outputDir?: string;
9
13
  }
10
14
  export interface PptxParseResult {
11
15
  readonly markdown: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pptx-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/pptx-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EAIV,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAkBD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAwE1B"}
1
+ {"version":3,"file":"pptx-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/pptx-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAOD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAuB1B"}
@@ -1,300 +1,204 @@
1
1
  import JSZip from 'jszip';
2
2
  import { parseStringPromise } from 'xml2js';
3
3
  import path from 'node:path';
4
- import { LayoutParser } from '../utils/layout-parser.js';
4
+ import { SlideRenderer } from '../utils/slide-renderer.js';
5
5
  import { ParseError } from '../types/errors.js';
6
6
  /**
7
7
  * Parse PPTX buffer and convert to markdown with layout preservation
8
8
  */
9
9
  export async function parsePptx(buffer, imageExtractor, chartExtractor, options = {}) {
10
10
  try {
11
- const zip = await JSZip.loadAsync(buffer);
12
- // Extract images first
13
- const extractedImages = options.extractImages !== false
14
- ? await imageExtractor.extractImagesFromZip(zip, 'ppt/')
15
- : [];
16
- // Extract charts if enabled
17
- const extractedCharts = options.extractCharts !== false
18
- ? await chartExtractor.extractChartsFromZip(zip, 'ppt/')
19
- : [];
20
- // Initialize layout parser
21
- const layoutParser = new LayoutParser();
22
- const slideFiles = [];
23
- zip.forEach((relativePath, file) => {
24
- if (relativePath.startsWith('ppt/slides/slide') && relativePath.endsWith('.xml')) {
25
- slideFiles.push({
26
- path: relativePath,
27
- file: file
28
- });
29
- }
30
- });
31
- slideFiles.sort((a, b) => {
32
- const aNum = parseInt(a.path.match(/slide(\d+)\.xml/)?.[1] || '0');
33
- const bNum = parseInt(b.path.match(/slide(\d+)\.xml/)?.[1] || '0');
34
- return aNum - bNum;
35
- });
36
- let markdown = '';
37
- for (let i = 0; i < slideFiles.length; i++) {
38
- const slideFile = slideFiles[i];
39
- const slideNumber = i + 1;
40
- markdown += `## Slide ${slideNumber}\n\n`;
41
- const xmlContent = await slideFile.file.async('string');
42
- const slideContent = await extractAdvancedSlideContent(xmlContent, imageExtractor, extractedImages, slideNumber, layoutParser);
43
- if (slideContent.trim()) {
44
- markdown += slideContent + '\n\n';
11
+ // Check if slide screenshots are requested (new default behavior)
12
+ if (options.useSlideScreenshots !== false) {
13
+ return await parsePptxWithSlideScreenshots(buffer, imageExtractor, chartExtractor, options);
14
+ }
15
+ // Fallback to legacy layout parsing if slide screenshots are disabled
16
+ return await parsePptxLegacyMode(buffer, imageExtractor, chartExtractor, options);
17
+ }
18
+ catch (error) {
19
+ const message = error instanceof Error ? error.message : 'Unknown error';
20
+ throw new ParseError('PPTX', message, error);
21
+ }
22
+ }
23
+ /**
24
+ * New slide screenshot-based parsing (recommended)
25
+ */
26
+ async function parsePptxWithSlideScreenshots(buffer, imageExtractor, chartExtractor, options) {
27
+ const outputDir = options.outputDir || './images';
28
+ const slideRenderer = new SlideRenderer(outputDir);
29
+ try {
30
+ // Convert PPTX to slide images
31
+ const renderResult = await slideRenderer.renderSlidesToImages(buffer, options.slideRenderOptions);
32
+ // Extract title from PPTX metadata for better markdown generation
33
+ const title = await extractPptxTitle(buffer);
34
+ // Generate markdown with slide images
35
+ const markdown = slideRenderer.generateSlideMarkdown(renderResult.slideImages, title);
36
+ // Still extract charts if requested (need to load zip for chart extraction)
37
+ let extractedCharts = [];
38
+ if (options.extractCharts !== false) {
39
+ try {
40
+ const zip = await JSZip.loadAsync(buffer);
41
+ extractedCharts = await chartExtractor.extractChartsFromZip(zip, 'ppt/');
45
42
  }
46
- else {
47
- markdown += '*No content*\n\n';
43
+ catch {
44
+ // Ignore chart extraction errors
48
45
  }
49
46
  }
50
47
  return {
51
- markdown: markdown.trim(),
52
- images: extractedImages,
48
+ markdown,
49
+ images: renderResult.slideImages,
53
50
  charts: extractedCharts.map(chart => chart.data),
54
- slideCount: slideFiles.length,
51
+ slideCount: renderResult.slideCount,
55
52
  metadata: {
56
- totalSlides: slideFiles.length,
57
- hasImages: extractedImages.length > 0,
58
- hasCharts: extractedCharts.length > 0
53
+ totalSlides: renderResult.slideCount,
54
+ hasImages: renderResult.slideImages.length > 0,
55
+ hasCharts: extractedCharts.length > 0,
56
+ renderMethod: 'slide-screenshots',
57
+ ...renderResult.metadata
59
58
  }
60
59
  };
61
60
  }
62
61
  catch (error) {
63
- const message = error instanceof Error ? error.message : 'Unknown error';
64
- throw new ParseError('PPTX', message, error);
62
+ // If slide rendering fails, fall back to legacy mode
63
+ console.warn('Slide screenshot rendering failed, falling back to legacy mode:', error);
64
+ return await parsePptxLegacyMode(buffer, imageExtractor, chartExtractor, options);
65
65
  }
66
66
  }
67
- async function extractAdvancedSlideContent(xmlContent, imageExtractor, extractedImages, slideNumber, layoutParser) {
67
+ /**
68
+ * Legacy layout parsing mode (fallback)
69
+ */
70
+ async function parsePptxLegacyMode(buffer, imageExtractor, chartExtractor, options) {
71
+ const zip = await JSZip.loadAsync(buffer);
72
+ // Extract images first
73
+ const extractedImages = options.extractImages !== false
74
+ ? await imageExtractor.extractImagesFromZip(zip, 'ppt/')
75
+ : [];
76
+ // Extract charts if enabled
77
+ const extractedCharts = options.extractCharts !== false
78
+ ? await chartExtractor.extractChartsFromZip(zip, 'ppt/')
79
+ : [];
80
+ const slideFiles = [];
81
+ zip.forEach((relativePath, file) => {
82
+ if (relativePath.startsWith('ppt/slides/slide') && relativePath.endsWith('.xml')) {
83
+ slideFiles.push({
84
+ path: relativePath,
85
+ file: file
86
+ });
87
+ }
88
+ });
89
+ slideFiles.sort((a, b) => {
90
+ const aNum = parseInt(a.path.match(/slide(\d+)\.xml/)?.[1] || '0');
91
+ const bNum = parseInt(b.path.match(/slide(\d+)\.xml/)?.[1] || '0');
92
+ return aNum - bNum;
93
+ });
94
+ let markdown = '';
95
+ for (let i = 0; i < slideFiles.length; i++) {
96
+ const slideFile = slideFiles[i];
97
+ const slideNumber = i + 1;
98
+ markdown += `## Slide ${slideNumber}\n\n`;
99
+ const xmlContent = await slideFile.file.async('string');
100
+ const slideContent = await extractLegacySlideContent(xmlContent, imageExtractor, extractedImages, slideNumber);
101
+ if (slideContent.trim()) {
102
+ markdown += slideContent + '\n\n';
103
+ }
104
+ else {
105
+ markdown += '*No content*\n\n';
106
+ }
107
+ }
108
+ return {
109
+ markdown: markdown.trim(),
110
+ images: extractedImages,
111
+ charts: extractedCharts.map(chart => chart.data),
112
+ slideCount: slideFiles.length,
113
+ metadata: {
114
+ totalSlides: slideFiles.length,
115
+ hasImages: extractedImages.length > 0,
116
+ hasCharts: extractedCharts.length > 0,
117
+ renderMethod: 'legacy-layout-parsing'
118
+ }
119
+ };
120
+ }
121
+ /**
122
+ * Extract PPTX title from document properties
123
+ */
124
+ async function extractPptxTitle(buffer) {
125
+ try {
126
+ const zip = await JSZip.loadAsync(buffer);
127
+ const corePropsFile = zip.file('docProps/core.xml');
128
+ if (corePropsFile) {
129
+ const corePropsContent = await corePropsFile.async('string');
130
+ const result = await parseStringPromise(corePropsContent);
131
+ // Try to extract title from core properties
132
+ const title = result?.['cp:coreProperties']?.[0]?.['dc:title']?.[0];
133
+ if (title && typeof title === 'string' && title.trim()) {
134
+ return title.trim();
135
+ }
136
+ }
137
+ }
138
+ catch {
139
+ // Ignore errors and return undefined
140
+ }
141
+ return undefined;
142
+ }
143
+ /**
144
+ * Legacy slide content extraction (simplified version)
145
+ */
146
+ async function extractLegacySlideContent(xmlContent, imageExtractor, extractedImages, slideNumber) {
68
147
  try {
69
148
  const result = await parseStringPromise(xmlContent);
70
- const elements = [];
71
- let imageCount = 0;
72
- // Extract all shapes and their positions
73
- function extractShapes(obj, parentPos = { x: 0, y: 0 }) {
149
+ let markdown = '';
150
+ // Simple text extraction function
151
+ function extractText(obj) {
152
+ let text = '';
74
153
  if (typeof obj === 'object' && obj !== null) {
75
154
  if (Array.isArray(obj)) {
76
155
  for (const item of obj) {
77
- extractShapes(item, parentPos);
156
+ text += extractText(item);
78
157
  }
79
158
  }
80
159
  else {
81
- // Check for shape positioning
82
- let position = { ...parentPos };
83
- if (obj['a:off']?.[0]?.$) {
84
- position.x = parseInt(obj['a:off'][0].$.x) || 0;
85
- position.y = parseInt(obj['a:off'][0].$.y) || 0;
86
- }
87
- // Check for text content in shapes
160
+ // Extract text content
88
161
  if (obj['a:t']) {
89
- const textElement = {
90
- type: 'text',
91
- content: '',
92
- position: position
93
- };
94
162
  if (Array.isArray(obj['a:t'])) {
95
163
  for (const textItem of obj['a:t']) {
96
- let text = '';
97
164
  if (typeof textItem === 'string') {
98
- text = textItem;
165
+ text += textItem + ' ';
99
166
  }
100
167
  else if (textItem && typeof textItem === 'object' && '_' in textItem) {
101
- text = textItem._;
102
- }
103
- if (text && text.trim()) {
104
- textElement.content += text.trim() + ' ';
168
+ text += textItem._ + ' ';
105
169
  }
106
170
  }
107
171
  }
108
- if (textElement.content.trim()) {
109
- elements.push(textElement);
110
- }
111
- }
112
- // Check for tables
113
- if (obj['a:tbl']) {
114
- const tableElement = {
115
- type: 'table',
116
- content: obj['a:tbl'],
117
- position: position
118
- };
119
- elements.push(tableElement);
120
- }
121
- // Check for images
122
- if (obj['a:blip'] || obj['p:pic'] || obj['a:pic']) {
123
- const slideImages = extractedImages.filter(img => img.originalPath.includes(`slide${slideNumber}`) ||
124
- img.originalPath.includes('media/'));
125
- if (slideImages.length > imageCount) {
126
- const img = slideImages[imageCount];
127
- if (img?.savedPath) {
128
- const imageElement = {
129
- type: 'image',
130
- content: img.savedPath,
131
- position: position
132
- };
133
- elements.push(imageElement);
134
- imageCount++;
135
- }
136
- }
137
172
  }
138
173
  // Recursively process nested objects
139
174
  for (const key in obj) {
140
175
  if (key !== 'a:t') {
141
- extractShapes(obj[key], position);
176
+ text += extractText(obj[key]);
142
177
  }
143
178
  }
144
179
  }
145
180
  }
181
+ return text;
146
182
  }
147
- extractShapes(result);
148
- // Sort elements by position (top to bottom, left to right)
149
- const sortedElements = layoutParser.calculateRelativePosition(elements);
150
- // Use improved layout grouping instead of aggressive column detection
151
- let markdown = '';
152
- // Group elements into logical sections rather than rows/columns
153
- const sections = groupElementsIntoSections(sortedElements);
154
- for (const section of sections) {
155
- if (section.type === 'title') {
156
- markdown += `### ${section.content}\n\n`;
157
- }
158
- else if (section.type === 'paragraph') {
159
- markdown += `${section.content}\n\n`;
160
- }
161
- else if (section.type === 'table') {
162
- markdown += parseSlideTable(section.content, layoutParser) + '\n\n';
163
- }
164
- else if (section.type === 'image') {
165
- const filename = path.basename(section.content);
166
- markdown += imageExtractor.getImageMarkdown(`Slide ${slideNumber} Image`, filename) + '\n\n';
167
- }
168
- else if (section.type === 'list') {
169
- markdown += section.content + '\n\n';
170
- }
183
+ // Extract all text content
184
+ const textContent = extractText(result).trim();
185
+ if (textContent) {
186
+ markdown += textContent + '\n\n';
171
187
  }
172
- // If no organized content, fall back to simple extraction
173
- if (!markdown.trim() && extractedImages.length > 0) {
174
- const slideImages = extractedImages.filter(img => img.originalPath.includes(`slide${slideNumber}`) ||
175
- (slideNumber === 1 && img.originalPath.includes('media/')));
176
- for (const img of slideImages) {
177
- if (img.savedPath) {
178
- const filename = path.basename(img.savedPath);
179
- markdown += imageExtractor.getImageMarkdown(`Slide ${slideNumber} Image`, filename) + '\n\n';
180
- }
188
+ // Add any images for this slide
189
+ const slideImages = extractedImages.filter(img => img.originalPath.includes(`slide${slideNumber}`) ||
190
+ (slideNumber === 1 && img.originalPath.includes('media/')));
191
+ for (const img of slideImages) {
192
+ if (img.savedPath) {
193
+ const filename = path.basename(img.savedPath);
194
+ markdown += imageExtractor.getImageMarkdown(`Slide ${slideNumber} Image`, filename) + '\n\n';
181
195
  }
182
196
  }
183
197
  return markdown.trim();
184
198
  }
185
199
  catch (error) {
186
200
  const message = error instanceof Error ? error.message : 'Unknown error';
187
- throw new ParseError('PPTX', `Failed to extract advanced content from slide: ${message}`, error);
188
- }
189
- }
190
- function groupElementsIntoSections(elements) {
191
- const sections = [];
192
- for (const element of elements) {
193
- const content = element.content;
194
- if (element.type === 'text') {
195
- // Determine if it's a title based on position and characteristics
196
- const isTitle = (element.position?.y || 0) < 1000000 &&
197
- content.length < 100 &&
198
- content.length > 0;
199
- if (isTitle && !content.includes('\n') && !content.match(/^\d+\./)) {
200
- sections.push({
201
- type: 'title',
202
- content: content.trim(),
203
- position: element.position
204
- });
205
- }
206
- else {
207
- // Check if it looks like a list item
208
- if (content.match(/^[•\-*]\s/) || content.match(/^\d+\.\s/)) {
209
- sections.push({
210
- type: 'list',
211
- content: content.trim(),
212
- position: element.position
213
- });
214
- }
215
- else {
216
- sections.push({
217
- type: 'paragraph',
218
- content: content.trim(),
219
- position: element.position
220
- });
221
- }
222
- }
223
- }
224
- else if (element.type === 'table') {
225
- sections.push({
226
- type: 'table',
227
- content: element.content,
228
- position: element.position
229
- });
230
- }
231
- else if (element.type === 'image') {
232
- sections.push({
233
- type: 'image',
234
- content: element.content,
235
- position: element.position
236
- });
237
- }
238
- }
239
- return sections;
240
- }
241
- function formatSlideElement(element, layoutParser, imageExtractor) {
242
- switch (element.type) {
243
- case 'text': {
244
- const content = element.content;
245
- // Determine if it's a title based on position and length
246
- if ((element.position?.y || 0) < 1000000 && content.length < 100) {
247
- return `### ${content.trim()}`;
248
- }
249
- return content.trim();
250
- }
251
- case 'table':
252
- // Parse PowerPoint table (simplified)
253
- return parseSlideTable(element.content, layoutParser);
254
- case 'image': {
255
- const imagePath = element.content;
256
- const filename = path.basename(imagePath);
257
- return imageExtractor.getImageMarkdown('Slide Image', filename);
258
- }
259
- default:
260
- return typeof element.content === 'string' ? element.content : '';
261
- }
262
- }
263
- function parseSlideTable(tableData, layoutParser) {
264
- // Simplified table parsing for PowerPoint
265
- const table = tableData;
266
- if (!table?.[0]?.['a:tr']) {
267
- return '';
268
- }
269
- const rows = table[0]['a:tr'];
270
- const tableStruct = { rows: [] };
271
- for (const row of rows) {
272
- const cells = row['a:tc'] || [];
273
- const rowData = { cells: [] };
274
- for (const cell of cells) {
275
- let cellText = '';
276
- // Extract text from cell
277
- if (cell['a:txBody']?.[0]?.['a:p']) {
278
- const paragraphs = cell['a:txBody'][0]['a:p'];
279
- for (const para of paragraphs) {
280
- if (para['a:r']?.[0]?.['a:t']?.[0]) {
281
- cellText += para['a:r'][0]['a:t'][0] + ' ';
282
- }
283
- }
284
- }
285
- rowData.cells.push({
286
- text: cellText.trim(),
287
- bold: false,
288
- italic: false,
289
- alignment: 'left',
290
- backgroundColor: undefined,
291
- colSpan: 1,
292
- rowSpan: 1,
293
- merged: false
294
- });
295
- }
296
- tableStruct.rows.push(rowData);
201
+ throw new ParseError('PPTX', `Failed to extract legacy content from slide: ${message}`, error);
297
202
  }
298
- return layoutParser.parseAdvancedTable(tableStruct);
299
203
  }
300
204
  //# sourceMappingURL=pptx-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pptx-parser.js","sourceRoot":"","sources":["../../src/parsers/pptx-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pptx-parser.js","sourceRoot":"","sources":["../../src/parsers/pptx-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import type { ImageData } from '../types/interfaces.js';
3
+ export interface SlideRenderOptions {
4
+ readonly quality?: number;
5
+ readonly density?: number;
6
+ readonly format?: 'png' | 'jpg';
7
+ readonly saveBase64?: boolean;
8
+ }
9
+ export interface SlideRenderResult {
10
+ readonly slideImages: readonly ImageData[];
11
+ readonly slideCount: number;
12
+ readonly metadata: {
13
+ readonly format: string;
14
+ readonly quality: number;
15
+ readonly density: number;
16
+ };
17
+ }
18
+ export declare class SlideRenderer {
19
+ private readonly outputDir;
20
+ constructor(outputDir: string);
21
+ /**
22
+ * Convert PPTX buffer to individual slide images
23
+ */
24
+ renderSlidesToImages(pptxBuffer: Buffer, options?: SlideRenderOptions): Promise<SlideRenderResult>;
25
+ /**
26
+ * Convert PPTX buffer to PDF buffer using LibreOffice
27
+ */
28
+ private convertPptxToPdf;
29
+ /**
30
+ * Convert PDF buffer to individual slide images using pdf2pic
31
+ */
32
+ private convertPdfToSlideImages;
33
+ /**
34
+ * Generate markdown with slide images
35
+ */
36
+ generateSlideMarkdown(slideImages: readonly ImageData[], title?: string): string;
37
+ /**
38
+ * Clean up generated image files
39
+ */
40
+ cleanup(): Promise<void>;
41
+ /**
42
+ * Check if LibreOffice is available on the system
43
+ */
44
+ static checkLibreOfficeAvailability(): Promise<boolean>;
45
+ }
46
+ //# sourceMappingURL=slide-renderer.d.ts.map
@@ -0,0 +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;AAKxD,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;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,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;KAC1B,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAgD7B;;OAEG;YACY,gBAAgB;IA0B/B;;OAEG;YACW,uBAAuB;IAoErC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBhF;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;WACU,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;CAU9D"}
@@ -0,0 +1,187 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs/promises';
3
+ import { Buffer } from 'node:buffer';
4
+ import libre from 'libreoffice-convert';
5
+ import { fromBuffer } from 'pdf2pic';
6
+ import { promisify } from 'node:util';
7
+ import { ParseError } from '../types/errors.js';
8
+ // Promisify libreoffice-convert
9
+ const convertAsync = promisify(libre.convert);
10
+ export class SlideRenderer {
11
+ outputDir;
12
+ constructor(outputDir) {
13
+ this.outputDir = outputDir;
14
+ }
15
+ /**
16
+ * Convert PPTX buffer to individual slide images
17
+ */
18
+ async renderSlidesToImages(pptxBuffer, options = {}) {
19
+ const { quality = 90, density = 150, format = 'png', saveBase64 = false } = options;
20
+ try {
21
+ // Ensure output directory exists
22
+ await fs.mkdir(this.outputDir, { recursive: true });
23
+ console.log('Created slide output directory:', this.outputDir);
24
+ // Step 1: Convert PPTX to PDF using LibreOffice
25
+ console.log('Converting PPTX to PDF...');
26
+ const pdfBuffer = await this.convertPptxToPdf(pptxBuffer);
27
+ console.log('PPTX to PDF conversion successful, PDF size:', pdfBuffer.length);
28
+ // Step 2: Convert PDF to individual slide images
29
+ console.log('Converting PDF to slide images...');
30
+ const slideImages = await this.convertPdfToSlideImages(pdfBuffer, { quality, density, format, saveBase64 });
31
+ console.log(`Generated ${slideImages.length} slide images`);
32
+ // Verify images were actually created
33
+ for (const slide of slideImages) {
34
+ const exists = await fs.access(slide.savedPath).then(() => true).catch(() => false);
35
+ console.log(`Slide image ${slide.savedPath} exists:`, exists);
36
+ }
37
+ return {
38
+ slideImages,
39
+ slideCount: slideImages.length,
40
+ metadata: {
41
+ format,
42
+ quality,
43
+ density
44
+ }
45
+ };
46
+ }
47
+ catch (error) {
48
+ const message = error instanceof Error ? error.message : 'Unknown error';
49
+ console.error('SlideRenderer error:', message);
50
+ throw new ParseError('SlideRenderer', `Failed to render slides: ${message}`, error);
51
+ }
52
+ }
53
+ /**
54
+ * Convert PPTX buffer to PDF buffer using LibreOffice
55
+ */
56
+ async convertPptxToPdf(pptxBuffer) {
57
+ try {
58
+ console.log('LibreOffice conversion: Input PPTX size:', pptxBuffer.length);
59
+ // Convert PPTX to PDF using LibreOffice
60
+ const pdfBuffer = await convertAsync(pptxBuffer, '.pdf', undefined);
61
+ console.log('LibreOffice conversion: Output PDF size:', pdfBuffer?.length || 0);
62
+ if (!pdfBuffer || pdfBuffer.length === 0) {
63
+ throw new Error('LibreOffice conversion resulted in empty PDF');
64
+ }
65
+ return pdfBuffer;
66
+ }
67
+ catch (error) {
68
+ const message = error instanceof Error ? error.message : 'Unknown error';
69
+ console.error('LibreOffice conversion error:', error);
70
+ // Check if LibreOffice is available
71
+ if (message.includes('spawn') || message.includes('ENOENT') || message.includes('command not found')) {
72
+ throw new ParseError('SlideRenderer', 'LibreOffice is not installed or not accessible. Please install LibreOffice to enable slide screenshot functionality.', error);
73
+ }
74
+ throw new ParseError('SlideRenderer', `PPTX to PDF conversion failed: ${message}`, error);
75
+ }
76
+ }
77
+ /**
78
+ * Convert PDF buffer to individual slide images using pdf2pic
79
+ */
80
+ async convertPdfToSlideImages(pdfBuffer, options) {
81
+ try {
82
+ // Ensure output directory exists
83
+ await fs.mkdir(this.outputDir, { recursive: true });
84
+ console.log('PDF to images: Output directory created:', this.outputDir);
85
+ // Configure pdf2pic
86
+ const convert = fromBuffer(pdfBuffer, {
87
+ density: options.density,
88
+ saveFilename: 'slide',
89
+ savePath: this.outputDir,
90
+ format: options.format,
91
+ width: undefined, // Let pdf2pic calculate based on density
92
+ height: undefined,
93
+ quality: options.quality
94
+ });
95
+ console.log('PDF2PIC configuration:', {
96
+ density: options.density,
97
+ format: options.format,
98
+ quality: options.quality,
99
+ outputDir: this.outputDir
100
+ });
101
+ // Get total number of pages first
102
+ const storeAsImage = convert.bulk(-1, true);
103
+ const results = await storeAsImage;
104
+ console.log(`PDF2PIC processed ${results.length} pages`);
105
+ const slideImages = [];
106
+ for (let i = 0; i < results.length; i++) {
107
+ const result = results[i];
108
+ const slideNumber = i + 1;
109
+ const filename = `slide-${slideNumber.toString().padStart(3, '0')}.${options.format}`;
110
+ const savedPath = path.join(this.outputDir, filename);
111
+ console.log(`Processing slide ${slideNumber}, expected file: ${filename}`);
112
+ // Save the image file
113
+ const imageBuffer = result.buffer;
114
+ if (imageBuffer) {
115
+ await fs.writeFile(savedPath, imageBuffer);
116
+ console.log(`Saved slide image: ${savedPath} (${imageBuffer.length} bytes)`);
117
+ slideImages.push({
118
+ originalPath: `slide${slideNumber}`, // Virtual path for consistency
119
+ savedPath: savedPath,
120
+ size: imageBuffer.length,
121
+ format: options.format
122
+ });
123
+ }
124
+ else {
125
+ console.warn(`No buffer found for slide ${slideNumber}`);
126
+ }
127
+ }
128
+ console.log(`Successfully created ${slideImages.length} slide images`);
129
+ return slideImages;
130
+ }
131
+ catch (error) {
132
+ const message = error instanceof Error ? error.message : 'Unknown error';
133
+ console.error('PDF to images conversion error:', error);
134
+ throw new ParseError('SlideRenderer', `PDF to images conversion failed: ${message}`, error);
135
+ }
136
+ }
137
+ /**
138
+ * Generate markdown with slide images
139
+ */
140
+ generateSlideMarkdown(slideImages, title) {
141
+ let markdown = '';
142
+ if (title) {
143
+ markdown += `# ${title}\n\n`;
144
+ }
145
+ for (let i = 0; i < slideImages.length; i++) {
146
+ const slide = slideImages[i];
147
+ const slideNumber = i + 1;
148
+ markdown += `## Slide ${slideNumber}\n\n`;
149
+ // Use relative path for markdown image reference
150
+ const relativePath = path.relative(process.cwd(), slide.savedPath)
151
+ .replace(/\\/g, '/'); // Ensure forward slashes for markdown
152
+ markdown += `![Slide ${slideNumber}](${relativePath})\n\n`;
153
+ }
154
+ return markdown.trim();
155
+ }
156
+ /**
157
+ * Clean up generated image files
158
+ */
159
+ async cleanup() {
160
+ try {
161
+ const files = await fs.readdir(this.outputDir);
162
+ const slideFiles = files.filter(file => file.startsWith('slide-') && (file.endsWith('.png') || file.endsWith('.jpg')));
163
+ for (const file of slideFiles) {
164
+ const filePath = path.join(this.outputDir, file);
165
+ await fs.unlink(filePath);
166
+ }
167
+ }
168
+ catch (error) {
169
+ // Ignore cleanup errors
170
+ }
171
+ }
172
+ /**
173
+ * Check if LibreOffice is available on the system
174
+ */
175
+ static async checkLibreOfficeAvailability() {
176
+ try {
177
+ // Create a minimal test document to verify LibreOffice works
178
+ const testBuffer = Buffer.from('test');
179
+ await convertAsync(testBuffer, '.pdf', undefined);
180
+ return true;
181
+ }
182
+ catch {
183
+ return false;
184
+ }
185
+ }
186
+ }
187
+ //# sourceMappingURL=slide-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide-renderer.js","sourceRoot":"","sources":["../../src/utils/slide-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "file2md",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "A TypeScript library for converting various document types (PDF, DOCX, XLSX, PPTX) into Markdown with image and layout preservation",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,6 +34,7 @@
34
34
  "dependencies": {
35
35
  "file-type": "^16.5.4",
36
36
  "jszip": "^3.10.1",
37
+ "libreoffice-convert": "^1.6.1",
37
38
  "pdf-parse": "^1.1.1",
38
39
  "pdf2pic": "^2.1.4",
39
40
  "xml2js": "^0.6.2"