afpp 2.2.1 → 2.3.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 CHANGED
@@ -75,6 +75,7 @@ All parsing functions accept the same input types:
75
75
  ```ts
76
76
  import { readFile } from 'fs/promises';
77
77
  import path from 'path';
78
+
78
79
  import { pdf2string } from 'afpp';
79
80
 
80
81
  (async () => {
@@ -103,6 +104,37 @@ import { pdf2image } from 'afpp';
103
104
 
104
105
  ---
105
106
 
107
+ ### Streaming API (Large PDFs)
108
+
109
+ For large PDFs, use streaming functions to process pages incrementally without loading all results into memory:
110
+
111
+ ```ts
112
+ import { writeFile } from 'fs/promises';
113
+
114
+ import { streamPdf2image, streamPdf2string } from 'afpp';
115
+
116
+ // Stream images - process each page as it's rendered
117
+ for await (const { pageNumber, pageCount, data } of streamPdf2image(
118
+ './large.pdf',
119
+ )) {
120
+ await writeFile(`page-${pageNumber}.png`, data);
121
+ console.log(`Processed ${pageNumber}/${pageCount}`);
122
+ }
123
+
124
+ // Stream text - process each page as it's extracted
125
+ for await (const { pageNumber, data } of streamPdf2string('./large.pdf')) {
126
+ console.log(`Page ${pageNumber}: ${data.substring(0, 100)}...`);
127
+ }
128
+ ```
129
+
130
+ **Benefits:**
131
+
132
+ - Lower peak memory usage
133
+ - Faster time-to-first-result
134
+ - Built-in progress tracking via `pageNumber` and `pageCount`
135
+
136
+ ---
137
+
106
138
  ### Low-Level Parsing API
107
139
 
108
140
  For advanced use cases, `parsePdf` exposes page-level control and transformation.
@@ -136,12 +168,12 @@ const result = await parsePdf(buffer, {
136
168
 
137
169
  ### AfppParseOptions
138
170
 
139
- | Option | Type | Default | Description |
140
- | --------------- | ------------------------------------- | ------- | ------------------------------------- |
141
- | `concurrency` | `number` | `1` | Number of pages processed in parallel |
142
- | `imageEncoding` | `'png' \| 'jpeg' \| 'webp' \| 'avif'` | `'png'` | Output format for rendered images |
143
- | `password` | `string` | — | Password for encrypted PDFs |
144
- | `scale` | `number` | `1` | Rendering scale for non-text pages |
171
+ | Option | Type | Default | Description |
172
+ | --------------- | ------------------------------------- | ------- | --------------------------------------------- |
173
+ | `concurrency` | `number` | `1` | Number of pages processed in parallel |
174
+ | `imageEncoding` | `'png' \| 'jpeg' \| 'webp' \| 'avif'` | `'png'` | Output format for rendered images |
175
+ | `password` | `string` | — | Password for encrypted PDFs |
176
+ | `scale` | `number` | `1.0` | Rendering scale (1.0 = 72 DPI, 2.0 = 144 DPI) |
145
177
 
146
178
  ---
147
179
 
package/dist/core.d.ts CHANGED
@@ -1,9 +1,9 @@
1
+ import { Canvas, CanvasRenderingContext2D } from '@napi-rs/canvas';
1
2
  export declare enum PROCESSING_TYPE {
2
3
  IMAGE = "IMAGE",
3
4
  MIXED = "MIXED",
4
5
  TEXT = "TEXT"
5
6
  }
6
- import { Canvas, CanvasRenderingContext2D } from '@napi-rs/canvas';
7
7
  export interface AfppParseOptions {
8
8
  /**
9
9
  * Concurrency level for page processing. Defaults to 1.
@@ -22,9 +22,11 @@ export interface AfppParseOptions {
22
22
  */
23
23
  password?: string;
24
24
  /**
25
- * Scale of a page if content is not text. Defaults to 1.
26
- * Higher values increase image resolution but also memory usage.
27
- * @default 1
25
+ * Scale factor for image rendering. Defaults to 1.0.
26
+ * - 1.0: Standard quality (72 DPI equivalent)
27
+ * - 2.0: High quality (144 DPI equivalent, 4x memory)
28
+ * - 3.0: Print quality (216 DPI equivalent, 9x memory)
29
+ * @default 1.0
28
30
  */
29
31
  scale?: number;
30
32
  }
@@ -39,6 +41,28 @@ export interface PdfCanvasFactory {
39
41
  destroy(canvasAndContext: CanvasAndContext): void;
40
42
  reset(canvasAndContext: CanvasAndContext, width: number, height: number): void;
41
43
  }
44
+ /**
45
+ * Result yielded by streaming PDF parser
46
+ */
47
+ export interface StreamingResult<T> {
48
+ data: T;
49
+ pageCount: number;
50
+ pageNumber: number;
51
+ }
42
52
  export declare function parsePdfFile(type: PROCESSING_TYPE.IMAGE, input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions, callback?: undefined): Promise<Buffer[]>;
43
53
  export declare function parsePdfFile(type: PROCESSING_TYPE.TEXT, input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions, callback?: undefined): Promise<string[]>;
44
54
  export declare function parsePdfFile<T>(type: PROCESSING_TYPE.MIXED, input: Buffer | string | Uint8Array | URL, options: AfppParseOptions, callback: PageProcessor<T>): Promise<T[]>;
55
+ /**
56
+ * Streaming PDF parser that yields results as pages are processed.
57
+ * Useful for large PDFs where you want to process pages as they become available
58
+ * rather than waiting for all pages to complete.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * for await (const { pageNumber, data } of streamPdfFile(PROCESSING_TYPE.IMAGE, './large.pdf')) {
63
+ * await saveImage(data, `page-${pageNumber}.png`);
64
+ * }
65
+ * ```
66
+ */
67
+ export declare function streamPdfFile(type: PROCESSING_TYPE.IMAGE, input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions): AsyncGenerator<StreamingResult<Buffer>>;
68
+ export declare function streamPdfFile(type: PROCESSING_TYPE.TEXT, input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions): AsyncGenerator<StreamingResult<string>>;
package/dist/core.js CHANGED
@@ -5,15 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PROCESSING_TYPE = void 0;
7
7
  exports.parsePdfFile = parsePdfFile;
