Skip to content

Commit faa9648

Browse files
feat: support PDF.js v4
1 parent 672adb7 commit faa9648

File tree

13 files changed

+731
-693
lines changed

13 files changed

+731
-693
lines changed

.github/workflows/ci.yml

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,31 @@ jobs:
1313
lint:
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v3
17-
18-
- uses: actions/setup-node@v3
16+
- uses: actions/checkout@v4
17+
- run: corepack enable
18+
- uses: actions/setup-node@v4
1919
with:
2020
node-version: 18
21-
22-
- run: corepack enable
21+
cache: pnpm
2322

2423
- name: Install
25-
run: pnpm i
24+
run: pnpm install
2625

2726
- name: Lint
2827
run: pnpm run lint
2928

3029
typecheck:
3130
runs-on: ubuntu-latest
3231
steps:
33-
- uses: actions/checkout@v3
34-
35-
- uses: actions/setup-node@v3
32+
- uses: actions/checkout@v4
33+
- run: corepack enable
34+
- uses: actions/setup-node@v4
3635
with:
3736
node-version: 18
38-
39-
- run: corepack enable
37+
cache: pnpm
4038

4139
- name: Install
42-
run: pnpm i
40+
run: pnpm install
4341

4442
- name: Typecheck
4543
run: pnpm run test:types
@@ -54,16 +52,15 @@ jobs:
5452
fail-fast: false
5553

5654
steps:
57-
- uses: actions/checkout@v3
58-
59-
- uses: actions/setup-node@v3
55+
- uses: actions/checkout@v4
56+
- run: corepack enable
57+
- uses: actions/setup-node@v4
6058
with:
6159
node-version: ${{ matrix.node }}
62-
63-
- run: corepack enable
60+
cache: pnpm
6461

6562
- name: Install
66-
run: pnpm i
63+
run: pnpm install
6764

6865
- name: Build
6966
run: pnpm run build:pdfjs

.github/workflows/release.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,18 @@ jobs:
1212
release:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v3
15+
- uses: actions/checkout@v4
1616
with:
1717
fetch-depth: 0
18-
19-
- uses: actions/setup-node@v3
18+
- run: corepack enable
19+
- uses: actions/setup-node@v4
2020
with:
2121
node-version: 18
2222
registry-url: https://registry.npmjs.org/
23-
24-
- run: corepack enable
23+
cache: pnpm
2524

2625
- name: Install
27-
run: pnpm i
26+
run: pnpm install
2827

2928
- run: npx changelogithub
3029
env:

README.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ This library is also intended as a modern alternative to the unmaintained but st
1414
- 🧱 Opt-in to legacy PDF.js build
1515
- 💨 Zero dependencies
1616

17+
## PDF.js Compatibility
18+
19+
> [!NOTE]
20+
> This package is currently using PDF.js v4.0.189.
21+
1722
## Installation
1823

