unpdf 1.2.2 → 1.3.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.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +45 -3
  3. package/dist/index.d.cts +5 -2
  4. package/dist/index.d.mts +5 -2
  5. package/dist/index.d.ts +5 -2
  6. package/dist/index.mjs +45 -3
  7. package/dist/pdfjs.mjs +1 -1
  8. package/dist/types/src/display/annotation_layer.d.ts +5 -0
  9. package/dist/types/src/display/api.d.ts +41 -19
  10. package/dist/types/src/display/canvas.d.ts +82 -80
  11. package/dist/types/src/display/canvas_dependency_tracker.d.ts +144 -0
  12. package/dist/types/src/display/display_utils.d.ts +1 -1
  13. package/dist/types/src/display/draw_layer.d.ts +2 -2
  14. package/dist/types/src/display/editor/alt_text.d.ts +1 -1
  15. package/dist/types/src/display/editor/annotation_editor_layer.d.ts +1 -1
  16. package/dist/types/src/display/editor/color_picker.d.ts +2 -2
  17. package/dist/types/src/display/editor/draw.d.ts +7 -7
  18. package/dist/types/src/display/editor/drawers/freedraw.d.ts +3 -3
  19. package/dist/types/src/display/editor/drawers/signaturedraw.d.ts +13 -13
  20. package/dist/types/src/display/editor/editor.d.ts +7 -1
  21. package/dist/types/src/display/editor/freetext.d.ts +4 -2
  22. package/dist/types/src/display/editor/highlight.d.ts +3 -3
  23. package/dist/types/src/display/editor/stamp.d.ts +1 -1
  24. package/dist/types/src/display/editor/toolbar.d.ts +3 -3
  25. package/dist/types/src/display/editor/tools.d.ts +2 -1
  26. package/dist/types/src/display/fetch_stream.d.ts +2 -2
  27. package/dist/types/src/display/text_layer.d.ts +9 -9
  28. package/dist/types/src/display/worker_options.d.ts +2 -2
  29. package/dist/types/src/shared/util.d.ts +7 -3
  30. package/dist/types/web/annotation_layer_builder.d.ts +4 -1
  31. package/dist/types/web/app_options.d.ts +1 -1
  32. package/dist/types/web/autolinker.d.ts +2 -2
  33. package/dist/types/web/base_pdf_page_view.d.ts +2 -0
  34. package/dist/types/web/genericl10n.d.ts +5 -5
  35. package/dist/types/web/interfaces.d.ts +7 -0
  36. package/dist/types/web/l10n.d.ts +2 -2
  37. package/dist/types/web/pdf_link_service.d.ts +7 -0
  38. package/dist/types/web/pdf_page_detail_view.d.ts +1 -0
  39. package/dist/types/web/pdf_page_view.d.ts +9 -0
  40. package/dist/types/web/pdf_thumbnail_view.d.ts +1 -1
  41. package/dist/types/web/pdf_viewer.d.ts +13 -0
  42. package/dist/types/web/text_accessibility.d.ts +1 -1
  43. package/dist/types/web/text_layer_builder.d.ts +4 -4
  44. 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.54.
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
 
package/dist/index.cjs CHANGED
@@ -229,14 +229,56 @@ async function getPageLinks(document, pageNumber) {
229
229
  return links;
230
230
  }
231
231
 
232
- async function getMeta$1(data) {
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: meta?.info ?? {},
237
- metadata: { ...meta?.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): Promise<{
52
+ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
53
+ parseDates?: boolean;
54
+ }): Promise<{
52
55
  info: Record<string, any>;
53
- metadata: Record<string, any>;
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): Promise<{
52
+ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
53
+ parseDates?: boolean;
54
+ }): Promise<{
52
55
  info: Record<string, any>;
53
- metadata: Record<string, any>;
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): Promise<{
52
+ declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: {
53
+ parseDates?: boolean;
54
+ }): Promise<{
52
55
  info: Record<string, any>;
53
- metadata: Record<string, any>;
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
- async function getMeta$1(data) {
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: meta?.info ?? {},
235
- metadata: { ...meta?.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;