unpdf 0.1.0 → 0.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 +8 -1
- package/dist/index.node.cjs +34 -11
- package/dist/index.node.d.cts +14 -1
- package/dist/index.node.d.mts +14 -1
- package/dist/index.node.d.ts +14 -1
- package/dist/index.node.mjs +34 -12
- package/dist/index.web.cjs +6 -2
- package/dist/index.web.d.cts +4 -3
- package/dist/index.web.d.mts +4 -3
- package/dist/index.web.d.ts +4 -3
- package/dist/index.web.mjs +6 -3
- package/package.json +1 -1
- package/dist/shared/unpdf.98b795c6.d.cts +0 -12
- package/dist/shared/unpdf.98b795c6.d.mts +0 -12
- package/dist/shared/unpdf.98b795c6.d.ts +0 -12
package/README.md
CHANGED
|
@@ -14,7 +14,14 @@ A collection of utilities to work with PDFs.
|
|
|
14
14
|
Run the following command to add `unpdf` to your project.
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
# pnpm
|
|
18
|
+
pnpm add -D unpdf
|
|
19
|
+
|
|
20
|
+
# npm
|
|
21
|
+
npm install -D unpdf
|
|
22
|
+
|
|
23
|
+
# yarn
|
|
24
|
+
yarn add -D unpdf
|
|
18
25
|
```
|
|
19
26
|
|
|
20
27
|
## Usage
|
package/dist/index.node.cjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const pdfjsDist = require('pdfjs-dist');
|
|
4
|
+
|
|
5
|
+
async function getDocumentProxy(data) {
|
|
4
6
|
const { getDocument } = await getPDFJSImports();
|
|
5
7
|
const pdf = await getDocument({
|
|
6
8
|
data,
|
|
@@ -8,6 +10,23 @@ async function decodePDFText(data, { mergePages = false } = {}) {
|
|
|
8
10
|
useSystemFonts: true,
|
|
9
11
|
isEvalSupported: false
|
|
10
12
|
}).promise;
|
|
13
|
+
return pdf;
|
|
14
|
+
}
|
|
15
|
+
async function getPDFJSImports() {
|
|
16
|
+
try {
|
|
17
|
+
const { default: mod } = await import('pdfjs-dist/legacy/build/pdf');
|
|
18
|
+
const { getDocument, version } = mod;
|
|
19
|
+
return { getDocument, version };
|
|
20
|
+
} catch (e) {
|
|
21
|
+
console.error(e);
|
|
22
|
+
throw new Error(
|
|
23
|
+
"PDF.js is not available. Please run `pnpm add -D pdfjs-dist` and try again."
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function decodePDFText(data, { mergePages = false } = {}) {
|
|
29
|
+
const pdf = await getDocumentProxy(data);
|
|
11
30
|
const meta = await pdf.getMetadata().catch(() => null);
|
|
12
31
|
const texts = await Promise.all(
|
|
13
32
|
Array.from({ length: pdf.numPages }, (_, i) => getPageText(pdf, i + 1))
|
|
@@ -28,17 +47,21 @@ async function getPageText(pdf, pageNumber) {
|
|
|
28
47
|
return;
|
|
29
48
|
return items.map(({ str }) => str).join("\n");
|
|
30
49
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
);
|
|
50
|
+
|
|
51
|
+
async function getImagesFromPage(data, pageNumber) {
|
|
52
|
+
const pdf = await getDocumentProxy(data);
|
|
53
|
+
const page = await pdf.getPage(pageNumber);
|
|
54
|
+
const operatorList = await page.getOperatorList();
|
|
55
|
+
const images = [];
|
|
56
|
+
for (const op of operatorList.fnArray) {
|
|
57
|
+
if (op !== pdfjsDist.OPS.paintImageXObject)
|
|
58
|
+
continue;
|
|
59
|
+
const image = await page.objs.get(operatorList.argsArray[op][0]);
|
|
60
|
+
if (image.data)
|
|
61
|
+
images.push(image.data.buffer);
|
|
41
62
|
}
|
|
63
|
+
return images;
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
exports.decodePDFText = decodePDFText;
|
|
67
|
+
exports.getImagesFromPage = getImagesFromPage;
|
package/dist/index.node.d.cts
CHANGED
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
interface PDFContent {
|
|
2
|
+
totalPages: number;
|
|
3
|
+
info?: Record<string, any>;
|
|
4
|
+
metadata?: any;
|
|
5
|
+
text: string | string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
+
mergePages?: boolean;
|
|
10
|
+
}): Promise<PDFContent>;
|
|
11
|
+
|
|
12
|
+
declare function getImagesFromPage(data: ArrayBuffer, pageNumber: number): Promise<ArrayBuffer[]>;
|
|
13
|
+
|
|
14
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.node.d.mts
CHANGED
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
interface PDFContent {
|
|
2
|
+
totalPages: number;
|
|
3
|
+
info?: Record<string, any>;
|
|
4
|
+
metadata?: any;
|
|
5
|
+
text: string | string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
+
mergePages?: boolean;
|
|
10
|
+
}): Promise<PDFContent>;
|
|
11
|
+
|
|
12
|
+
declare function getImagesFromPage(data: ArrayBuffer, pageNumber: number): Promise<ArrayBuffer[]>;
|
|
13
|
+
|
|
14
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.node.d.ts
CHANGED
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
interface PDFContent {
|
|
2
|
+
totalPages: number;
|
|
3
|
+
info?: Record<string, any>;
|
|
4
|
+
metadata?: any;
|
|
5
|
+
text: string | string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
+
mergePages?: boolean;
|
|
10
|
+
}): Promise<PDFContent>;
|
|
11
|
+
|
|
12
|
+
declare function getImagesFromPage(data: ArrayBuffer, pageNumber: number): Promise<ArrayBuffer[]>;
|
|
13
|
+
|
|
14
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.node.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { OPS } from 'pdfjs-dist';
|
|
2
|
+
|
|
3
|
+
async function getDocumentProxy(data) {
|
|
2
4
|
const { getDocument } = await getPDFJSImports();
|
|
3
5
|
const pdf = await getDocument({
|
|
4
6
|
data,
|
|
@@ -6,6 +8,23 @@ async function decodePDFText(data, { mergePages = false } = {}) {
|
|
|
6
8
|
useSystemFonts: true,
|
|
7
9
|
isEvalSupported: false
|
|
8
10
|
}).promise;
|
|
11
|
+
return pdf;
|
|
12
|
+
}
|
|
13
|
+
async function getPDFJSImports() {
|
|
14
|
+
try {
|
|
15
|
+
const { default: mod } = await import('pdfjs-dist/legacy/build/pdf');
|
|
16
|
+
const { getDocument, version } = mod;
|
|
17
|
+
return { getDocument, version };
|
|
18
|
+
} catch (e) {
|
|
19
|
+
console.error(e);
|
|
20
|
+
throw new Error(
|
|
21
|
+
"PDF.js is not available. Please run `pnpm add -D pdfjs-dist` and try again."
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async function decodePDFText(data, { mergePages = false } = {}) {
|
|
27
|
+
const pdf = await getDocumentProxy(data);
|
|
9
28
|
const meta = await pdf.getMetadata().catch(() => null);
|
|
10
29
|
const texts = await Promise.all(
|
|
11
30
|
Array.from({ length: pdf.numPages }, (_, i) => getPageText(pdf, i + 1))
|
|
@@ -26,17 +45,20 @@ async function getPageText(pdf, pageNumber) {
|
|
|
26
45
|
return;
|
|
27
46
|
return items.map(({ str }) => str).join("\n");
|
|
28
47
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
);
|
|
48
|
+
|
|
49
|
+
async function getImagesFromPage(data, pageNumber) {
|
|
50
|
+
const pdf = await getDocumentProxy(data);
|
|
51
|
+
const page = await pdf.getPage(pageNumber);
|
|
52
|
+
const operatorList = await page.getOperatorList();
|
|
53
|
+
const images = [];
|
|
54
|
+
for (const op of operatorList.fnArray) {
|
|
55
|
+
if (op !== OPS.paintImageXObject)
|
|
56
|
+
continue;
|
|
57
|
+
const image = await page.objs.get(operatorList.argsArray[op][0]);
|
|
58
|
+
if (image.data)
|
|
59
|
+
images.push(image.data.buffer);
|
|
39
60
|
}
|
|
61
|
+
return images;
|
|
40
62
|
}
|
|
41
63
|
|
|
42
|
-
export { decodePDFText };
|
|
64
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.web.cjs
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
async
|
|
3
|
+
const decodePDFText = async () => {
|
|
4
4
|
throw new Error("Not supported in browser context yet");
|
|
5
|
-
}
|
|
5
|
+
};
|
|
6
|
+
const getImagesFromPage = async () => {
|
|
7
|
+
throw new Error("Not supported in browser context yet");
|
|
8
|
+
};
|
|
6
9
|
|
|
7
10
|
exports.decodePDFText = decodePDFText;
|
|
11
|
+
exports.getImagesFromPage = getImagesFromPage;
|
package/dist/index.web.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { decodePDFText as decodePDFText$1, getImagesFromPage as getImagesFromPage$1 } from './index.node.cjs';
|
|
2
2
|
|
|
3
|
-
declare
|
|
3
|
+
declare const decodePDFText: typeof decodePDFText$1;
|
|
4
|
+
declare const getImagesFromPage: typeof getImagesFromPage$1;
|
|
4
5
|
|
|
5
|
-
export { decodePDFText };
|
|
6
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.web.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { decodePDFText as decodePDFText$1, getImagesFromPage as getImagesFromPage$1 } from './index.node.mjs';
|
|
2
2
|
|
|
3
|
-
declare
|
|
3
|
+
declare const decodePDFText: typeof decodePDFText$1;
|
|
4
|
+
declare const getImagesFromPage: typeof getImagesFromPage$1;
|
|
4
5
|
|
|
5
|
-
export { decodePDFText };
|
|
6
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.web.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { decodePDFText as decodePDFText$1, getImagesFromPage as getImagesFromPage$1 } from './index.node.js';
|
|
2
2
|
|
|
3
|
-
declare
|
|
3
|
+
declare const decodePDFText: typeof decodePDFText$1;
|
|
4
|
+
declare const getImagesFromPage: typeof getImagesFromPage$1;
|
|
4
5
|
|
|
5
|
-
export { decodePDFText };
|
|
6
|
+
export { decodePDFText, getImagesFromPage };
|
package/dist/index.web.mjs
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
async
|
|
1
|
+
const decodePDFText = async () => {
|
|
2
2
|
throw new Error("Not supported in browser context yet");
|
|
3
|
-
}
|
|
3
|
+
};
|
|
4
|
+
const getImagesFromPage = async () => {
|
|
5
|
+
throw new Error("Not supported in browser context yet");
|
|
6
|
+
};
|
|
4
7
|
|
|
5
|
-
export { decodePDFText };
|
|
8
|
+
export { decodePDFText, getImagesFromPage };
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface PDFContent {
|
|
2
|
-
totalPages: number;
|
|
3
|
-
info?: Record<string, any>;
|
|
4
|
-
metadata?: any;
|
|
5
|
-
text: string | string[];
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
-
mergePages?: boolean;
|
|
10
|
-
}): Promise<PDFContent>;
|
|
11
|
-
|
|
12
|
-
export { PDFContent as P, decodePDFText as d };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface PDFContent {
|
|
2
|
-
totalPages: number;
|
|
3
|
-
info?: Record<string, any>;
|
|
4
|
-
metadata?: any;
|
|
5
|
-
text: string | string[];
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
-
mergePages?: boolean;
|
|
10
|
-
}): Promise<PDFContent>;
|
|
11
|
-
|
|
12
|
-
export { PDFContent as P, decodePDFText as d };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface PDFContent {
|
|
2
|
-
totalPages: number;
|
|
3
|
-
info?: Record<string, any>;
|
|
4
|
-
metadata?: any;
|
|
5
|
-
text: string | string[];
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
declare function decodePDFText(data: ArrayBuffer, { mergePages }?: {
|
|
9
|
-
mergePages?: boolean;
|
|
10
|
-
}): Promise<PDFContent>;
|
|
11
|
-
|
|
12
|
-
export { PDFContent as P, decodePDFText as d };
|