unpdf 1.5.1 → 1.6.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/dist/index.cjs +31 -0
- package/dist/index.d.cts +27 -1
- package/dist/index.d.mts +27 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.mjs +31 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -340,6 +340,32 @@ function parseISODateString(isoDateString) {
|
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
+
async function extractTextItems$1(data) {
|
|
344
|
+
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
345
|
+
const items = await Promise.all(
|
|
346
|
+
Array.from({ length: pdf.numPages }, (_, i) => getPageTextItems(pdf, i + 1))
|
|
347
|
+
);
|
|
348
|
+
return { totalPages: pdf.numPages, items };
|
|
349
|
+
}
|
|
350
|
+
async function getPageTextItems(document, pageNumber) {
|
|
351
|
+
const page = await document.getPage(pageNumber);
|
|
352
|
+
const content = await page.getTextContent();
|
|
353
|
+
const styles = content.styles;
|
|
354
|
+
return content.items.filter((item) => item.str != null).map((item) => {
|
|
355
|
+
const [_a, _b, c, d, e, f] = item.transform;
|
|
356
|
+
return {
|
|
357
|
+
str: item.str,
|
|
358
|
+
x: e,
|
|
359
|
+
y: f,
|
|
360
|
+
width: item.width,
|
|
361
|
+
height: item.height,
|
|
362
|
+
fontSize: Math.hypot(c, d),
|
|
363
|
+
fontFamily: styles[item.fontName]?.fontFamily ?? "",
|
|
364
|
+
dir: item.dir,
|
|
365
|
+
hasEOL: item.hasEOL
|
|
366
|
+
};
|
|
367
|
+
});
|
|
368
|
+
}
|
|
343
369
|
async function extractText$1(data, options = {}) {
|
|
344
370
|
const { mergePages = false } = options;
|
|
345
371
|
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
@@ -372,6 +398,10 @@ const extractText = async (...args) => {
|
|
|
372
398
|
await resolvePDFJSImport();
|
|
373
399
|
return await extractText$1(...args);
|
|
374
400
|
};
|
|
401
|
+
const extractTextItems = async (...args) => {
|
|
402
|
+
await resolvePDFJSImport();
|
|
403
|
+
return await extractTextItems$1(...args);
|
|
404
|
+
};
|
|
375
405
|
const extractImages = async (...args) => {
|
|
376
406
|
await resolvePDFJSImport();
|
|
377
407
|
return await extractImages$1(...args);
|
|
@@ -391,6 +421,7 @@ exports.definePDFJSModule = definePDFJSModule;
|
|
|
391
421
|
exports.extractImages = extractImages;
|
|
392
422
|
exports.extractLinks = extractLinks;
|
|
393
423
|
exports.extractText = extractText;
|
|
424
|
+
exports.extractTextItems = extractTextItems;
|
|
394
425
|
exports.getDocumentProxy = getDocumentProxy;
|
|
395
426
|
exports.getMeta = getMeta;
|
|
396
427
|
exports.getResolvedPDFJS = getResolvedPDFJS;
|
package/dist/index.d.cts
CHANGED
|
@@ -100,6 +100,30 @@ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentPro
|
|
|
100
100
|
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
101
101
|
}>;
|
|
102
102
|
|
|
103
|
+
interface StructuredTextItem {
|
|
104
|
+
/** Text content. */
|
|
105
|
+
str: string;
|
|
106
|
+
/** X position in PDF coordinate space (origin: bottom-left). */
|
|
107
|
+
x: number;
|
|
108
|
+
/** Y position in PDF coordinate space (origin: bottom-left). */
|
|
109
|
+
y: number;
|
|
110
|
+
/** Width in device space. */
|
|
111
|
+
width: number;
|
|
112
|
+
/** Height in device space. */
|
|
113
|
+
height: number;
|
|
114
|
+
/** Font size derived from the transformation matrix. */
|
|
115
|
+
fontSize: number;
|
|
116
|
+
/** Font family name. */
|
|
117
|
+
fontFamily: string;
|
|
118
|
+
/** Text direction: `"ltr"`, `"rtl"`, or `"ttb"`. */
|
|
119
|
+
dir: string;
|
|
120
|
+
/** Whether the text item is followed by a line break. */
|
|
121
|
+
hasEOL: boolean;
|
|
122
|
+
}
|
|
123
|
+
declare function extractTextItems$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
|
|
124
|
+
totalPages: number;
|
|
125
|
+
items: StructuredTextItem[][];
|
|
126
|
+
}>;
|
|
103
127
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
104
128
|
mergePages?: false;
|
|
105
129
|
}): Promise<{
|
|
@@ -149,8 +173,10 @@ declare function resolvePDFJSImport(pdfjsResolver?: () => Promise<any>, { reload
|
|
|
149
173
|
|
|
150
174
|
declare const getMeta: typeof getMeta$1;
|
|
151
175
|
declare const extractText: typeof extractText$1;
|
|
176
|
+
declare const extractTextItems: typeof extractTextItems$1;
|
|
152
177
|
declare const extractImages: typeof extractImages$1;
|
|
153
178
|
declare const renderPageAsImage: typeof renderPageAsImage$1;
|
|
154
179
|
declare const extractLinks: typeof extractLinks$1;
|
|
155
180
|
|
|
156
|
-
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
181
|
+
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, extractTextItems, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
182
|
+
export type { StructuredTextItem };
|
package/dist/index.d.mts
CHANGED
|
@@ -100,6 +100,30 @@ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentPro
|
|
|
100
100
|
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
101
101
|
}>;
|
|
102
102
|
|
|
103
|
+
interface StructuredTextItem {
|
|
104
|
+
/** Text content. */
|
|
105
|
+
str: string;
|
|
106
|
+
/** X position in PDF coordinate space (origin: bottom-left). */
|
|
107
|
+
x: number;
|
|
108
|
+
/** Y position in PDF coordinate space (origin: bottom-left). */
|
|
109
|
+
y: number;
|
|
110
|
+
/** Width in device space. */
|
|
111
|
+
width: number;
|
|
112
|
+
/** Height in device space. */
|
|
113
|
+
height: number;
|
|
114
|
+
/** Font size derived from the transformation matrix. */
|
|
115
|
+
fontSize: number;
|
|
116
|
+
/** Font family name. */
|
|
117
|
+
fontFamily: string;
|
|
118
|
+
/** Text direction: `"ltr"`, `"rtl"`, or `"ttb"`. */
|
|
119
|
+
dir: string;
|
|
120
|
+
/** Whether the text item is followed by a line break. */
|
|
121
|
+
hasEOL: boolean;
|
|
122
|
+
}
|
|
123
|
+
declare function extractTextItems$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
|
|
124
|
+
totalPages: number;
|
|
125
|
+
items: StructuredTextItem[][];
|
|
126
|
+
}>;
|
|
103
127
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
104
128
|
mergePages?: false;
|
|
105
129
|
}): Promise<{
|
|
@@ -149,8 +173,10 @@ declare function resolvePDFJSImport(pdfjsResolver?: () => Promise<any>, { reload
|
|
|
149
173
|
|
|
150
174
|
declare const getMeta: typeof getMeta$1;
|
|
151
175
|
declare const extractText: typeof extractText$1;
|
|
176
|
+
declare const extractTextItems: typeof extractTextItems$1;
|
|
152
177
|
declare const extractImages: typeof extractImages$1;
|
|
153
178
|
declare const renderPageAsImage: typeof renderPageAsImage$1;
|
|
154
179
|
declare const extractLinks: typeof extractLinks$1;
|
|
155
180
|
|
|
156
|
-
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
181
|
+
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, extractTextItems, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
182
|
+
export type { StructuredTextItem };
|
package/dist/index.d.ts
CHANGED
|
@@ -100,6 +100,30 @@ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentPro
|
|
|
100
100
|
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
101
101
|
}>;
|
|
102
102
|
|
|
103
|
+
interface StructuredTextItem {
|
|
104
|
+
/** Text content. */
|
|
105
|
+
str: string;
|
|
106
|
+
/** X position in PDF coordinate space (origin: bottom-left). */
|
|
107
|
+
x: number;
|
|
108
|
+
/** Y position in PDF coordinate space (origin: bottom-left). */
|
|
109
|
+
y: number;
|
|
110
|
+
/** Width in device space. */
|
|
111
|
+
width: number;
|
|
112
|
+
/** Height in device space. */
|
|
113
|
+
height: number;
|
|
114
|
+
/** Font size derived from the transformation matrix. */
|
|
115
|
+
fontSize: number;
|
|
116
|
+
/** Font family name. */
|
|
117
|
+
fontFamily: string;
|
|
118
|
+
/** Text direction: `"ltr"`, `"rtl"`, or `"ttb"`. */
|
|
119
|
+
dir: string;
|
|
120
|
+
/** Whether the text item is followed by a line break. */
|
|
121
|
+
hasEOL: boolean;
|
|
122
|
+
}
|
|
123
|
+
declare function extractTextItems$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
|
|
124
|
+
totalPages: number;
|
|
125
|
+
items: StructuredTextItem[][];
|
|
126
|
+
}>;
|
|
103
127
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
104
128
|
mergePages?: false;
|
|
105
129
|
}): Promise<{
|
|
@@ -149,8 +173,10 @@ declare function resolvePDFJSImport(pdfjsResolver?: () => Promise<any>, { reload
|
|
|
149
173
|
|
|
150
174
|
declare const getMeta: typeof getMeta$1;
|
|
151
175
|
declare const extractText: typeof extractText$1;
|
|
176
|
+
declare const extractTextItems: typeof extractTextItems$1;
|
|
152
177
|
declare const extractImages: typeof extractImages$1;
|
|
153
178
|
declare const renderPageAsImage: typeof renderPageAsImage$1;
|
|
154
179
|
declare const extractLinks: typeof extractLinks$1;
|
|
155
180
|
|
|
156
|
-
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
181
|
+
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, extractTextItems, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
182
|
+
export type { StructuredTextItem };
|
package/dist/index.mjs
CHANGED
|
@@ -338,6 +338,32 @@ function parseISODateString(isoDateString) {
|
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
+
async function extractTextItems$1(data) {
|
|
342
|
+
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
343
|
+
const items = await Promise.all(
|
|
344
|
+
Array.from({ length: pdf.numPages }, (_, i) => getPageTextItems(pdf, i + 1))
|
|
345
|
+
);
|
|
346
|
+
return { totalPages: pdf.numPages, items };
|
|
347
|
+
}
|
|
348
|
+
async function getPageTextItems(document, pageNumber) {
|
|
349
|
+
const page = await document.getPage(pageNumber);
|
|
350
|
+
const content = await page.getTextContent();
|
|
351
|
+
const styles = content.styles;
|
|
352
|
+
return content.items.filter((item) => item.str != null).map((item) => {
|
|
353
|
+
const [_a, _b, c, d, e, f] = item.transform;
|
|
354
|
+
return {
|
|
355
|
+
str: item.str,
|
|
356
|
+
x: e,
|
|
357
|
+
y: f,
|
|
358
|
+
width: item.width,
|
|
359
|
+
height: item.height,
|
|
360
|
+
fontSize: Math.hypot(c, d),
|
|
361
|
+
fontFamily: styles[item.fontName]?.fontFamily ?? "",
|
|
362
|
+
dir: item.dir,
|
|
363
|
+
hasEOL: item.hasEOL
|
|
364
|
+
};
|
|
365
|
+
});
|
|
366
|
+
}
|
|
341
367
|
async function extractText$1(data, options = {}) {
|
|
342
368
|
const { mergePages = false } = options;
|
|
343
369
|
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
@@ -370,6 +396,10 @@ const extractText = async (...args) => {
|
|
|
370
396
|
await resolvePDFJSImport();
|
|
371
397
|
return await extractText$1(...args);
|
|
372
398
|
};
|
|
399
|
+
const extractTextItems = async (...args) => {
|
|
400
|
+
await resolvePDFJSImport();
|
|
401
|
+
return await extractTextItems$1(...args);
|
|
402
|
+
};
|
|
373
403
|
const extractImages = async (...args) => {
|
|
374
404
|
await resolvePDFJSImport();
|
|
375
405
|
return await extractImages$1(...args);
|
|
@@ -383,4 +413,4 @@ const extractLinks = async (...args) => {
|
|
|
383
413
|
return await extractLinks$1(...args);
|
|
384
414
|
};
|
|
385
415
|
|
|
386
|
-
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
|
416
|
+
export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, extractTextItems, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };
|
package/package.json
CHANGED