@llamaindex/liteparse 1.0.1 → 1.2.0
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/README.md +51 -1
- package/dist/cli/parse.d.ts.map +1 -1
- package/dist/cli/parse.js +27 -4
- package/dist/cli/parse.js.map +1 -1
- package/dist/src/conversion/convertToPdf.d.ts +18 -3
- package/dist/src/conversion/convertToPdf.d.ts.map +1 -1
- package/dist/src/conversion/convertToPdf.js +48 -30
- package/dist/src/conversion/convertToPdf.js.map +1 -1
- package/dist/src/conversion/convertToPdf.test.js +97 -17
- package/dist/src/conversion/convertToPdf.test.js.map +1 -1
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +1 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/parser.d.ts +7 -5
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +61 -43
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/types.d.ts +15 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/engines/ocr/http-simple.d.ts +2 -2
- package/dist/src/engines/ocr/http-simple.d.ts.map +1 -1
- package/dist/src/engines/ocr/http-simple.js +13 -7
- package/dist/src/engines/ocr/http-simple.js.map +1 -1
- package/dist/src/engines/ocr/interface.d.ts +2 -2
- package/dist/src/engines/ocr/interface.d.ts.map +1 -1
- package/dist/src/engines/ocr/tesseract.d.ts +2 -2
- package/dist/src/engines/ocr/tesseract.d.ts.map +1 -1
- package/dist/src/engines/ocr/tesseract.js +7 -5
- package/dist/src/engines/ocr/tesseract.js.map +1 -1
- package/dist/src/engines/pdf/interface.d.ts +2 -2
- package/dist/src/engines/pdf/interface.d.ts.map +1 -1
- package/dist/src/engines/pdf/pdfium-renderer.d.ts +1 -1
- package/dist/src/engines/pdf/pdfium-renderer.d.ts.map +1 -1
- package/dist/src/engines/pdf/pdfium-renderer.js +4 -4
- package/dist/src/engines/pdf/pdfium-renderer.js.map +1 -1
- package/dist/src/engines/pdf/pdfjs.d.ts +3 -2
- package/dist/src/engines/pdf/pdfjs.d.ts.map +1 -1
- package/dist/src/engines/pdf/pdfjs.js +39 -11
- package/dist/src/engines/pdf/pdfjs.js.map +1 -1
- package/dist/src/lib.d.ts +1 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -143,6 +143,32 @@ const result = await parser.parse('document.pdf');
|
|
|
143
143
|
console.log(result.text);
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
+
#### Buffer / Uint8Array Input
|
|
147
|
+
|
|
148
|
+
You can pass raw bytes directly instead of a file path. PDF buffers are parsed with **zero disk I/O** — no temp files are written:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { LiteParse } from '@llamaindex/liteparse';
|
|
152
|
+
import { readFile } from 'fs/promises';
|
|
153
|
+
|
|
154
|
+
const parser = new LiteParse();
|
|
155
|
+
|
|
156
|
+
// From a file read
|
|
157
|
+
const pdfBytes = await readFile('document.pdf');
|
|
158
|
+
const result = await parser.parse(pdfBytes);
|
|
159
|
+
|
|
160
|
+
// From an HTTP response
|
|
161
|
+
const response = await fetch('https://example.com/document.pdf');
|
|
162
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
163
|
+
const result2 = await parser.parse(buffer);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Non-PDF buffers (images, Office documents) are written to a temp directory for format conversion. Screenshots also work with buffer input:
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
const screenshots = await parser.screenshot(pdfBytes, [1, 2, 3]);
|
|
170
|
+
```
|
|
171
|
+
|
|
146
172
|
### CLI Options
|
|
147
173
|
|
|
148
174
|
#### Parse Command
|
|
@@ -165,6 +191,7 @@ Options:
|
|
|
165
191
|
--dpi <dpi> DPI for rendering (default: "150")
|
|
166
192
|
--no-precise-bbox Disable precise bounding boxes
|
|
167
193
|
--preserve-small-text Preserve very small text
|
|
194
|
+
--password <password> Password for encrypted/protected documents
|
|
168
195
|
--config <file> Config file (JSON)
|
|
169
196
|
-q, --quiet Suppress progress output
|
|
170
197
|
-h, --help display help for command
|
|
@@ -189,6 +216,7 @@ Options:
|
|
|
189
216
|
--no-precise-bbox Disable precise bounding boxes
|
|
190
217
|
--recursive Recursively search input directory
|
|
191
218
|
--extension <ext> Only process files with this extension (e.g., ".pdf")
|
|
219
|
+
--password <password> Password for encrypted/protected documents (applied to all files)
|
|
192
220
|
--config <file> Config file (JSON)
|
|
193
221
|
-q, --quiet Suppress progress output
|
|
194
222
|
-h, --help display help for command
|
|
@@ -207,6 +235,7 @@ Options:
|
|
|
207
235
|
--target-pages <pages> Page numbers to screenshot (e.g., "1,3,5" or "1-5")
|
|
208
236
|
--dpi <dpi> DPI for rendering (default: "150")
|
|
209
237
|
--format <format> Image format: png|jpg (default: "png")
|
|
238
|
+
--password <password> Password for encrypted/protected documents
|
|
210
239
|
--config <file> Config file (JSON)
|
|
211
240
|
-q, --quiet Suppress progress output
|
|
212
241
|
-h, --help display help for command
|
|
@@ -227,6 +256,19 @@ lit parse document.pdf --ocr-language fra
|
|
|
227
256
|
lit parse document.pdf --no-ocr
|
|
228
257
|
```
|
|
229
258
|
|
|
259
|
+
By default, Tesseract.js downloads language data from the internet on first use. For offline or air-gapped environments, set the `TESSDATA_PREFIX` environment variable to a directory containing pre-downloaded `.traineddata` files:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
export TESSDATA_PREFIX=/path/to/tessdata
|
|
263
|
+
lit parse document.pdf --ocr-language eng
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
You can also pass `tessdataPath` in the library config:
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
const parser = new LiteParse({ tessdataPath: '/path/to/tessdata' });
|
|
270
|
+
```
|
|
271
|
+
|
|
230
272
|
### Optional: HTTP OCR Servers
|
|
231
273
|
|
|
232
274
|
For higher accuracy or better performance, you can use an HTTP OCR server. We provide ready-to-use example wrappers for popular OCR engines:
|
|
@@ -287,6 +329,13 @@ apt-get install imagemagick
|
|
|
287
329
|
choco install imagemagick.app # might require admin permissions
|
|
288
330
|
```
|
|
289
331
|
|
|
332
|
+
## Environment Variables
|
|
333
|
+
|
|
334
|
+
| Variable | Description |
|
|
335
|
+
|----------|-------------|
|
|
336
|
+
| `TESSDATA_PREFIX` | Path to a directory containing Tesseract `.traineddata` files. Used for offline/air-gapped environments where Tesseract.js cannot download language data from the internet. |
|
|
337
|
+
| `LITEPARSE_TMPDIR` | Override the temp directory used for format conversion and intermediate files. Defaults to the OS temp directory (`os.tmpdir()`). Useful in containerized or read-only filesystem environments. |
|
|
338
|
+
|
|
290
339
|
## Configuration
|
|
291
340
|
|
|
292
341
|
You can configure parsing options via CLI flags or a JSON config file. The config file allows you to set sensible defaults and override as needed.
|
|
@@ -303,7 +352,8 @@ Create a `liteparse.config.json` file:
|
|
|
303
352
|
"dpi": 150,
|
|
304
353
|
"outputFormat": "json",
|
|
305
354
|
"preciseBoundingBox": true,
|
|
306
|
-
"preserveVerySmallText": false
|
|
355
|
+
"preserveVerySmallText": false,
|
|
356
|
+
"password": "optional_password"
|
|
307
357
|
}
|
|
308
358
|
```
|
|
309
359
|
|
package/dist/cli/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../cli/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../cli/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAqd9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/cli/parse.js
CHANGED
|
@@ -30,13 +30,15 @@ program
|
|
|
30
30
|
.option("--dpi <dpi>", "DPI for rendering", DEFAULT_DPI.toString())
|
|
31
31
|
.option("--no-precise-bbox", "Disable precise bounding boxes")
|
|
32
32
|
.option("--preserve-small-text", "Preserve very small text")
|
|
33
|
+
.option("--password <password>", "Password for encrypted/protected documents")
|
|
33
34
|
.option("--config <file>", "Config file (JSON)")
|
|
34
35
|
.option("-q, --quiet", "Suppress progress output")
|
|
35
36
|
.action(async (file, options) => {
|
|
36
37
|
try {
|
|
37
38
|
const quiet = options.quiet || false;
|
|
38
|
-
|
|
39
|
-
if (
|
|
39
|
+
const isStdin = file === "-";
|
|
40
|
+
// Check if file exists (skip for stdin)
|
|
41
|
+
if (!isStdin && !existsSync(file)) {
|
|
40
42
|
console.error(`Error: File not found: ${file}`);
|
|
41
43
|
process.exit(1);
|
|
42
44
|
}
|
|
@@ -67,11 +69,28 @@ program
|
|
|
67
69
|
dpi: parseInt(options.dpi || DEFAULT_DPI.toString()),
|
|
68
70
|
preciseBoundingBox: options.preciseBbox !== false,
|
|
69
71
|
preserveVerySmallText: options.preserveSmallText || false,
|
|
72
|
+
password: options.password,
|
|
70
73
|
};
|
|
71
74
|
// Create parser
|
|
72
75
|
const parser = new LiteParse(config);
|
|
73
|
-
//
|
|
74
|
-
|
|
76
|
+
// Read from stdin or file
|
|
77
|
+
let input;
|
|
78
|
+
if (isStdin) {
|
|
79
|
+
const chunks = [];
|
|
80
|
+
for await (const chunk of process.stdin) {
|
|
81
|
+
chunks.push(chunk);
|
|
82
|
+
}
|
|
83
|
+
input = Buffer.concat(chunks);
|
|
84
|
+
if (input.length === 0) {
|
|
85
|
+
console.error("Error: No data received from stdin");
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
input = file;
|
|
91
|
+
}
|
|
92
|
+
// Parse document (quiet flag controls progress output)
|
|
93
|
+
const result = await parser.parse(input, quiet);
|
|
75
94
|
// Format output based on format
|
|
76
95
|
let output;
|
|
77
96
|
switch (config.outputFormat) {
|
|
@@ -112,6 +131,7 @@ program
|
|
|
112
131
|
.option("--target-pages <pages>", 'Page numbers to screenshot (e.g., "1,3,5" or "1-5")')
|
|
113
132
|
.option("--dpi <dpi>", "DPI for rendering", DEFAULT_DPI.toString())
|
|
114
133
|
.option("--format <format>", "Image format: png|jpg", DEFAULT_SCREENSHOT_FORMAT)
|
|
134
|
+
.option("--password <password>", "Password for encrypted/protected documents")
|
|
115
135
|
.option("--config <file>", "Config file (JSON)")
|
|
116
136
|
.option("-q, --quiet", "Suppress progress output")
|
|
117
137
|
.action(async (file, options) => {
|
|
@@ -136,6 +156,7 @@ program
|
|
|
136
156
|
config = {
|
|
137
157
|
...config,
|
|
138
158
|
dpi: parseInt(options.dpi || DEFAULT_DPI.toString()),
|
|
159
|
+
password: options.password,
|
|
139
160
|
};
|
|
140
161
|
// Parse target pages
|
|
141
162
|
let pageNumbers;
|
|
@@ -228,6 +249,7 @@ program
|
|
|
228
249
|
.option("--no-precise-bbox", "Disable precise bounding boxes")
|
|
229
250
|
.option("--recursive", "Recursively search input directory")
|
|
230
251
|
.option("--extension <ext>", 'Only process files with this extension (e.g., ".pdf")')
|
|
252
|
+
.option("--password <password>", "Password for encrypted/protected documents (applied to all files)")
|
|
231
253
|
.option("--config <file>", "Config file (JSON)")
|
|
232
254
|
.option("-q, --quiet", "Suppress progress output")
|
|
233
255
|
.action(async (inputDir, outputDir, options) => {
|
|
@@ -282,6 +304,7 @@ program
|
|
|
282
304
|
maxPages: parseInt(options.maxPages || DEFAULT_MAX_PAGES.toString()),
|
|
283
305
|
dpi: parseInt(options.dpi || DEFAULT_DPI.toString()),
|
|
284
306
|
preciseBoundingBox: options.preciseBbox !== false,
|
|
307
|
+
password: options.password,
|
|
285
308
|
};
|
|
286
309
|
// Create a SINGLE parser instance for all files (key for batch efficiency)
|
|
287
310
|
const parser = new LiteParse(config);
|
package/dist/cli/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../cli/parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../cli/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the temp directory for LiteParse operations.
|
|
3
|
+
* Respects the `LITEPARSE_TMPDIR` environment variable, falling back to the OS default.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getTmpDir(): string;
|
|
1
6
|
export interface ConversionResult {
|
|
2
7
|
pdfPath: string;
|
|
3
8
|
originalExtension: string;
|
|
@@ -14,7 +19,8 @@ export declare const spreadsheetExtensions: string[];
|
|
|
14
19
|
export declare const imageExtensions: string[];
|
|
15
20
|
export declare const htmlExtensions: string[];
|
|
16
21
|
/**
|
|
17
|
-
* Guess file extension from file content
|
|
22
|
+
* Guess file extension from file content using file-type magic byte detection.
|
|
23
|
+
* Returns the path's own extension if present, otherwise inspects file bytes.
|
|
18
24
|
*/
|
|
19
25
|
export declare function guessFileExtension(filePath: string): Promise<string>;
|
|
20
26
|
/**
|
|
@@ -31,7 +37,7 @@ export declare function findImageMagickCommand(): Promise<{
|
|
|
31
37
|
/**
|
|
32
38
|
* Convert office documents using LibreOffice
|
|
33
39
|
*/
|
|
34
|
-
export declare function convertOfficeDocument(filePath: string, outputDir: string): Promise<string>;
|
|
40
|
+
export declare function convertOfficeDocument(filePath: string, outputDir: string, password?: string): Promise<string>;
|
|
35
41
|
/**
|
|
36
42
|
* Convert images to PDF using ImageMagick
|
|
37
43
|
*/
|
|
@@ -39,9 +45,18 @@ export declare function convertImageToPdf(filePath: string, outputDir: string):
|
|
|
39
45
|
/**
|
|
40
46
|
* Main conversion function
|
|
41
47
|
*/
|
|
42
|
-
export declare function convertToPdf(filePath: string): Promise<ConversionResult | ConversionPassthrough | ConversionError>;
|
|
48
|
+
export declare function convertToPdf(filePath: string, password?: string): Promise<ConversionResult | ConversionPassthrough | ConversionError>;
|
|
43
49
|
/**
|
|
44
50
|
* Clean up temporary conversion files
|
|
45
51
|
*/
|
|
46
52
|
export declare function cleanupConversionFiles(pdfPath: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Guess file extension from raw bytes using file-type magic byte detection.
|
|
55
|
+
*/
|
|
56
|
+
export declare function guessExtensionFromBuffer(data: Buffer | Uint8Array): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Convert a raw byte buffer to PDF by writing to a temp file and converting.
|
|
59
|
+
* For PDF buffers, callers should skip this and pass data directly to the PDF engine.
|
|
60
|
+
*/
|
|
61
|
+
export declare function convertBufferToPdf(data: Buffer | Uint8Array, password?: string): Promise<ConversionResult | ConversionPassthrough | ConversionError>;
|
|
47
62
|
//# sourceMappingURL=convertToPdf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertToPdf.d.ts","sourceRoot":"","sources":["../../../src/conversion/convertToPdf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convertToPdf.d.ts","sourceRoot":"","sources":["../../../src/conversion/convertToPdf.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,gBAAgB,UAoB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAUjC,CAAC;AAEF,eAAO,MAAM,eAAe,UAU3B,CAAC;AAEF,eAAO,MAAM,cAAc,UAA8B,CAAC;AAE1D;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1E;AAiFD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCrE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GAAG,IAAI,CAAC,CAYR;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAKD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyD5F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,GAAG,qBAAqB,GAAG,eAAe,CAAC,CAsDrE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,GAAG,qBAAqB,GAAG,eAAe,CAAC,CASrE"}
|
|
@@ -2,6 +2,14 @@ import { promises as fs, constants as fsConstants } from "fs";
|
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import os from "os";
|
|
5
|
+
import { fileTypeFromFile, fileTypeFromBuffer } from "file-type";
|
|
6
|
+
/**
|
|
7
|
+
* Returns the temp directory for LiteParse operations.
|
|
8
|
+
* Respects the `LITEPARSE_TMPDIR` environment variable, falling back to the OS default.
|
|
9
|
+
*/
|
|
10
|
+
export function getTmpDir() {
|
|
11
|
+
return process.env.LITEPARSE_TMPDIR || os.tmpdir();
|
|
12
|
+
}
|
|
5
13
|
// File extension categories
|
|
6
14
|
export const officeExtensions = [
|
|
7
15
|
".doc",
|
|
@@ -48,36 +56,19 @@ export const imageExtensions = [
|
|
|
48
56
|
];
|
|
49
57
|
export const htmlExtensions = [".htm", ".html", ".xhtml"];
|
|
50
58
|
/**
|
|
51
|
-
* Guess file extension from file content
|
|
59
|
+
* Guess file extension from file content using file-type magic byte detection.
|
|
60
|
+
* Returns the path's own extension if present, otherwise inspects file bytes.
|
|
52
61
|
*/
|
|
53
62
|
export async function guessFileExtension(filePath) {
|
|
54
63
|
const ext = path.extname(filePath).toLowerCase();
|
|
55
64
|
if (ext) {
|
|
56
65
|
return ext;
|
|
57
66
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
await fd.read(buffer, 0, 16, 0);
|
|
62
|
-
await fd.close();
|
|
63
|
-
// PDF: %PDF
|
|
64
|
-
if (buffer.toString("utf-8", 0, 4) === "%PDF") {
|
|
65
|
-
return ".pdf";
|
|
66
|
-
}
|
|
67
|
-
// PNG: 89 50 4E 47
|
|
68
|
-
if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4e && buffer[3] === 0x47) {
|
|
69
|
-
return ".png";
|
|
67
|
+
const result = await fileTypeFromFile(filePath);
|
|
68
|
+
if (result) {
|
|
69
|
+
return `.${result.ext}`;
|
|
70
70
|
}
|
|
71
|
-
//
|
|
72
|
-
if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff) {
|
|
73
|
-
return ".jpg";
|
|
74
|
-
}
|
|
75
|
-
// ZIP-based formats (docx, xlsx, etc): PK
|
|
76
|
-
if (buffer[0] === 0x50 && buffer[1] === 0x4b) {
|
|
77
|
-
// Could be docx, xlsx, pptx, odt, etc.
|
|
78
|
-
return ".docx"; // Default to docx for now
|
|
79
|
-
}
|
|
80
|
-
return ext || ".pdf";
|
|
71
|
+
return ".pdf"; // Default assumption for extensionless files
|
|
81
72
|
}
|
|
82
73
|
/**
|
|
83
74
|
* Execute command with timeout
|
|
@@ -199,12 +190,17 @@ export async function findImageMagickCommand() {
|
|
|
199
190
|
/**
|
|
200
191
|
* Convert office documents using LibreOffice
|
|
201
192
|
*/
|
|
202
|
-
export async function convertOfficeDocument(filePath, outputDir) {
|
|
193
|
+
export async function convertOfficeDocument(filePath, outputDir, password) {
|
|
203
194
|
const libreOfficeCmd = await findLibreOfficeCommand();
|
|
204
195
|
if (!libreOfficeCmd) {
|
|
205
196
|
throw new Error("LibreOffice is not installed. Please install LibreOffice to convert office documents. On macOS: brew install --cask libreoffice, On Ubuntu: apt-get install libreoffice, On Windows: choco install libreoffice-fresh");
|
|
206
197
|
}
|
|
207
|
-
|
|
198
|
+
const args = ["--headless", "--invisible", "--convert-to", "pdf", "--outdir", outputDir];
|
|
199
|
+
if (password) {
|
|
200
|
+
args.push(`--infilter=:${password}`);
|
|
201
|
+
}
|
|
202
|
+
args.push(filePath);
|
|
203
|
+
await executeCommand(libreOfficeCmd, args, 120000 // 2 minutes timeout
|
|
208
204
|
);
|
|
209
205
|
// LibreOffice creates output with same name but .pdf extension
|
|
210
206
|
const baseName = path.basename(filePath, path.extname(filePath));
|
|
@@ -265,7 +261,7 @@ export async function convertImageToPdf(filePath, outputDir) {
|
|
|
265
261
|
/**
|
|
266
262
|
* Main conversion function
|
|
267
263
|
*/
|
|
268
|
-
export async function convertToPdf(filePath) {
|
|
264
|
+
export async function convertToPdf(filePath, password) {
|
|
269
265
|
try {
|
|
270
266
|
// Check if file exists
|
|
271
267
|
try {
|
|
@@ -287,14 +283,14 @@ export async function convertToPdf(filePath) {
|
|
|
287
283
|
};
|
|
288
284
|
}
|
|
289
285
|
// Create temp directory for output
|
|
290
|
-
const tmpDir = await fs.mkdtemp(path.join(
|
|
286
|
+
const tmpDir = await fs.mkdtemp(path.join(getTmpDir(), "liteparse-"));
|
|
291
287
|
// Convert based on file type
|
|
292
288
|
let pdfPath;
|
|
293
289
|
if (officeExtensions.includes(extension)) {
|
|
294
|
-
pdfPath = await convertOfficeDocument(filePath, tmpDir);
|
|
290
|
+
pdfPath = await convertOfficeDocument(filePath, tmpDir, password);
|
|
295
291
|
}
|
|
296
292
|
else if (spreadsheetExtensions.includes(extension)) {
|
|
297
|
-
pdfPath = await convertOfficeDocument(filePath, tmpDir);
|
|
293
|
+
pdfPath = await convertOfficeDocument(filePath, tmpDir, password);
|
|
298
294
|
}
|
|
299
295
|
else if (imageExtensions.includes(extension)) {
|
|
300
296
|
pdfPath = await convertImageToPdf(filePath, tmpDir);
|
|
@@ -325,7 +321,7 @@ export async function convertToPdf(filePath) {
|
|
|
325
321
|
export async function cleanupConversionFiles(pdfPath) {
|
|
326
322
|
try {
|
|
327
323
|
// Only delete if in temp directory
|
|
328
|
-
if (pdfPath.includes(
|
|
324
|
+
if (pdfPath.includes(getTmpDir())) {
|
|
329
325
|
const dir = path.dirname(pdfPath);
|
|
330
326
|
await fs.rm(dir, { recursive: true, force: true });
|
|
331
327
|
}
|
|
@@ -334,4 +330,26 @@ export async function cleanupConversionFiles(pdfPath) {
|
|
|
334
330
|
// Ignore cleanup errors
|
|
335
331
|
}
|
|
336
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Guess file extension from raw bytes using file-type magic byte detection.
|
|
335
|
+
*/
|
|
336
|
+
export async function guessExtensionFromBuffer(data) {
|
|
337
|
+
const result = await fileTypeFromBuffer(data);
|
|
338
|
+
if (result) {
|
|
339
|
+
return `.${result.ext}`;
|
|
340
|
+
}
|
|
341
|
+
return ".pdf"; // Default assumption
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Convert a raw byte buffer to PDF by writing to a temp file and converting.
|
|
345
|
+
* For PDF buffers, callers should skip this and pass data directly to the PDF engine.
|
|
346
|
+
*/
|
|
347
|
+
export async function convertBufferToPdf(data, password) {
|
|
348
|
+
const ext = await guessExtensionFromBuffer(data);
|
|
349
|
+
// Write buffer to temp file with detected extension
|
|
350
|
+
const tmpDir = await fs.mkdtemp(path.join(getTmpDir(), "liteparse-"));
|
|
351
|
+
const tmpPath = path.join(tmpDir, `input${ext}`);
|
|
352
|
+
await fs.writeFile(tmpPath, data);
|
|
353
|
+
return convertToPdf(tmpPath, password);
|
|
354
|
+
}
|
|
337
355
|
//# sourceMappingURL=convertToPdf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertToPdf.js","sourceRoot":"","sources":["../../../src/conversion/convertToPdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"convertToPdf.js","sourceRoot":"","sources":["../../../src/conversion/convertToPdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,39 @@
|
|
|
1
|
-
import
|
|
1
|
+
import os from "os";
|
|
2
|
+
import { vi, describe, it, expect, afterEach } from "vitest";
|
|
2
3
|
import { EventEmitter } from "events";
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const mockFileTypeFromFile = vi.fn();
|
|
5
|
+
vi.mock("file-type", () => ({
|
|
6
|
+
fileTypeFromFile: (...args) => mockFileTypeFromFile(...args),
|
|
7
|
+
fileTypeFromBuffer: vi.fn(async (data) => {
|
|
8
|
+
// Replicate enough detection to validate the wrapper
|
|
9
|
+
if (data.length >= 4 &&
|
|
10
|
+
data[0] === 0x25 &&
|
|
11
|
+
data[1] === 0x50 &&
|
|
12
|
+
data[2] === 0x44 &&
|
|
13
|
+
data[3] === 0x46) {
|
|
14
|
+
return { ext: "pdf", mime: "application/pdf" };
|
|
15
|
+
}
|
|
16
|
+
if (data.length >= 8 &&
|
|
17
|
+
data[0] === 0x89 &&
|
|
18
|
+
data[1] === 0x50 &&
|
|
19
|
+
data[2] === 0x4e &&
|
|
20
|
+
data[3] === 0x47) {
|
|
21
|
+
return { ext: "png", mime: "image/png" };
|
|
22
|
+
}
|
|
23
|
+
if (data.length >= 3 && data[0] === 0xff && data[1] === 0xd8 && data[2] === 0xff) {
|
|
24
|
+
return { ext: "jpg", mime: "image/jpeg" };
|
|
25
|
+
}
|
|
26
|
+
if (data.length >= 4 &&
|
|
27
|
+
((data[0] === 0x49 && data[1] === 0x49 && data[2] === 0x2a && data[3] === 0x00) ||
|
|
28
|
+
(data[0] === 0x4d && data[1] === 0x4d && data[2] === 0x00 && data[3] === 0x2a))) {
|
|
29
|
+
return { ext: "tif", mime: "image/tiff" };
|
|
30
|
+
}
|
|
31
|
+
if (data.length >= 4 && data[0] === 0x50 && data[1] === 0x4b) {
|
|
32
|
+
return { ext: "zip", mime: "application/zip" };
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}),
|
|
36
|
+
}));
|
|
7
37
|
const mockProc = {
|
|
8
38
|
stdout: new EventEmitter(),
|
|
9
39
|
stderr: new EventEmitter(),
|
|
@@ -18,9 +48,6 @@ vi.mock("fs", async () => {
|
|
|
18
48
|
return {
|
|
19
49
|
...actual,
|
|
20
50
|
promises: {
|
|
21
|
-
open: vi.fn(async () => {
|
|
22
|
-
return mockFd;
|
|
23
|
-
}),
|
|
24
51
|
access: vi.fn(async (path, _mode) => {
|
|
25
52
|
console.log(path);
|
|
26
53
|
const toErrorPath = [
|
|
@@ -45,20 +72,20 @@ vi.mock("fs", async () => {
|
|
|
45
72
|
},
|
|
46
73
|
};
|
|
47
74
|
});
|
|
48
|
-
import { guessFileExtension, findImageMagickCommand, findLibreOfficeCommand, convertOfficeDocument, convertImageToPdf, convertToPdf, } from "./convertToPdf";
|
|
75
|
+
import { guessFileExtension, guessExtensionFromBuffer, findImageMagickCommand, findLibreOfficeCommand, convertOfficeDocument, convertImageToPdf, convertToPdf, getTmpDir, } from "./convertToPdf";
|
|
49
76
|
describe("test guessFileExtension", () => {
|
|
50
|
-
it("detects PDF", async () => {
|
|
51
|
-
|
|
52
|
-
Buffer.from("%PDF").copy(buffer);
|
|
53
|
-
});
|
|
77
|
+
it("detects PDF via file-type", async () => {
|
|
78
|
+
mockFileTypeFromFile.mockResolvedValue({ ext: "pdf", mime: "application/pdf" });
|
|
54
79
|
expect(await guessFileExtension("/some/file")).toBe(".pdf");
|
|
55
80
|
});
|
|
56
|
-
it("detects PNG", async () => {
|
|
57
|
-
|
|
58
|
-
Buffer.from([0x89, 0x50, 0x4e, 0x47]).copy(buffer);
|
|
59
|
-
});
|
|
81
|
+
it("detects PNG via file-type", async () => {
|
|
82
|
+
mockFileTypeFromFile.mockResolvedValue({ ext: "png", mime: "image/png" });
|
|
60
83
|
expect(await guessFileExtension("/some/file")).toBe(".png");
|
|
61
84
|
});
|
|
85
|
+
it("defaults to .pdf when file-type returns undefined", async () => {
|
|
86
|
+
mockFileTypeFromFile.mockResolvedValue(undefined);
|
|
87
|
+
expect(await guessFileExtension("/some/file")).toBe(".pdf");
|
|
88
|
+
});
|
|
62
89
|
it("returns extension directly if present", async () => {
|
|
63
90
|
expect(await guessFileExtension("/some/file.pdf")).toBe(".pdf");
|
|
64
91
|
});
|
|
@@ -205,4 +232,57 @@ describe("test convertToPdf", () => {
|
|
|
205
232
|
});
|
|
206
233
|
});
|
|
207
234
|
});
|
|
235
|
+
describe("test guessExtensionFromBuffer", () => {
|
|
236
|
+
it("detects PDF from magic bytes", async () => {
|
|
237
|
+
const pdfBytes = Buffer.from("%PDF-1.4 some content");
|
|
238
|
+
expect(await guessExtensionFromBuffer(pdfBytes)).toBe(".pdf");
|
|
239
|
+
});
|
|
240
|
+
it("detects PNG from magic bytes", async () => {
|
|
241
|
+
const pngBytes = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
242
|
+
expect(await guessExtensionFromBuffer(pngBytes)).toBe(".png");
|
|
243
|
+
});
|
|
244
|
+
it("detects JPEG from magic bytes", async () => {
|
|
245
|
+
const jpegBytes = Buffer.from([0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10]);
|
|
246
|
+
expect(await guessExtensionFromBuffer(jpegBytes)).toBe(".jpg");
|
|
247
|
+
});
|
|
248
|
+
it("detects TIFF (little-endian) from magic bytes", async () => {
|
|
249
|
+
const tiffBytes = Buffer.from([0x49, 0x49, 0x2a, 0x00]);
|
|
250
|
+
expect(await guessExtensionFromBuffer(tiffBytes)).toBe(".tif");
|
|
251
|
+
});
|
|
252
|
+
it("detects TIFF (big-endian) from magic bytes", async () => {
|
|
253
|
+
const tiffBytes = Buffer.from([0x4d, 0x4d, 0x00, 0x2a]);
|
|
254
|
+
expect(await guessExtensionFromBuffer(tiffBytes)).toBe(".tif");
|
|
255
|
+
});
|
|
256
|
+
it("detects ZIP-based formats from magic bytes", async () => {
|
|
257
|
+
const zipBytes = Buffer.from([0x50, 0x4b, 0x03, 0x04]);
|
|
258
|
+
expect(await guessExtensionFromBuffer(zipBytes)).toBe(".zip");
|
|
259
|
+
});
|
|
260
|
+
it("defaults to .pdf for unknown bytes", async () => {
|
|
261
|
+
const unknownBytes = Buffer.from([0x00, 0x01, 0x02, 0x03]);
|
|
262
|
+
expect(await guessExtensionFromBuffer(unknownBytes)).toBe(".pdf");
|
|
263
|
+
});
|
|
264
|
+
it("works with Uint8Array input", async () => {
|
|
265
|
+
const pdfBytes = new Uint8Array(Buffer.from("%PDF-1.7"));
|
|
266
|
+
expect(await guessExtensionFromBuffer(pdfBytes)).toBe(".pdf");
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
describe("test getTmpDir", () => {
|
|
270
|
+
const originalEnv = process.env.LITEPARSE_TMPDIR;
|
|
271
|
+
afterEach(() => {
|
|
272
|
+
if (originalEnv === undefined) {
|
|
273
|
+
delete process.env.LITEPARSE_TMPDIR;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
process.env.LITEPARSE_TMPDIR = originalEnv;
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
it("returns LITEPARSE_TMPDIR when set", () => {
|
|
280
|
+
process.env.LITEPARSE_TMPDIR = "/custom/tmp";
|
|
281
|
+
expect(getTmpDir()).toBe("/custom/tmp");
|
|
282
|
+
});
|
|
283
|
+
it("falls back to os.tmpdir() when LITEPARSE_TMPDIR is not set", () => {
|
|
284
|
+
delete process.env.LITEPARSE_TMPDIR;
|
|
285
|
+
expect(getTmpDir()).toBe(os.tmpdir());
|
|
286
|
+
});
|
|
287
|
+
});
|
|
208
288
|
//# sourceMappingURL=convertToPdf.test.js.map
|