1924
Run the following command to add `unpdf` to your project.
@@ -203,15 +208,6 @@ declare function renderPageAsImage(
203208
): Promise<ArrayBuffer>;
204209
```
205210

206-
### `extractImages`
207-
208-
```ts
209-
function extractImages(
210-
data: BinaryData | PDFDocumentProxy,
211-
pageNumber: number,
212-
): Promise<Uint8ClampedArray[]>;
213-
```
214-
215211
## FAQ
216212

217213
### Why Is `canvas` An Optional Dependency?

package.json

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "unpdf",
33
"type": "module",
44
"version": "0.7.1",
5-
"packageManager": "pnpm@8.7.0",
5+
"packageManager": "pnpm@8.10.2",
66
"description": "Utilities to work with PDFs in Node.js, browser and workers",
77
"author": "Johann Schopplich <[email protected]>",
88
"license": "MIT",
@@ -55,10 +55,10 @@
5555
"build": "unbuild && node scripts/post-build.mjs",
5656
"build:pdfjs": "rollup --config pdfjs.rollup.config.ts --configPlugin typescript && cp -R node_modules/pdfjs-dist/types dist",
5757
"dev": "unbuild --stub",
58-
"lint": "eslint \"**/*.ts\" --ignore-path .gitignore",
58+
"lint": "eslint \"**/*.{cjs,mjs,ts}\" --ignore-path .gitignore",
5959
"lint:fix": "npm run lint -- --fix",
60-
"format": "prettier \"**/*.{css,html,json,md,mjs,ts,vue,yml}\" --write",
61-
"format:check": "prettier \"**/*.{css,html,json,md,mjs,ts,vue,yml}\" --check",
60+
"format": "prettier \"**/*.{json,md,cjs,mjs,ts,yml}\" --write",
61+
"format:check": "prettier \"**/*.{json,md,cjs,mjs,ts,yml}\" --check",
6262
"release": "bumpp --commit --push --tag",
6363
"test": "vitest",
6464
"test:types": "tsc --noEmit"
@@ -67,22 +67,22 @@
6767
"canvas": "^2.11.2"
6868
},
6969
"devDependencies": {
70-
"@rollup/plugin-alias": "^5.0.0",
71-
"@rollup/plugin-commonjs": "^25.0.4",
72-
"@rollup/plugin-inject": "^5.0.3",
73-
"@rollup/plugin-node-resolve": "^15.2.1",
74-
"@rollup/plugin-replace": "^5.0.2",
75-
"@rollup/plugin-terser": "^0.4.3",
76-
"@rollup/plugin-typescript": "^11.1.3",
77-
"@types/node": "^20.5.7",
70+
"@rollup/plugin-alias": "^5.0.1",
71+
"@rollup/plugin-commonjs": "^25.0.7",
72+
"@rollup/plugin-inject": "^5.0.5",
73+
"@rollup/plugin-node-resolve": "^15.2.3",
74+
"@rollup/plugin-replace": "^5.0.5",
75+
"@rollup/plugin-terser": "^0.4.4",
76+
"@rollup/plugin-typescript": "^11.1.5",
77+
"@types/node": "^20.9.0",
7878
"bumpp": "^9.2.0",
79-
"eslint": "^8.48.0",
79+
"eslint": "^8.53.0",
8080
"eslint-config-unjs": "^0.2.1",
81-
"fast-glob": "^3.3.1",
82-
"pdfjs-dist": "^3.10.111",
83-
"prettier": "^3.0.2",
81+
"fast-glob": "^3.3.2",
82+
"pdfjs-dist": "^4.0.189",
83+
"prettier": "^3.0.3",
8484
"rollup": "^3.28.1",
85-
"typescript": "^5.1.6",
85+
"typescript": "^5.2.2",
8686
"unbuild": "^2.0.0",
8787
"unenv": "^1.7.4",
8888
"vitest": "^0.34.3"

pdfjs.rollup.config.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@
33
import { defineConfig } from "rollup";
44
import alias from "@rollup/plugin-alias";
55
import replace from "@rollup/plugin-replace";
6-
// eslint-disable-next-line import/no-named-as-default
7-
import nodeResolve from "@rollup/plugin-node-resolve";
6+
import { nodeResolve } from "@rollup/plugin-node-resolve";
87
import commonjs from "@rollup/plugin-commonjs";
98
import inject from "@rollup/plugin-inject";
109
import terser from "@rollup/plugin-terser";
1110
import * as unenv from "unenv";
12-
import { resolveAliases } from "./src/_pdfjs/rollup/utils";
13-
import { pdfjsTypes } from "./src/_pdfjs/rollup/plugins";
11+
import { resolveAliases } from "./src/pdfjs-serverless/rollup/utils";
12+
import { pdfjsTypes } from "./src/pdfjs-serverless/rollup/plugins";
1413

1514
const env = unenv.env(unenv.nodeless);
1615

1716
export default defineConfig({
18-
input: "src/_pdfjs/index.mjs",
17+
input: "src/pdfjs-serverless/index.mjs",
1918
output: {
2019
file: "dist/pdfjs.mjs",
2120
format: "esm",
22-
exports: "named",
21+
// exports: "named",
2322
intro: "",
2423
outro: "",
2524
inlineDynamicImports: true,
@@ -41,19 +40,17 @@ export default defineConfig({
4140
"const isNodeJS = typeof":
4241
'const isNodeJS = typeof document === "undefined" // typeof',
4342
// Force inlining the PDF.js worker
44-
'_util.isNodeJS && typeof require === "function"': "true",
45-
'GlobalWorkerOptions.workerSrc = ""':
46-
'GlobalWorkerOptions.workerSrc = require("pdfjs-dist/build/pdf.worker.js")',
47-
'eval("require")(this.workerSrc)':
48-
'require("pdfjs-dist/build/pdf.worker.js")',
43+
"await import(/* webpackIgnore: true */ this.workerSrc)":
44+
"__pdfjsWorker__",
4945
// Tree-shake client worker initialization logic
50-
"!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler":
46+
"!PDFWorkerUtil.isWorkerDisabled && !PDFWorker.#mainThreadWorkerMessageHandler":
5147
"false",
5248
},
5349
}),
5450
alias({
5551
entries: resolveAliases({
56-
canvas: "src/_pdfjs/mock/canvas.mjs",
52+
canvas: "src/pdfjs-serverless/mock/canvas.mjs",
53+
"path2d-polyfill": "src/pdfjs-serverless/mock/path2d-polyfill.mjs",
5754
...env.alias,
5855
}),
5956
}),

0 commit comments

Comments
 (0)