pdfjs-serverless 1.1.0 → 1.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 +14 -44
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/types/src/display/annotation_layer.d.ts +42 -17
- package/dist/types/src/display/annotation_storage.d.ts +10 -8
- package/dist/types/src/display/api.d.ts +93 -63
- package/dist/types/src/display/api_utils.d.ts +1 -1
- package/dist/types/src/display/binary_data_factory.d.ts +26 -0
- package/dist/types/src/display/canvas.d.ts +19 -16
- package/dist/types/src/display/canvas_dependency_tracker.d.ts +99 -27
- package/dist/types/src/display/canvas_factory.d.ts +3 -1
- package/dist/types/src/display/display_utils.d.ts +25 -2
- package/dist/types/src/display/draw_layer.d.ts +2 -6
- package/dist/types/src/display/editor/alt_text.d.ts +1 -1
- package/dist/types/src/display/editor/annotation_editor_layer.d.ts +11 -14
- package/dist/types/src/display/editor/color_picker.d.ts +2 -2
- package/dist/types/src/display/editor/comment.d.ts +32 -5
- package/dist/types/src/display/editor/draw.d.ts +3 -7
- package/dist/types/src/display/editor/drawers/freedraw.d.ts +4 -3
- package/dist/types/src/display/editor/drawers/highlight.d.ts +2 -1
- package/dist/types/src/display/editor/drawers/signaturedraw.d.ts +13 -13
- package/dist/types/src/display/editor/editor.d.ts +81 -26
- package/dist/types/src/display/editor/freetext.d.ts +3 -3
- package/dist/types/src/display/editor/highlight.d.ts +6 -4
- package/dist/types/src/display/editor/ink.d.ts +2 -1
- package/dist/types/src/display/editor/signature.d.ts +0 -5
- package/dist/types/src/display/editor/toolbar.d.ts +5 -3
- package/dist/types/src/display/editor/tools.d.ts +58 -4
- package/dist/types/src/display/fetch_stream.d.ts +3 -56
- package/dist/types/src/display/font_loader.d.ts +28 -1
- package/dist/types/src/display/network.d.ts +14 -80
- package/dist/types/src/display/network_stream.d.ts +2 -0
- package/dist/types/src/display/network_utils.d.ts +3 -3
- package/dist/types/src/display/node_stream.d.ts +2 -52
- package/dist/types/src/display/node_utils.d.ts +5 -19
- package/dist/types/src/display/obj_bin_transform_display.d.ts +67 -0
- package/dist/types/src/display/pages_mapper.d.ts +72 -0
- package/dist/types/src/display/pattern_helper.d.ts +9 -4
- package/dist/types/src/display/text_layer.d.ts +16 -10
- package/dist/types/src/display/text_layer_images.d.ts +10 -0
- package/dist/types/src/display/transport_stream.d.ts +8 -64
- package/dist/types/src/display/webgpu_mesh.d.ts +3 -0
- package/dist/types/src/display/worker_options.d.ts +2 -2
- package/dist/types/src/display/xfa_layer.d.ts +3 -3
- package/dist/types/src/pdf.d.ts +9 -1
- package/dist/types/src/{interfaces.d.ts → shared/base_pdf_stream.d.ts} +26 -27
- package/dist/types/src/shared/obj_bin_transform_utils.d.ts +26 -0
- package/dist/types/src/shared/util.d.ts +14 -5
- package/dist/types/web/annotation_editor_layer_builder.d.ts +7 -8
- package/dist/types/web/annotation_layer_builder.d.ts +15 -23
- package/dist/types/web/app_options.d.ts +1 -1
- package/dist/types/web/autolinker.d.ts +3 -2
- package/dist/types/web/base_download_manager.d.ts +24 -0
- package/dist/types/web/base_pdf_page_view.d.ts +6 -6
- package/dist/types/web/comment_manager.d.ts +20 -0
- package/dist/types/web/download_manager.d.ts +3 -12
- package/dist/types/web/draw_layer_builder.d.ts +0 -12
- package/dist/types/web/genericl10n.d.ts +6 -10
- package/dist/types/web/l10n.d.ts +3 -6
- package/dist/types/web/menu.d.ts +11 -0
- package/dist/types/web/pdf_find_controller.d.ts +9 -11
- package/dist/types/web/pdf_history.d.ts +3 -3
- package/dist/types/web/pdf_link_service.d.ts +4 -8
- package/dist/types/web/pdf_page_detail_view.d.ts +1 -7
- package/dist/types/web/pdf_page_view.d.ts +23 -12
- package/dist/types/web/pdf_rendering_queue.d.ts +10 -14
- package/dist/types/web/pdf_thumbnail_view.d.ts +18 -42
- package/dist/types/web/pdf_thumbnail_viewer.d.ts +57 -13
- package/dist/types/web/pdf_viewer.component.d.ts +1 -1
- package/dist/types/web/pdf_viewer.d.ts +40 -28
- package/dist/types/web/renderable_view.d.ts +33 -0
- package/dist/types/web/sidebar.d.ts +65 -0
- package/dist/types/web/struct_tree_layer_builder.d.ts +1 -1
- package/dist/types/web/text_accessibility.d.ts +1 -1
- package/dist/types/web/text_layer_builder.d.ts +11 -6
- package/dist/types/web/ui_utils.d.ts +3 -11
- package/dist/types/web/xfa_layer_builder.d.ts +4 -4
- package/package.json +18 -15
- package/dist/types/src/display/cmap_reader_factory.d.ts +0 -25
- package/dist/types/src/display/standard_fontdata_factory.d.ts +0 -20
- package/dist/types/src/display/wasm_factory.d.ts +0 -20
- package/dist/types/web/interfaces.d.ts +0 -174
package/README.md
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
# pdfjs-serverless
|
|
2
2
|
|
|
3
|
-
A redistribution of Mozilla's [PDF.js](https://github.com/mozilla/pdf.js) for edge
|
|
3
|
+
A redistribution of Mozilla's [PDF.js](https://github.com/mozilla/pdf.js) as a single bundle for edge and serverless runtimes, like Cloudflare Workers. Use it as a drop-in replacement for `pdfjs-dist` to parse PDF documents and extract text content – no extra dependencies needed.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## PDF.js Compatibility
|
|
8
|
-
|
|
9
|
-
> [!NOTE]
|
|
10
|
-
> `pdfjs-serverless` is currently built from PDF.js v5.4.149.
|
|
5
|
+
The whole export is about 1.6 MB (minified).
|
|
11
6
|
|
|
12
7
|
## Installation
|
|
13
8
|
|
|
@@ -15,13 +10,10 @@ Run the following command to add `pdfjs-serverless` to your project.
|
|
|
15
10
|
|
|
16
11
|
```bash
|
|
17
12
|
# pnpm
|
|
18
|
-
pnpm add
|
|
13
|
+
pnpm add pdfjs-serverless
|
|
19
14
|
|
|
20
15
|
# npm
|
|
21
|
-
npm install
|
|
22
|
-
|
|
23
|
-
# yarn
|
|
24
|
-
yarn add -D pdfjs-serverless
|
|
16
|
+
npm install pdfjs-serverless
|
|
25
17
|
```
|
|
26
18
|
|
|
27
19
|
## Usage
|
|
@@ -36,18 +28,16 @@ yarn add -D pdfjs-serverless
|
|
|
36
28
|
+ import { getDocument } from 'pdfjs-serverless'
|
|
37
29
|
```
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
### 🌩 Cloudflare Workers
|
|
31
|
+
Here's a full Cloudflare Workers example that accepts a PDF via POST and returns the extracted text as JSON:
|
|
42
32
|
|
|
43
33
|
```ts
|
|
34
|
+
import { getDocument } from 'pdfjs-serverless'
|
|
35
|
+
|
|
44
36
|
export default {
|
|
45
37
|
async fetch(request) {
|
|
46
38
|
if (request.method !== 'POST')
|
|
47
39
|
return new Response('Method Not Allowed', { status: 405 })
|
|
48
40
|
|
|
49
|
-
const { getDocument } = await import('pdfjs-serverless')
|
|
50
|
-
|
|
51
41
|
// Get the PDF file from the POST request body as a buffer
|
|
52
42
|
const data = await request.arrayBuffer()
|
|
53
43
|
|
|
@@ -84,37 +74,17 @@ export default {
|
|
|
84
74
|
}
|
|
85
75
|
```
|
|
86
76
|
|
|
87
|
-
### 🦕 Deno
|
|
88
|
-
|
|
89
|
-
```ts
|
|
90
|
-
import { getDocument } from 'https://esm.sh/pdfjs-serverless'
|
|
91
|
-
|
|
92
|
-
const data = Deno.readFileSync('sample.pdf')
|
|
93
|
-
const document = await getDocument({
|
|
94
|
-
data,
|
|
95
|
-
useSystemFonts: true,
|
|
96
|
-
}).promise
|
|
97
|
-
|
|
98
|
-
console.log(await document.getMetadata())
|
|
99
|
-
|
|
100
|
-
// Iterate through each page and fetch the text content
|
|
101
|
-
for (let i = 1; i <= document.numPages; i++) {
|
|
102
|
-
const page = await document.getPage(i)
|
|
103
|
-
const textContent = await page.getTextContent()
|
|
104
|
-
const contents = textContent.items.map(item => item.str).join(' ')
|
|
105
|
-
console.log(contents)
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
77
|
## How It Works
|
|
110
78
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
The heavy lifting comes from string replacements of the `PDF.js` library, i.e. removing browser context references and checks such as `typeof window`. Additionally, we enforce Node.js compatibility (may sound paradoxical at first, bear with me), i.e. we mock the `@napi-rs/canvas` module and set the `isNodeJS` flag to `true`.
|
|
79
|
+
> [!NOTE]
|
|
80
|
+
> `pdfjs-serverless` is currently built from PDF.js v5.6.205.
|
|
114
81
|
|
|
115
|
-
|
|
82
|
+
Heart and soul of this package is the [`rollup.config.ts`](./rollup.config.ts) file. It uses [Rollup](https://rollupjs.org/) to bundle PDF.js into a single file for serverless environments. The key techniques:
|
|
116
83
|
|
|
117
|
-
|
|
84
|
+
- **String replacements** strip browser-specific references (e.g. `typeof window`) from the PDF.js source.
|
|
85
|
+
- **Node.js compatibility** is enforced by mocking `@napi-rs/canvas` and setting `isNodeJS` to `true` – paradoxical, but it unlocks the right code paths.
|
|
86
|
+
- **Worker inlining** embeds the PDF.js worker directly into the main bundle, since serverless runtimes can't load separate worker files.
|
|
87
|
+
- **Global polyfills** provide missing APIs like `FinalizationRegistry` (unavailable in Cloudflare Workers).
|
|
118
88
|
|
|
119
89
|
## Inspiration
|
|
120
90
|
|
package/dist/index.d.mts
CHANGED