unpdf 1.2.2 → 1.3.1
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 +6 -1
- package/dist/index.cjs +45 -3
- package/dist/index.d.cts +5 -2
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.mjs +45 -3
- package/dist/pdfjs.mjs +1 -1
- package/dist/types/src/display/annotation_layer.d.ts +5 -0
- package/dist/types/src/display/api.d.ts +41 -19
- package/dist/types/src/display/canvas.d.ts +82 -80
- package/dist/types/src/display/canvas_dependency_tracker.d.ts +144 -0
- package/dist/types/src/display/display_utils.d.ts +1 -1
- package/dist/types/src/display/draw_layer.d.ts +2 -2
- package/dist/types/src/display/editor/alt_text.d.ts +1 -1
- package/dist/types/src/display/editor/annotation_editor_layer.d.ts +1 -1
- package/dist/types/src/display/editor/color_picker.d.ts +2 -2
- package/dist/types/src/display/editor/draw.d.ts +7 -7
- package/dist/types/src/display/editor/drawers/freedraw.d.ts +3 -3
- package/dist/types/src/display/editor/drawers/signaturedraw.d.ts +13 -13
- package/dist/types/src/display/editor/editor.d.ts +7 -1
- package/dist/types/src/display/editor/freetext.d.ts +4 -2
- package/dist/types/src/display/editor/highlight.d.ts +3 -3
- package/dist/types/src/display/editor/stamp.d.ts +1 -1
- package/dist/types/src/display/editor/toolbar.d.ts +3 -3
- package/dist/types/src/display/editor/tools.d.ts +2 -1
- package/dist/types/src/display/fetch_stream.d.ts +2 -2
- package/dist/types/src/display/text_layer.d.ts +9 -9
- package/dist/types/src/display/worker_options.d.ts +2 -2
- package/dist/types/src/shared/util.d.ts +7 -3
- package/dist/types/web/annotation_layer_builder.d.ts +4 -1
- package/dist/types/web/app_options.d.ts +1 -1
- package/dist/types/web/autolinker.d.ts +2 -2
- package/dist/types/web/base_pdf_page_view.d.ts +2 -0
- package/dist/types/web/genericl10n.d.ts +5 -5
- package/dist/types/web/interfaces.d.ts +7 -0
- package/dist/types/web/l10n.d.ts +2 -2
- package/dist/types/web/pdf_link_service.d.ts +7 -0
- package/dist/types/web/pdf_page_detail_view.d.ts +1 -0
- package/dist/types/web/pdf_page_view.d.ts +9 -0
- package/dist/types/web/pdf_thumbnail_view.d.ts +1 -1
- package/dist/types/web/pdf_viewer.d.ts +13 -0
- package/dist/types/web/text_accessibility.d.ts +1 -1
- package/dist/types/web/text_layer_builder.d.ts +4 -4
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ This library is also intended as a modern alternative to the unmaintained but st
|
|
|
18
18
|
## PDF.js Compatibility
|
|
19
19
|
|
|
20
20
|
> [!Tip]
|
|
21
|
-
> The serverless PDF.js bundle provided by `unpdf` is built from PDF.js v5.4.
|
|
21
|
+
> The serverless PDF.js bundle provided by `unpdf` is built from PDF.js v5.4.149.
|
|
22
22
|
|
|
23
23
|
You can use an [official PDF.js build](#official-or-legacy-pdfjs-build) by using the [`definePDFJSModule`](#definepdfjsmodule) method. This is useful if you want to use a specific version or a custom build of PDF.js.
|
|
24
24
|
|
|
@@ -131,11 +131,16 @@ function getResolvedPDFJS(): Promise<PDFJS>
|
|
|
131
131
|
|
|
132
132
|
### `getMeta`
|
|
133
133
|
|
|
134
|
+
Extracts metadata from a PDF. If `parseDates` is set to `true`, the date properties will be parsed into `Date` objects.
|
|
135
|
+
|
|
134
136
|
**Type Declaration**
|
|
135
137
|
|
|
136
138
|
```ts
|
|
137
139
|
function getMeta(
|
|
138
140
|
data: DocumentInitParameters['data'] | PDFDocumentProxy,
|
|
141
|
+
options?: {
|
|
142
|
+
parseDates?: boolean
|
|
143
|
+
},
|
|
139
144
|
): Promise<{
|
|
140
145
|
info: Record<string, any>
|
|
141
146
|
metadata: Record<string, any>
|
package/dist/index.cjs
CHANGED
|
@@ -229,14 +229,56 @@ async function getPageLinks(document, pageNumber) {
|
|
|
229
229
|
return links;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
const XMP_DATE_PROPERTIES = [
|
|
233
|
+
"xmp:createdate",
|
|
234
|
+
"xmp:modifydate",
|
|
235
|
+
"xmp:metadatadate",
|
|
236
|
+
"xap:createdate",
|
|
237
|
+
"xap:modifydate",
|
|
238
|
+
"xap:metadatadate"
|
|
239
|
+
];
|
|
240
|
+
async function getMeta$1(data, options = {}) {
|
|
233
241
|
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
234
242
|
const meta = await pdf.getMetadata();
|
|
243
|
+
const info = meta?.info || {};
|
|
244
|
+
if (options.parseDates) {
|
|
245
|
+
const { PDFDateString } = await getResolvedPDFJS();
|
|
246
|
+
if (info?.CreationDate) {
|
|
247
|
+
info.CreationDate = PDFDateString.toDateObject(info?.CreationDate);
|
|
248
|
+
}
|
|
249
|
+
if (info?.ModDate) {
|
|
250
|
+
info.ModDate = PDFDateString.toDateObject(info?.ModDate);
|
|
251
|
+
}
|
|
252
|
+
if (meta.metadata) {
|
|
253
|
+
meta.metadata = new Proxy(meta.metadata, {
|
|
254
|
+
get(target, prop) {
|
|
255
|
+
if (prop === "get") {
|
|
256
|
+
return (name) => {
|
|
257
|
+
const value = target.get(name);
|
|
258
|
+
if (XMP_DATE_PROPERTIES.includes(name) && value) {
|
|
259
|
+
return parseISODateString(value);
|
|
260
|
+
}
|
|
261
|
+
return value;
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return target[prop];
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
235
269
|
return {
|
|
236
|
-
info
|
|
237
|
-
metadata:
|
|
270
|
+
info,
|
|
271
|
+
metadata: meta?.metadata || {}
|
|
238
272
|
};
|
|
239
273
|
}
|
|
274
|
+
function parseISODateString(isoDateString) {
|
|
275
|
+
if (!isoDateString)
|
|
276
|
+
return;
|
|
277
|
+
const parsedDate = Date.parse(isoDateString);
|
|
278
|
+
if (!Number.isNaN(parsedDate)) {
|
|
279
|
+
return new Date(parsedDate);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
240
282
|
|
|
241
283
|
async function extractText$1(data, options = {}) {
|
|
242
284
|
const { mergePages = false } = options;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _napi_rs_canvas from '@napi-rs/canvas';
|
|
2
2
|
import { DocumentInitParameters, PDFDocumentProxy } from './types/src/display/api';
|
|
3
|
+
import * as pdfjs_dist_types_src_display_metadata from './types/src/display/metadata';
|
|
3
4
|
import * as PDFJS from './types/src/pdf';
|
|
4
5
|
|
|
5
6
|
interface ExtractedImageObject {
|
|
@@ -48,9 +49,11 @@ declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocume
|
|
|
48
49
|
links: string[];
|
|
49
50
|
}>;
|
|
50
51
|
|
|
51
|
-
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy
|
|
52
|
+
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
53
|
+
parseDates?: boolean;
|
|
54
|
+
}): Promise<{
|
|
52
55
|
info: Record<string, any>;
|
|
53
|
-
metadata:
|
|
56
|
+
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
54
57
|
}>;
|
|
55
58
|
|
|
56
59
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _napi_rs_canvas from '@napi-rs/canvas';
|
|
2
2
|
import { DocumentInitParameters, PDFDocumentProxy } from './types/src/display/api';
|
|
3
|
+
import * as pdfjs_dist_types_src_display_metadata from './types/src/display/metadata';
|
|
3
4
|
import * as PDFJS from './types/src/pdf';
|
|
4
5
|
|
|
5
6
|
interface ExtractedImageObject {
|
|
@@ -48,9 +49,11 @@ declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocume
|
|
|
48
49
|
links: string[];
|
|
49
50
|
}>;
|
|
50
51
|
|
|
51
|
-
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy
|
|
52
|
+
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
53
|
+
parseDates?: boolean;
|
|
54
|
+
}): Promise<{
|
|
52
55
|
info: Record<string, any>;
|
|
53
|
-
metadata:
|
|
56
|
+
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
54
57
|
}>;
|
|
55
58
|
|
|
56
59
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _napi_rs_canvas from '@napi-rs/canvas';
|
|
2
2
|
import { DocumentInitParameters, PDFDocumentProxy } from './types/src/display/api';
|
|
3
|
+
import * as pdfjs_dist_types_src_display_metadata from './types/src/display/metadata';
|
|
3
4
|
import * as PDFJS from './types/src/pdf';
|
|
4
5
|
|
|
5
6
|
interface ExtractedImageObject {
|
|
@@ -48,9 +49,11 @@ declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocume
|
|
|
48
49
|
links: string[];
|
|
49
50
|
}>;
|
|
50
51
|
|
|
51
|
-
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy
|
|
52
|
+
declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
|
53
|
+
parseDates?: boolean;
|
|
54
|
+
}): Promise<{
|
|
52
55
|
info: Record<string, any>;
|
|
53
|
-
metadata:
|
|
56
|
+
metadata: pdfjs_dist_types_src_display_metadata.Metadata;
|
|
54
57
|
}>;
|
|
55
58
|
|
|
56
59
|
declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
|
package/dist/index.mjs
CHANGED
|
@@ -227,14 +227,56 @@ async function getPageLinks(document, pageNumber) {
|
|
|
227
227
|
return links;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
|
|
230
|
+
const XMP_DATE_PROPERTIES = [
|
|
231
|
+
"xmp:createdate",
|
|
232
|
+
"xmp:modifydate",
|
|
233
|
+
"xmp:metadatadate",
|
|
234
|
+
"xap:createdate",
|
|
235
|
+
"xap:modifydate",
|
|
236
|
+
"xap:metadatadate"
|
|
237
|
+
];
|
|
238
|
+
async function getMeta$1(data, options = {}) {
|
|
231
239
|
const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);
|
|
232
240
|
const meta = await pdf.getMetadata();
|
|
241
|
+
const info = meta?.info || {};
|
|
242
|
+
if (options.parseDates) {
|
|
243
|
+
const { PDFDateString } = await getResolvedPDFJS();
|
|
244
|
+
if (info?.CreationDate) {
|
|
245
|
+
info.CreationDate = PDFDateString.toDateObject(info?.CreationDate);
|
|
246
|
+
}
|
|
247
|
+
if (info?.ModDate) {
|
|
248
|
+
info.ModDate = PDFDateString.toDateObject(info?.ModDate);
|
|
249
|
+
}
|
|
250
|
+
if (meta.metadata) {
|
|
251
|
+
meta.metadata = new Proxy(meta.metadata, {
|
|
252
|
+
get(target, prop) {
|
|
253
|
+
if (prop === "get") {
|
|
254
|
+
return (name) => {
|
|
255
|
+
const value = target.get(name);
|
|
256
|
+
if (XMP_DATE_PROPERTIES.includes(name) && value) {
|
|
257
|
+
return parseISODateString(value);
|
|
258
|
+
}
|
|
259
|
+
return value;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
return target[prop];
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
233
267
|
return {
|
|
234
|
-
info
|
|
235
|
-
metadata:
|
|
268
|
+
info,
|
|
269
|
+
metadata: meta?.metadata || {}
|
|
236
270
|
};
|
|
237
271
|
}
|
|
272
|
+
function parseISODateString(isoDateString) {
|
|
273
|
+
if (!isoDateString)
|
|
274
|
+
return;
|
|
275
|
+
const parsedDate = Date.parse(isoDateString);
|
|
276
|
+
if (!Number.isNaN(parsedDate)) {
|
|
277
|
+
return new Date(parsedDate);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
238
280
|
|
|
239
281
|
async function extractText$1(data, options = {}) {
|
|
240
282
|
const { mergePages = false } = options;
|