unpdf 0.6.0 → 0.7.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unpdf",
3
3
  "type": "module",
4
- "version": "0.6.0",
4
+ "version": "0.7.0",
5
5
  "packageManager": "pnpm@8.7.0",
6
6
  "description": "Utilities to work with PDFs in Node.js, browser and workers",
7
7
  "author": "Johann Schopplich <pkg@johannschopplich.com>",
@@ -22,34 +22,23 @@
22
22
  "sideEffects": false,
23
23
  "exports": {
24
24
  ".": {
25
- "browser": "./dist/index.web.mjs",
26
- "bun": "./dist/index.worker.mjs",
27
- "deno": "./dist/index.worker.mjs",
28
- "edge-light": "./dist/index.worker.mjs",
29
- "edge-routine": "./dist/index.worker.mjs",
30
- "lagon": "./dist/index.worker.mjs",
31
- "netlify": "./dist/index.worker.mjs",
32
- "react-native": "./dist/index.worker.mjs",
33
- "wintercg": "./dist/index.worker.mjs",
34
- "worker": "./dist/index.worker.mjs",
35
- "workerd": "./dist/index.worker.mjs",
36
- "node": {
37
- "types": "./dist/index.node.d.ts",
38
- "import": "./dist/index.node.mjs",
39
- "require": "./dist/index.node.cjs"
25
+ "import": {
26
+ "types": "./dist/index.d.mts",
27
+ "default": "./dist/index.mjs"
40
28
  },
41
- "types": "./dist/index.web.d.ts",
42
- "import": "./dist/index.web.mjs",
43
- "require": "./dist/index.web.cjs"
29
+ "require": {
30
+ "types": "./dist/index.d.cts",
31
+ "default": "./dist/index.cjs"
32
+ }
44
33
  },
45
34
  "./pdfjs": {
46
35
  "types": "./dist/pdfjs.d.ts",
47
36
  "import": "./dist/pdfjs.mjs"
48
37
  }
49
38
  },
50
- "main": "./dist/index.node.cjs",
51
- "module": "./dist/index.web.mjs",
52
- "types": "./dist/index.web.d.ts",
39
+ "main": "./dist/index.cjs",
40
+ "module": "./dist/index.mjs",
41
+ "types": "./dist/index.d.ts",
53
42
  "typesVersions": {
54
43
  "*": {
55
44
  "*": [
@@ -74,6 +63,9 @@
74
63
  "test": "vitest",
75
64
  "test:types": "tsc --noEmit"
76
65
  },
66
+ "optionalDependencies": {
67
+ "canvas": "^2.11.2"
68
+ },
77
69
  "devDependencies": {
78
70
  "@rollup/plugin-alias": "^5.0.0",
79
71
  "@rollup/plugin-commonjs": "^25.0.4",
@@ -94,5 +86,17 @@
94
86
  "unbuild": "^2.0.0",
95
87
  "unenv": "^1.7.4",
96
88
  "vitest": "^0.34.3"
89
+ },
90
+ "pnpm": {
91
+ "overrides": {
92
+ "array-includes": "npm:@nolyfill/array-includes@latest",
93
+ "array.prototype.findlastindex": "npm:@nolyfill/array.prototype.findlastindex@latest",
94
+ "array.prototype.flat": "npm:@nolyfill/array.prototype.flat@latest",
95
+ "array.prototype.flatmap": "npm:@nolyfill/array.prototype.flatmap@latest",
96
+ "has": "npm:@nolyfill/has@latest",
97
+ "object.fromentries": "npm:@nolyfill/object.fromentries@latest",
98
+ "object.groupby": "npm:@nolyfill/object.groupby@latest",
99
+ "object.values": "npm:@nolyfill/object.values@latest"
100
+ }
97
101
  }
98
102
  }
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const image = require('./shared/unpdf.6c0ca5b5.cjs');
4
-
5
- const getPDFMeta = async (...args) => {
6
- await image.resolvePDFJSImports();
7
- return await image.getPDFMeta(...args);
8
- };
9
- const extractPDFText = async (...args) => {
10
- await image.resolvePDFJSImports();
11
- return await image.extractPDFText(...args);
12
- };
13
- const getImagesFromPage = async (...args) => {
14
- await image.resolvePDFJSImports();
15
- return await image.getImagesFromPage(...args);
16
- };
17
-
18
- exports.defineUnPDFConfig = image.defineUnPDFConfig;
19
- exports.getDocumentProxy = image.getDocumentProxy;
20
- exports.getResolvedPDFJS = image.getResolvedPDFJS;
21
- exports.resolvePDFJSImports = image.resolvePDFJSImports;
22
- exports.extractPDFText = extractPDFText;
23
- exports.getImagesFromPage = getImagesFromPage;
24
- exports.getPDFMeta = getPDFMeta;
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.cjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.cjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.mjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.js';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.js';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,17 +0,0 @@
1
- import { r as resolvePDFJSImports, g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.ce219a40.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS } from './shared/unpdf.ce219a40.mjs';
3
-
4
- const getPDFMeta = async (...args) => {
5
- await resolvePDFJSImports();
6
- return await getPDFMeta$1(...args);
7
- };
8
- const extractPDFText = async (...args) => {
9
- await resolvePDFJSImports();
10
- return await extractPDFText$1(...args);
11
- };
12
- const getImagesFromPage = async (...args) => {
13
- await resolvePDFJSImports();
14
- return await getImagesFromPage$1(...args);
15
- };
16
-
17
- export { extractPDFText, getImagesFromPage, getPDFMeta, resolvePDFJSImports };
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const image = require('./shared/unpdf.6c0ca5b5.cjs');
4
-
5
- const getPDFMeta = async (...args) => {
6
- await image.resolvePDFJSImports();
7
- return await image.getPDFMeta(...args);
8
- };
9
- const extractPDFText = async (...args) => {
10
- await image.resolvePDFJSImports();
11
- return await image.extractPDFText(...args);
12
- };
13
- const getImagesFromPage = async (...args) => {
14
- await image.resolvePDFJSImports();
15
- return await image.getImagesFromPage(...args);
16
- };
17
-
18
- exports.defineUnPDFConfig = image.defineUnPDFConfig;
19
- exports.getDocumentProxy = image.getDocumentProxy;
20
- exports.getResolvedPDFJS = image.getResolvedPDFJS;
21
- exports.resolvePDFJSImports = image.resolvePDFJSImports;
22
- exports.extractPDFText = extractPDFText;
23
- exports.getImagesFromPage = getImagesFromPage;
24
- exports.getPDFMeta = getPDFMeta;
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.cjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.cjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.mjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.js';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.js';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,17 +0,0 @@
1
- import { r as resolvePDFJSImports, g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.ce219a40.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS } from './shared/unpdf.ce219a40.mjs';
3
-
4
- const getPDFMeta = async (...args) => {
5
- await resolvePDFJSImports();
6
- return await getPDFMeta$1(...args);
7
- };
8
- const extractPDFText = async (...args) => {
9
- await resolvePDFJSImports();
10
- return await extractPDFText$1(...args);
11
- };
12
- const getImagesFromPage = async (...args) => {
13
- await resolvePDFJSImports();
14
- return await getImagesFromPage$1(...args);
15
- };
16
-
17
- export { extractPDFText, getImagesFromPage, getPDFMeta, resolvePDFJSImports };
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const image = require('./shared/unpdf.6c0ca5b5.cjs');
4
-
5
- const getPDFMeta = async (...args) => {
6
- await image.resolvePDFJSImports();
7
- return await image.getPDFMeta(...args);
8
- };
9
- const extractPDFText = async (...args) => {
10
- await image.resolvePDFJSImports();
11
- return await image.extractPDFText(...args);
12
- };
13
- const getImagesFromPage = async (...args) => {
14
- await image.resolvePDFJSImports();
15
- return await image.getImagesFromPage(...args);
16
- };
17
-
18
- exports.defineUnPDFConfig = image.defineUnPDFConfig;
19
- exports.getDocumentProxy = image.getDocumentProxy;
20
- exports.getResolvedPDFJS = image.getResolvedPDFJS;
21
- exports.resolvePDFJSImports = image.resolvePDFJSImports;
22
- exports.extractPDFText = extractPDFText;
23
- exports.getImagesFromPage = getImagesFromPage;
24
- exports.getPDFMeta = getPDFMeta;
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.cjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.cjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.mjs';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,10 +0,0 @@
1
- import { g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.3991886a.js';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS, r as resolvePDFJSImports } from './shared/unpdf.3991886a.js';
3
- import 'types/src/display/api';
4
- import 'types/src/pdf';
5
-
6
- declare const getPDFMeta: typeof getPDFMeta$1;
7
- declare const extractPDFText: typeof extractPDFText$1;
8
- declare const getImagesFromPage: typeof getImagesFromPage$1;
9
-
10
- export { extractPDFText, getImagesFromPage, getPDFMeta };
@@ -1,17 +0,0 @@
1
- import { r as resolvePDFJSImports, g as getPDFMeta$1, e as extractPDFText$1, a as getImagesFromPage$1 } from './shared/unpdf.ce219a40.mjs';
2
- export { d as defineUnPDFConfig, b as getDocumentProxy, c as getResolvedPDFJS } from './shared/unpdf.ce219a40.mjs';
3
-
4
- const getPDFMeta = async (...args) => {
5
- await resolvePDFJSImports();
6
- return await getPDFMeta$1(...args);
7
- };
8
- const extractPDFText = async (...args) => {
9
- await resolvePDFJSImports();
10
- return await extractPDFText$1(...args);
11
- };
12
- const getImagesFromPage = async (...args) => {
13
- await resolvePDFJSImports();
14
- return await getImagesFromPage$1(...args);
15
- };
16
-
17
- export { extractPDFText, getImagesFromPage, getPDFMeta, resolvePDFJSImports };
@@ -1,107 +0,0 @@
1
- 'use strict';
2
-
3
- let resolvedModule;
4
- async function getDocumentProxy(data, options = {}) {
5
- const { getDocument } = await getResolvedPDFJS();
6
- const pdf = await getDocument({
7
- data,
8
- isEvalSupported: false,
9
- ...options
10
- }).promise;
11
- return pdf;
12
- }
13
- async function defineUnPDFConfig(options) {
14
- const { pdfjs } = { ...options };
15
- if (pdfjs) {
16
- await resolvePDFJSImports(pdfjs, { force: true });
17
- }
18
- }
19
- async function getResolvedPDFJS() {
20
- if (!resolvedModule) {
21
- await resolvePDFJSImports();
22
- }
23
- return resolvedModule;
24
- }
25
- async function resolvePDFJSImports(pdfjsResolver, { force = false } = {}) {
26
- if (resolvedModule && !force) {
27
- return;
28
- }
29
- if (pdfjsResolver) {
30
- try {
31
- const _import = await pdfjsResolver();
32
- resolvedModule = _import.default || _import;
33
- return;
34
- } catch {
35
- throw new Error(
36
- "Resolving failed. Please check the provided configuration."
37
- );
38
- }
39
- }
40
- try {
41
- resolvedModule = await import('unpdf/pdfjs');
42
- } catch {
43
- throw new Error(
44
- "PDF.js is not available. Please add the package as a dependency."
45
- );
46
- }
47
- }
48
- function isPDFDocumentProxy(data) {
49
- return typeof data === "object" && data !== null && "_pdfInfo" in data;
50
- }
51
-
52
- async function getPDFMeta(data) {
53
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
54
- const meta = await pdf.getMetadata();
55
- return {
56
- info: meta?.info ?? {},
57
- metadata: meta?.metadata?.getAll() ?? {}
58
- };
59
- }
60
-
61
- async function extractPDFText(data, options = {}) {
62
- const { mergePages = false } = { ...options };
63
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
64
- const texts = await Promise.all(
65
- Array.from({ length: pdf.numPages }, (_, i) => getPageText(pdf, i + 1))
66
- );
67
- const filteredTexts = texts.filter(Boolean);
68
- return {
69
- totalPages: pdf.numPages,
70
- text: mergePages ? filteredTexts.join("\n\n") : filteredTexts
71
- };
72
- }
73
- async function getPageText(pdf, pageNumber) {
74
- const page = await pdf.getPage(pageNumber);
75
- const content = await page.getTextContent();
76
- const items = content.items;
77
- if (items.length === 0) {
78
- return;
79
- }
80
- return items.map(({ str }) => str).join("\n");
81
- }
82
-
83
- async function getImagesFromPage(data, pageNumber) {
84
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
85
- const page = await pdf.getPage(pageNumber);
86
- const operatorList = await page.getOperatorList();
87
- const { OPS } = await getResolvedPDFJS();
88
- const images = [];
89
- for (const op of operatorList.fnArray) {
90
- if (op !== OPS.paintImageXObject) {
91
- continue;
92
- }
93
- const image = await page.objs.get(operatorList.argsArray[op][0]);
94
- if (image.data) {
95
- images.push(image.data.buffer);
96
- }
97
- }
98
- return images;
99
- }
100
-
101
- exports.defineUnPDFConfig = defineUnPDFConfig;
102
- exports.extractPDFText = extractPDFText;
103
- exports.getDocumentProxy = getDocumentProxy;
104
- exports.getImagesFromPage = getImagesFromPage;
105
- exports.getPDFMeta = getPDFMeta;
106
- exports.getResolvedPDFJS = getResolvedPDFJS;
107
- exports.resolvePDFJSImports = resolvePDFJSImports;
@@ -1,99 +0,0 @@
1
- let resolvedModule;
2
- async function getDocumentProxy(data, options = {}) {
3
- const { getDocument } = await getResolvedPDFJS();
4
- const pdf = await getDocument({
5
- data,
6
- isEvalSupported: false,
7
- ...options
8
- }).promise;
9
- return pdf;
10
- }
11
- async function defineUnPDFConfig(options) {
12
- const { pdfjs } = { ...options };
13
- if (pdfjs) {
14
- await resolvePDFJSImports(pdfjs, { force: true });
15
- }
16
- }
17
- async function getResolvedPDFJS() {
18
- if (!resolvedModule) {
19
- await resolvePDFJSImports();
20
- }
21
- return resolvedModule;
22
- }
23
- async function resolvePDFJSImports(pdfjsResolver, { force = false } = {}) {
24
- if (resolvedModule && !force) {
25
- return;
26
- }
27
- if (pdfjsResolver) {
28
- try {
29
- const _import = await pdfjsResolver();
30
- resolvedModule = _import.default || _import;
31
- return;
32
- } catch {
33
- throw new Error(
34
- "Resolving failed. Please check the provided configuration."
35
- );
36
- }
37
- }
38
- try {
39
- resolvedModule = await import('unpdf/pdfjs');
40
- } catch {
41
- throw new Error(
42
- "PDF.js is not available. Please add the package as a dependency."
43
- );
44
- }
45
- }
46
- function isPDFDocumentProxy(data) {
47
- return typeof data === "object" && data !== null && "_pdfInfo" in data;
48
- }
49
-
50
- async function getPDFMeta(data) {
51
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
52
- const meta = await pdf.getMetadata();
53
- return {
54
- info: meta?.info ?? {},
55
- metadata: meta?.metadata?.getAll() ?? {}
56
- };
57
- }
58
-
59
- async function extractPDFText(data, options = {}) {
60
- const { mergePages = false } = { ...options };
61
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
62
- const texts = await Promise.all(
63
- Array.from({ length: pdf.numPages }, (_, i) => getPageText(pdf, i + 1))
64
- );
65
- const filteredTexts = texts.filter(Boolean);
66
- return {
67
- totalPages: pdf.numPages,
68
- text: mergePages ? filteredTexts.join("\n\n") : filteredTexts
69
- };
70
- }
71
- async function getPageText(pdf, pageNumber) {
72
- const page = await pdf.getPage(pageNumber);
73
- const content = await page.getTextContent();
74
- const items = content.items;
75
- if (items.length === 0) {
76
- return;
77
- }
78
- return items.map(({ str }) => str).join("\n");
79
- }
80
-
81
- async function getImagesFromPage(data, pageNumber) {
82
- const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
83
- const page = await pdf.getPage(pageNumber);
84
- const operatorList = await page.getOperatorList();
85
- const { OPS } = await getResolvedPDFJS();
86
- const images = [];
87
- for (const op of operatorList.fnArray) {
88
- if (op !== OPS.paintImageXObject) {
89
- continue;
90
- }
91
- const image = await page.objs.get(operatorList.argsArray[op][0]);
92
- if (image.data) {
93
- images.push(image.data.buffer);
94
- }
95
- }
96
- return images;
97
- }
98
-
99
- export { getImagesFromPage as a, getDocumentProxy as b, getResolvedPDFJS as c, defineUnPDFConfig as d, extractPDFText as e, getPDFMeta as g, resolvePDFJSImports as r };