8
+ exports.streamPdfFile = streamPdfFile;
9
+ const promises_1 = require("node:fs/promises");
10
+ const p_limit_1 = __importDefault(require("p-limit"));
11
+ const pdf_mjs_1 = require("pdfjs-dist/legacy/build/pdf.mjs");
8
12
  var PROCESSING_TYPE;
9
13
  (function (PROCESSING_TYPE) {
10
14
  PROCESSING_TYPE["IMAGE"] = "IMAGE";
11
15
  PROCESSING_TYPE["MIXED"] = "MIXED";
12
16
  PROCESSING_TYPE["TEXT"] = "TEXT";
13
17
  })(PROCESSING_TYPE || (exports.PROCESSING_TYPE = PROCESSING_TYPE = {}));
14
- const promises_1 = require("node:fs/promises");
15
- const p_limit_1 = __importDefault(require("p-limit"));
16
- const pdf_mjs_1 = require("pdfjs-dist/legacy/build/pdf.mjs");
17
18
  const processPdfPageTypeMixed = async (page, canvasFactory, pageNumber, pageCount, scale, encoding, callback) => {
18
19
  const textContent = await page.getTextContent({
19
20
  includeMarkedContent: false,
@@ -22,17 +23,28 @@ const processPdfPageTypeMixed = async (page, canvasFactory, pageNumber, pageCoun
22
23
  if (items.length === 0) {
23
24
  const viewport = page.getViewport({ scale });
24
25
  const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);
25
- await page.render({
26
- canvas: canvasAndContext.canvas,
27
- canvasContext: canvasAndContext.context,
28
- viewport,
29
- }).promise;
30
- //@ts-expect-error this should be fixed in release
31
- const imageBuffer = await canvasAndContext.canvas.encode(encoding);
32
- canvasFactory.destroy(canvasAndContext);
33
- return callback(imageBuffer, pageNumber, pageCount);
26
+ try {
27
+ await page.render({
28
+ canvas: canvasAndContext.canvas,
29
+ canvasContext: canvasAndContext.context,
30
+ viewport,
31
+ }).promise;
32
+ //@ts-expect-error this should be fixed in release
33
+ const imageBuffer = await canvasAndContext.canvas.encode(encoding);
34
+ return callback(imageBuffer, pageNumber, pageCount);
35
+ }
36
+ finally {
37
+ canvasFactory.destroy(canvasAndContext);
38
+ }
39
+ }
40
+ let pageText = '';
41
+ for (const item of items) {
42
+ if (item.str) {
43
+ if (pageText)
44
+ pageText += ' ';
45
+ pageText += item.str;
46
+ }
34
47
  }
35
- const pageText = items.map((item) => item.str || '').join(' ');
36
48
  return callback(pageText, pageNumber, pageCount);
37
49
  };
38
50
  const processPdfPageTypeText = async (page) => {
@@ -44,21 +56,33 @@ const processPdfPageTypeText = async (page) => {
44
56
  return '';
45
57
  }
46
58
  else {
47
- return items.map((item) => item.str || '').join(' ');
59
+ let pageText = '';
60
+ for (const item of items) {
61
+ if (item.str) {
62
+ if (pageText)
63
+ pageText += ' ';
64
+ pageText += item.str;
65
+ }
66
+ }
67
+ return pageText;
48
68
  }
49
69
  };
50
70
  const processPdfPageTypeImage = async (page, canvasFactory, pageNumber, pageCount, scale, encoding) => {
51
71
  const viewport = page.getViewport({ scale });
52
72
  const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);
53
- await page.render({
54
- canvas: canvasAndContext.canvas,
55
- canvasContext: canvasAndContext.context,
56
- viewport,
57
- }).promise;
58
- //@ts-expect-error this should be fixed in release
59
- const imageBuffer = await canvasAndContext.canvas.encode(encoding);
60
- canvasFactory.destroy(canvasAndContext);
61
- return imageBuffer;
73
+ try {
74
+ await page.render({
75
+ canvas: canvasAndContext.canvas,
76
+ canvasContext: canvasAndContext.context,
77
+ viewport,
78
+ }).promise;
79
+ //@ts-expect-error this should be fixed in release
80
+ const imageBuffer = await canvasAndContext.canvas.encode(encoding);
81
+ return imageBuffer;
82
+ }
83
+ finally {
84
+ canvasFactory.destroy(canvasAndContext);
85
+ }
62
86
  };
63
87
  const validateParameters = async (input, options) => {
64
88
  const documentInitParameters = {};
@@ -80,7 +104,11 @@ const validateParameters = async (input, options) => {
80
104
  }
81
105
  documentInitParameters.password = options?.password;
82
106
  documentInitParameters.verbosity = pdf_mjs_1.VerbosityLevel.ERRORS;
83
- const scale = options?.scale ?? 1;
107
+ // Performance optimizations for local file processing
108
+ documentInitParameters.disableAutoFetch = true; // Don't prefetch - we have full data
109
+ documentInitParameters.disableStream = true; // Don't stream - we have full data
110
+ documentInitParameters.disableRange = true; // Don't use range requests - we have full data
111
+ const scale = options?.scale ?? 1.0;
84
112
  const concurrency = options?.concurrency ?? 1;
85
113
  const encoding = options?.imageEncoding ?? 'png';
86
114
  if (!['avif', 'jpeg', 'png', 'webp'].includes(encoding)) {
@@ -93,49 +121,82 @@ async function parsePdfFile(type, input, options, callback) {
93
121
  const limit = (0, p_limit_1.default)(concurrency);
94
122
  const loadingTask = (0, pdf_mjs_1.getDocument)(documentInitParameters);
95
123
  const pdfDocument = await loadingTask.promise;
96
- const { numPages } = pdfDocument;
97
- if (type === PROCESSING_TYPE.MIXED) {
98
- if (!callback || typeof callback !== 'function') {
99
- throw new Error(`Invalid callback type: ${typeof callback}`);
124
+ try {
125
+ const { numPages } = pdfDocument;
126
+ if (type === PROCESSING_TYPE.MIXED) {
127
+ if (!callback || typeof callback !== 'function') {
128
+ throw new Error(`Invalid callback type: ${typeof callback}`);
129
+ }
130
+ const results = Array.from({ length: numPages });
131
+ const pageTasks = Array.from({ length: numPages }, (_, i) => {
132
+ const pageNum = i + 1;
133
+ return limit(async () => {
134
+ const page = await pdfDocument.getPage(pageNum);
135
+ const canvasFactory = pdfDocument.canvasFactory;
136
+ const result = await processPdfPageTypeMixed(page, canvasFactory, pageNum, numPages, scale, encoding, callback);
137
+ results[i] = result;
138
+ });
139
+ });
140
+ await Promise.all(pageTasks);
141
+ return results;
100
142
  }
101
- const results = new Array(numPages);
102
- const pageTasks = Array.from({ length: numPages }, (_, i) => {
103
- const pageNum = i + 1;
104
- return limit(async () => {
105
- const page = await pdfDocument.getPage(pageNum);
106
- const canvasFactory = pdfDocument.canvasFactory;
107
- const result = await processPdfPageTypeMixed(page, canvasFactory, pageNum, numPages, scale, encoding, callback);
108
- results[i] = result;
143
+ if (type === PROCESSING_TYPE.TEXT) {
144
+ const results = Array.from({ length: numPages });
145
+ const pageTasks = Array.from({ length: numPages }, (_, i) => {
146
+ const pageNum = i + 1;
147
+ return limit(async () => {
148
+ const page = await pdfDocument.getPage(pageNum);
149
+ results[i] = await processPdfPageTypeText(page);
150
+ });
109
151
  });
110
- });
111
- await Promise.all(pageTasks);
112
- return results;
113
- }
114
- if (type === PROCESSING_TYPE.TEXT) {
115
- const results = new Array(numPages);
116
- const pageTasks = Array.from({ length: numPages }, (_, i) => {
117
- const pageNum = i + 1;
118
- return limit(async () => {
119
- const page = await pdfDocument.getPage(pageNum);
120
- results[i] = await processPdfPageTypeText(page);
152
+ await Promise.all(pageTasks);
153
+ return results;
154
+ }
155
+ if (type === PROCESSING_TYPE.IMAGE) {
156
+ const results = Array.from({ length: numPages });
157
+ const pageTasks = Array.from({ length: numPages }, (_, i) => {
158
+ const pageNum = i + 1;
159
+ return limit(async () => {
160
+ const page = await pdfDocument.getPage(pageNum);
161
+ const canvasFactory = pdfDocument.canvasFactory;
162
+ results[i] = await processPdfPageTypeImage(page, canvasFactory, pageNum, numPages, scale, encoding);
163
+ });
121
164
  });
122
- });
123
- await Promise.all(pageTasks);
124
- return results;
165
+ await Promise.all(pageTasks);
166
+ return results;
167
+ }
168
+ throw new Error('Invalid PROCESSING_TYPE');
125
169
  }
126
- if (type === PROCESSING_TYPE.IMAGE) {
127
- const results = new Array(numPages);
128
- const pageTasks = Array.from({ length: numPages }, (_, i) => {
129
- const pageNum = i + 1;
130
- return limit(async () => {
131
- const page = await pdfDocument.getPage(pageNum);
170
+ finally {
171
+ // Clean up pdfjs resources to prevent memory leaks
172
+ pdfDocument.cleanup();
173
+ await pdfDocument.destroy();
174
+ loadingTask.destroy();
175
+ }
176
+ }
177
+ async function* streamPdfFile(type, input, options) {
178
+ const { documentInitParameters, encoding, scale } = await validateParameters(input, options);
179
+ const loadingTask = (0, pdf_mjs_1.getDocument)(documentInitParameters);
180
+ const pdfDocument = await loadingTask.promise;
181
+ try {
182
+ const { numPages } = pdfDocument;
183
+ for (let pageNum = 1; pageNum <= numPages; pageNum++) {
184
+ const page = await pdfDocument.getPage(pageNum);
185
+ if (type === PROCESSING_TYPE.IMAGE) {
132
186
  const canvasFactory = pdfDocument.canvasFactory;
133
- results[i] = await processPdfPageTypeImage(page, canvasFactory, pageNum, numPages, scale, encoding);
134
- });
135
- });
136
- await Promise.all(pageTasks);
137
- return results;
187
+ const data = await processPdfPageTypeImage(page, canvasFactory, pageNum, numPages, scale, encoding);
188
+ yield { data, pageCount: numPages, pageNumber: pageNum };
189
+ }
190
+ else {
191
+ const data = await processPdfPageTypeText(page);
192
+ yield { data, pageCount: numPages, pageNumber: pageNum };
193
+ }
194
+ }
195
+ }
196
+ finally {
197
+ pdfDocument.cleanup();
198
+ await pdfDocument.destroy();
199
+ loadingTask.destroy();
138
200
  }
139
- throw new Error('Invalid PROCESSING_TYPE');
140
201
  }
141
202
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export type { StreamingResult } from './core';
1
2
  export { parsePdf } from './parsePdf';
2
3
  export { pdf2image } from './pdf2image';
3
4
  export { pdf2string } from './pdf2string';
5
+ export { streamPdf2image, streamPdf2string } from './streamPdf';
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pdf2string = exports.pdf2image = exports.parsePdf = void 0;
3
+ exports.streamPdf2string = exports.streamPdf2image = exports.pdf2string = exports.pdf2image = exports.parsePdf = void 0;
4
4
  var parsePdf_1 = require("./parsePdf");
5
5
  Object.defineProperty(exports, "parsePdf", { enumerable: true, get: function () { return parsePdf_1.parsePdf; } });
6
6
  var pdf2image_1 = require("./pdf2image");
7
7
  Object.defineProperty(exports, "pdf2image", { enumerable: true, get: function () { return pdf2image_1.pdf2image; } });
8
8
  var pdf2string_1 = require("./pdf2string");
9
9
  Object.defineProperty(exports, "pdf2string", { enumerable: true, get: function () { return pdf2string_1.pdf2string; } });
10
+ var streamPdf_1 = require("./streamPdf");
11
+ Object.defineProperty(exports, "streamPdf2image", { enumerable: true, get: function () { return streamPdf_1.streamPdf2image; } });
12
+ Object.defineProperty(exports, "streamPdf2string", { enumerable: true, get: function () { return streamPdf_1.streamPdf2string; } });
10
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AACnB,iDAAwE;AAA/D,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf2string.js","sourceRoot":"","sources":["../src/pdf2string.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AACxB;;;;;;;;;;;;;;;GAeG;AAEI,MAAM,UAAU,GAAG,KAAK,EAC7B,KAAyC,EACzC,OAA0B,EAC1B,EAAE,CAAC,IAAA,mBAAY,EAAC,sBAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAH3C,QAAA,UAAU,cAGiC"}
1
+ {"version":3,"file":"pdf2string.js","sourceRoot":"","sources":["../src/pdf2string.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AAExB;;;;;;;;;;;;;;;GAeG;AAEI,MAAM,UAAU,GAAG,KAAK,EAC7B,KAAyC,EACzC,OAA0B,EAC1B,EAAE,CAAC,IAAA,mBAAY,EAAC,sBAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAH3C,QAAA,UAAU,cAGiC"}
@@ -0,0 +1,33 @@
1
+ import { AfppParseOptions, StreamingResult } from './core';
2
+ /**
3
+ * Streams PDF pages as images, yielding each page as it's processed.
4
+ * Useful for large PDFs where you want to process pages incrementally.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * for await (const { pageNumber, data } of streamPdf2image('./large.pdf')) {
9
+ * await fs.writeFile(`page-${pageNumber}.png`, data);
10
+ * }
11
+ * ```
12
+ *
13
+ * @param input - The PDF source (file path, URL, Buffer, or Uint8Array)
14
+ * @param options - Optional parsing options
15
+ * @yields {StreamingResult<Buffer>} Page data with page number and total count
16
+ */
17
+ export declare const streamPdf2image: (input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions) => AsyncGenerator<StreamingResult<Buffer>>;
18
+ /**
19
+ * Streams PDF pages as text, yielding each page as it's processed.
20
+ * Useful for large PDFs where you want to process pages incrementally.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * for await (const { pageNumber, data } of streamPdf2string('./large.pdf')) {
25
+ * console.log(`Page ${pageNumber}: ${data.substring(0, 100)}...`);
26
+ * }
27
+ * ```
28
+ *
29
+ * @param input - The PDF source (file path, URL, Buffer, or Uint8Array)
30
+ * @param options - Optional parsing options
31
+ * @yields {StreamingResult<string>} Page text with page number and total count
32
+ */
33
+ export declare const streamPdf2string: (input: Buffer | string | Uint8Array | URL, options?: AfppParseOptions) => AsyncGenerator<StreamingResult<string>>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.streamPdf2string = exports.streamPdf2image = void 0;
4
+ const core_1 = require("./core");
5
+ /**
6
+ * Streams PDF pages as images, yielding each page as it's processed.
7
+ * Useful for large PDFs where you want to process pages incrementally.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * for await (const { pageNumber, data } of streamPdf2image('./large.pdf')) {
12
+ * await fs.writeFile(`page-${pageNumber}.png`, data);
13
+ * }
14
+ * ```
15
+ *
16
+ * @param input - The PDF source (file path, URL, Buffer, or Uint8Array)
17
+ * @param options - Optional parsing options
18
+ * @yields {StreamingResult<Buffer>} Page data with page number and total count
19
+ */
20
+ const streamPdf2image = (input, options) => (0, core_1.streamPdfFile)(core_1.PROCESSING_TYPE.IMAGE, input, options);
21
+ exports.streamPdf2image = streamPdf2image;
22
+ /**
23
+ * Streams PDF pages as text, yielding each page as it's processed.
24
+ * Useful for large PDFs where you want to process pages incrementally.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * for await (const { pageNumber, data } of streamPdf2string('./large.pdf')) {
29
+ * console.log(`Page ${pageNumber}: ${data.substring(0, 100)}...`);
30
+ * }
31
+ * ```
32
+ *
33
+ * @param input - The PDF source (file path, URL, Buffer, or Uint8Array)
34
+ * @param options - Optional parsing options
35
+ * @yields {StreamingResult<string>} Page text with page number and total count
36
+ */
37
+ const streamPdf2string = (input, options) => (0, core_1.streamPdfFile)(core_1.PROCESSING_TYPE.TEXT, input, options);
38
+ exports.streamPdf2string = streamPdf2string;
39
+ //# sourceMappingURL=streamPdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamPdf.js","sourceRoot":"","sources":["../src/streamPdf.ts"],"names":[],"mappings":";;;AAAA,yCAKwB;AAExB;;;;;;;;;;;;;;GAcG;AACI,MAAM,eAAe,GAAG,CAC7B,KAAyC,EACzC,OAA0B,EACe,EAAE,CAC3C,IAAA,oBAAa,EAAC,sBAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAJ1C,QAAA,eAAe,mBAI2B;AAEvD;;;;;;;;;;;;;;GAcG;AACI,MAAM,gBAAgB,GAAG,CAC9B,KAAyC,EACzC,OAA0B,EACe,EAAE,CAC3C,IAAA,oBAAa,EAAC,sBAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAJzC,QAAA,gBAAgB,oBAIyB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "afpp",
3
- "version": "2.2.1",
3
+ "version": "2.3.0",
4
4
  "description": "Async Fast PDF Parser for Node.js — dependency-light, TypeScript-first, production-ready.",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -13,8 +13,9 @@
13
13
  "build": "tsc -p tsconfig.build.json",
14
14
  "commit": "git-cz",
15
15
  "format": "prettier --write .",
16
- "lint": "eslint .",
17
- "lint:fix": "eslint . --fix",
16
+ "format:check": "prettier --check .",
17
+ "lint": "oxlint .",
18
+ "lint:fix": "oxlint . --fix",
18
19
  "postbuild": "tsc-alias -p tsconfig.build.json",
19
20
  "prebuild": "rm -rf dist",
20
21
  "prepare": "husky",
@@ -22,6 +23,7 @@
22
23
  "test": "NODE_ENV=test npx tsx --test --test-reporter @voxpelli/node-test-pretty-reporter test/*.test.ts",
23
24
  "test:coverage": "c8 --reporter=lcov npm test",
24
25
  "test:single": "NODE_ENV=test npx tsx --test --test-reporter @voxpelli/node-test-pretty-reporter",
26
+ "benchmark:cleanup": "npx tsx benchmark/cleanup.ts",
25
27
  "typecheck": "tsc -p tsconfig.json --noEmit"
26
28
  },
27
29
  "repository": {
@@ -52,27 +54,22 @@
52
54
  "devDependencies": {
53
55
  "@commitlint/cli": "20.3.1",
54
56
  "@commitlint/config-conventional": "20.3.1",
57
+ "@ianvs/prettier-plugin-sort-imports": "4.7.0",
55
58
  "@semantic-release/changelog": "6.0.3",
56
59
  "@semantic-release/git": "10.0.1",
57
- "@types/node": "25.0.9",
60
+ "@types/node": "25.0.10",
58
61
  "@voxpelli/node-test-pretty-reporter": "1.1.2",
59
62
  "c8": "10.1.3",
60
63
  "commitizen": "4.3.1",
61
64
  "cz-conventional-changelog": "3.3.0",
62
- "eslint": "9.39.2",
63
- "eslint-config-prettier": "10.1.8",
64
- "eslint-plugin-import": "2.32.0",
65
- "eslint-plugin-perfectionist": "5.3.1",
66
- "eslint-plugin-prettier": "5.5.5",
67
- "eslint-plugin-promise": "7.2.1",
68
65
  "husky": "9.1.7",
69
66
  "lint-staged": "16.2.7",
70
- "prettier": "3.8.0",
67
+ "oxlint": "1.42.0",
68
+ "prettier": "3.8.1",
71
69
  "semantic-release": "25.0.2",
72
70
  "tsc-alias": "1.8.16",
73
71
  "tsx": "4.21.0",
74
- "typescript": "5.9.3",
75
- "typescript-eslint": "8.50.0"
72
+ "typescript": "5.9.3"
76
73
  },
77
74
  "dependencies": {
78
75
  "p-limit": "7.2.0",