@pdfluent/sdk-wasm 1.0.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/xfa_wasm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* @ts-self-types="./xfa_wasm.d.ts" */
2
- import { __pdfluent_error_ctor } from './snippets/xfa-wasm-df2db187f9a0e994/inline0.js';
2
+ import { __pdfluent_error_ctor } from './snippets/xfa-wasm-0357326a9eb2f21e/inline0.js';
3
3
 
4
4
 
5
5
  /**
@@ -168,6 +168,8 @@ export class PdfDoc {
168
168
  /**
169
169
  * Apply a diagonal text watermark to every page.
170
170
  * `opacity` in 0.0..=1.0. Default rotation 45 deg, default colour gray.
171
+ *
172
+ * Kept for compatibility; `addWatermark` takes the full set of options.
171
173
  * @param {string} text
172
174
  * @param {number} opacity
173
175
  * @returns {Uint8Array}
@@ -192,6 +194,31 @@ export class PdfDoc {
192
194
  wasm.__wbindgen_add_to_stack_pointer(16);
193
195
  }
194
196
  }
197
+ /**
198
+ * Apply a text watermark with full control over text or preset, size,
199
+ * rotation, opacity, colour, position, layer, tiling and pages. Returns
200
+ * the new PDF bytes. Text only: there is no image watermark.
201
+ * @param {WatermarkOptions} options
202
+ * @returns {Uint8Array}
203
+ */
204
+ addWatermark(options) {
205
+ try {
206
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
207
+ wasm.pdfdoc_addWatermark(retptr, this.__wbg_ptr, addHeapObject(options));
208
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
209
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
210
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
211
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
212
+ if (r3) {
213
+ throw takeObject(r2);
214
+ }
215
+ var v1 = getArrayU8FromWasm0(r0, r1).slice();
216
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
217
+ return v1;
218
+ } finally {
219
+ wasm.__wbindgen_add_to_stack_pointer(16);
220
+ }
221
+ }
195
222
  /**
196
223
  * Re-encode all content streams with deflate compression. Removes
197
224
  * no-op overhead. Returns the optimised PDF as a `Uint8Array`.
@@ -288,6 +315,139 @@ export class PdfDoc {
288
315
  wasm.__wbindgen_add_to_stack_pointer(16);
289
316
  }
290
317
  }
318
+ /**
319
+ * The document's blocks as JSON, in reading order (#573).
320
+ *
321
+ * Preview: output quality is still improving and the API may change in a minor release.
322
+ *
323
+ * `{"blocks": [...]}`, one entry per paragraph, heading, list item, table
324
+ * cell and running head, each with its kind, page, box, text, spans and
325
+ * place in the reading order. `docs/STRUCTURED_EXTRACTION.md` is the key
326
+ * to every field.
327
+ *
328
+ * A JSON string and not a structured value, which is what every other
329
+ * structured reader in this binding hands back: one shape crosses the
330
+ * boundary, `JSON.parse` is what the caller already does for
331
+ * `getTextPositions` and the annotations, and a `serde` mirror of the
332
+ * block model would be a second definition of it to keep in step.
333
+ *
334
+ * An XFA form is read from its flattened form, for the reason
335
+ * `extractMarkdown` above gives.
336
+ * @param {number | null} [first_page]
337
+ * @param {number | null} [page_count]
338
+ * @returns {string}
339
+ */
340
+ extractBlocks(first_page, page_count) {
341
+ let deferred2_0;
342
+ let deferred2_1;
343
+ try {
344
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
345
+ wasm.pdfdoc_extractBlocks(retptr, this.__wbg_ptr, isLikeNone(first_page) ? Number.MAX_SAFE_INTEGER : (first_page) >>> 0, isLikeNone(page_count) ? Number.MAX_SAFE_INTEGER : (page_count) >>> 0);
346
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
347
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
348
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
349
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
350
+ var ptr1 = r0;
351
+ var len1 = r1;
352
+ if (r3) {
353
+ ptr1 = 0; len1 = 0;
354
+ throw takeObject(r2);
355
+ }
356
+ deferred2_0 = ptr1;
357
+ deferred2_1 = len1;
358
+ return getStringFromWasm0(ptr1, len1);
359
+ } finally {
360
+ wasm.__wbindgen_add_to_stack_pointer(16);
361
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
362
+ }
363
+ }
364
+ /**
365
+ * The document as a Docling `DoclingDocument`, as JSON (#629).
366
+ *
367
+ * Preview: output quality is still improving and the API may change in a minor release.
368
+ *
369
+ * The schema version the engine pins, which docling-core's
370
+ * `DoclingDocument.model_validate_json` loads as it is. `name` is
371
+ * `DoclingDocument.name`, which Docling fills with the file's stem;
372
+ * absent means `"document"`. An XFA form is read from its flattened form,
373
+ * for the reason `extractMarkdown` above gives.
374
+ * @param {number | null} [first_page]
375
+ * @param {number | null} [page_count]
376
+ * @param {string | null} [name]
377
+ * @returns {string}
378
+ */
379
+ extractDocling(first_page, page_count, name) {
380
+ let deferred3_0;
381
+ let deferred3_1;
382
+ try {
383
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
384
+ var ptr0 = isLikeNone(name) ? 0 : passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
385
+ var len0 = WASM_VECTOR_LEN;
386
+ wasm.pdfdoc_extractDocling(retptr, this.__wbg_ptr, isLikeNone(first_page) ? Number.MAX_SAFE_INTEGER : (first_page) >>> 0, isLikeNone(page_count) ? Number.MAX_SAFE_INTEGER : (page_count) >>> 0, ptr0, len0);
387
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
388
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
389
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
390
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
391
+ var ptr2 = r0;
392
+ var len2 = r1;
393
+ if (r3) {
394
+ ptr2 = 0; len2 = 0;
395
+ throw takeObject(r2);
396
+ }
397
+ deferred3_0 = ptr2;
398
+ deferred3_1 = len2;
399
+ return getStringFromWasm0(ptr2, len2);
400
+ } finally {
401
+ wasm.__wbindgen_add_to_stack_pointer(16);
402
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
403
+ }
404
+ }
405
+ /**
406
+ * The document as markdown, in reading order (#573).
407
+ *
408
+ * Preview: output quality is still improving and the API may change in a minor release.
409
+ *
410
+ * Headings become `#` to `###`, list items `-` and `1.`, a table a pipe
411
+ * table or an HTML one where markdown cannot hold its shape, and a change
412
+ * of page an HTML comment. The running heads a document repeats are not in
413
+ * it; they are in `extractBlocks`.
414
+ *
415
+ * `firstPage` and `pageCount` choose a window of pages; leave both out for
416
+ * the whole document. The document is read whole whatever the window is,
417
+ * because what a block IS is decided against the rest of the document.
418
+ *
419
+ * AN XFA FORM IS READ FROM ITS FLATTENED FORM, the way `text` and
420
+ * `getTextPositions` read one: a dynamic XFA document draws its fields
421
+ * from a template rather than from page content, so the blocks of the
422
+ * unflattened file are the blocks of an empty page.
423
+ * @param {number | null} [first_page]
424
+ * @param {number | null} [page_count]
425
+ * @returns {string}
426
+ */
427
+ extractMarkdown(first_page, page_count) {
428
+ let deferred2_0;
429
+ let deferred2_1;
430
+ try {
431
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
432
+ wasm.pdfdoc_extractMarkdown(retptr, this.__wbg_ptr, isLikeNone(first_page) ? Number.MAX_SAFE_INTEGER : (first_page) >>> 0, isLikeNone(page_count) ? Number.MAX_SAFE_INTEGER : (page_count) >>> 0);
433
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
434
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
435
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
436
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
437
+ var ptr1 = r0;
438
+ var len1 = r1;
439
+ if (r3) {
440
+ ptr1 = 0; len1 = 0;
441
+ throw takeObject(r2);
442
+ }
443
+ deferred2_0 = ptr1;
444
+ deferred2_1 = len1;
445
+ return getStringFromWasm0(ptr1, len1);
446
+ } finally {
447
+ wasm.__wbindgen_add_to_stack_pointer(16);
448
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
449
+ }
450
+ }
291
451
  /**
292
452
  * Extract the listed pages (0-based) into a new document.
293
453
  * Used to implement "split" workflows in the browser.
@@ -565,6 +725,10 @@ export class PdfDoc {
565
725
  /**
566
726
  * Search-and-redact: every match of `query` (literal text, case-sensitive)
567
727
  * is permanently removed from every page.
728
+ *
729
+ * Throws `E-PARSE-INVALID-PDF` when a page's text could not be read:
730
+ * that page was not searched, so returning bytes would read as "no
731
+ * matches there" (#698).
568
732
  * @param {string} query
569
733
  * @returns {Uint8Array}
570
734
  */
@@ -888,6 +1052,40 @@ export class PdfDoc {
888
1052
  wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1);
889
1053
  }
890
1054
  }
1055
+ /**
1056
+ * Every text block of the document with its page and enclosing box, as
1057
+ * JSON (#416): `[{"text": "...", "bbox": [xMin, yMin, xMax, yMax], "page": 0}]`.
1058
+ *
1059
+ * `page` is 0-based like every page index in this binding; `bbox` is in PDF
1060
+ * points with the origin at the bottom left (PDF space, not the y-down CSS
1061
+ * space `getTextPositions` returns). An XFA form is read from its flattened
1062
+ * form, as `text` and `getTextPositions` do.
1063
+ * @returns {string}
1064
+ */
1065
+ textWithLayout() {
1066
+ let deferred2_0;
1067
+ let deferred2_1;
1068
+ try {
1069
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1070
+ wasm.pdfdoc_textWithLayout(retptr, this.__wbg_ptr);
1071
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1072
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1073
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1074
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1075
+ var ptr1 = r0;
1076
+ var len1 = r1;
1077
+ if (r3) {
1078
+ ptr1 = 0; len1 = 0;
1079
+ throw takeObject(r2);
1080
+ }
1081
+ deferred2_0 = ptr1;
1082
+ deferred2_1 = len1;
1083
+ return getStringFromWasm0(ptr1, len1);
1084
+ } finally {
1085
+ wasm.__wbindgen_add_to_stack_pointer(16);
1086
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
1087
+ }
1088
+ }
891
1089
  /**
892
1090
  * Convert this PDF to a Word `.docx` package.
893
1091
  *
@@ -1309,6 +1507,40 @@ export class PdfDocMut {
1309
1507
  wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
1310
1508
  }
1311
1509
  }
1510
+ /**
1511
+ * The images drawn on a page (0-based `pageIndex`) as JSON, in drawing
1512
+ * order, form-nested and inline images included:
1513
+ * `[{"formPath":[…],"opIndex":n,"kind":"xobject"|"inline","resourceName":…,
1514
+ * "formNames":[…],"ctm":[6],"bbox":[x0,y0,x1,y1],"pixelWidth":…,
1515
+ * "pixelHeight":…,"hasSmask":…}]`. `bbox` is in page space, origin at the
1516
+ * bottom left. An entry is the handle the three edit methods take.
1517
+ * @param {number} page_index
1518
+ * @returns {string}
1519
+ */
1520
+ imagePlacements(page_index) {
1521
+ let deferred2_0;
1522
+ let deferred2_1;
1523
+ try {
1524
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1525
+ wasm.pdfdocmut_imagePlacements(retptr, this.__wbg_ptr, page_index);
1526
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1527
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1528
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1529
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1530
+ var ptr1 = r0;
1531
+ var len1 = r1;
1532
+ if (r3) {
1533
+ ptr1 = 0; len1 = 0;
1534
+ throw takeObject(r2);
1535
+ }
1536
+ deferred2_0 = ptr1;
1537
+ deferred2_1 = len1;
1538
+ return getStringFromWasm0(ptr1, len1);
1539
+ } finally {
1540
+ wasm.__wbindgen_add_to_stack_pointer(16);
1541
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
1542
+ }
1543
+ }
1312
1544
  /**
1313
1545
  * Open a PDF for editing.
1314
1546
  * @param {Uint8Array} bytes
@@ -1363,6 +1595,10 @@ export class PdfDocMut {
1363
1595
  /**
1364
1596
  * Search-and-redact: every literal match of `query` is permanently
1365
1597
  * removed from every page.
1598
+ *
1599
+ * Throws `E-PARSE-INVALID-PDF` when a page's text could not be read:
1600
+ * that page was not searched, so success would read as "no matches
1601
+ * there" (#698). The document is then left as it was.
1366
1602
  * @param {string} query
1367
1603
  */
1368
1604
  redactSearch(query) {
@@ -1380,6 +1616,27 @@ export class PdfDocMut {
1380
1616
  wasm.__wbindgen_add_to_stack_pointer(16);
1381
1617
  }
1382
1618
  }
1619
+ /**
1620
+ * Remove one placed image. The image data leaves the file when nothing
1621
+ * else uses it.
1622
+ * @param {number} page_index
1623
+ * @param {string} handle_json
1624
+ */
1625
+ removeImage(page_index, handle_json) {
1626
+ try {
1627
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1628
+ const ptr0 = passStringToWasm0(handle_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1629
+ const len0 = WASM_VECTOR_LEN;
1630
+ wasm.pdfdocmut_removeImage(retptr, this.__wbg_ptr, page_index, ptr0, len0);
1631
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1632
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1633
+ if (r1) {
1634
+ throw takeObject(r0);
1635
+ }
1636
+ } finally {
1637
+ wasm.__wbindgen_add_to_stack_pointer(16);
1638
+ }
1639
+ }
1383
1640
  /**
1384
1641
  * Re-order pages. `new_order` is a permutation of `0..page_count`.
1385
1642
  * @param {Uint32Array} new_order
@@ -1399,6 +1656,42 @@ export class PdfDocMut {
1399
1656
  wasm.__wbindgen_add_to_stack_pointer(16);
1400
1657
  }
1401
1658
  }
1659
+ /**
1660
+ * Swap the picture of one placed image for JPEG or PNG `data`, fitted
1661
+ * inside the old placement and centred. Returns the new handle as JSON.
1662
+ * @param {number} page_index
1663
+ * @param {string} handle_json
1664
+ * @param {Uint8Array} data
1665
+ * @returns {string}
1666
+ */
1667
+ replaceImage(page_index, handle_json, data) {
1668
+ let deferred4_0;
1669
+ let deferred4_1;
1670
+ try {
1671
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1672
+ const ptr0 = passStringToWasm0(handle_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1673
+ const len0 = WASM_VECTOR_LEN;
1674
+ const ptr1 = passArray8ToWasm0(data, wasm.__wbindgen_export);
1675
+ const len1 = WASM_VECTOR_LEN;
1676
+ wasm.pdfdocmut_replaceImage(retptr, this.__wbg_ptr, page_index, ptr0, len0, ptr1, len1);
1677
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1678
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1679
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1680
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1681
+ var ptr3 = r0;
1682
+ var len3 = r1;
1683
+ if (r3) {
1684
+ ptr3 = 0; len3 = 0;
1685
+ throw takeObject(r2);
1686
+ }
1687
+ deferred4_0 = ptr3;
1688
+ deferred4_1 = len3;
1689
+ return getStringFromWasm0(ptr3, len3);
1690
+ } finally {
1691
+ wasm.__wbindgen_add_to_stack_pointer(16);
1692
+ wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1);
1693
+ }
1694
+ }
1402
1695
  /**
1403
1696
  * G3 — Replace a text span on a page.
1404
1697
  *
@@ -1564,6 +1857,45 @@ export class PdfDocMut {
1564
1857
  wasm.__wbindgen_add_to_stack_pointer(16);
1565
1858
  }
1566
1859
  }
1860
+ /**
1861
+ * Move or resize one placed image so its bounding box becomes
1862
+ * `[x0, y0, x1, y1]` in page space. `handleJson` is an entry of
1863
+ * `imagePlacements`. Returns the new handle as JSON. An edit inside a Form
1864
+ * XObject copies the form for this page, so other pages keep the original.
1865
+ * @param {number} page_index
1866
+ * @param {string} handle_json
1867
+ * @param {number} x0
1868
+ * @param {number} y0
1869
+ * @param {number} x1
1870
+ * @param {number} y1
1871
+ * @returns {string}
1872
+ */
1873
+ setImageRect(page_index, handle_json, x0, y0, x1, y1) {
1874
+ let deferred3_0;
1875
+ let deferred3_1;
1876
+ try {
1877
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1878
+ const ptr0 = passStringToWasm0(handle_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
1879
+ const len0 = WASM_VECTOR_LEN;
1880
+ wasm.pdfdocmut_setImageRect(retptr, this.__wbg_ptr, page_index, ptr0, len0, x0, y0, x1, y1);
1881
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1882
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1883
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1884
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1885
+ var ptr2 = r0;
1886
+ var len2 = r1;
1887
+ if (r3) {
1888
+ ptr2 = 0; len2 = 0;
1889
+ throw takeObject(r2);
1890
+ }
1891
+ deferred3_0 = ptr2;
1892
+ deferred3_1 = len2;
1893
+ return getStringFromWasm0(ptr2, len2);
1894
+ } finally {
1895
+ wasm.__wbindgen_add_to_stack_pointer(16);
1896
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
1897
+ }
1898
+ }
1567
1899
  /**
1568
1900
  * Select multiple options on a multi-select list box.
1569
1901
  *
@@ -2109,10 +2441,154 @@ export class XfaEngine {
2109
2441
  }
2110
2442
  }
2111
2443
  if (Symbol.dispose) XfaEngine.prototype[Symbol.dispose] = XfaEngine.prototype.free;
2444
+
2445
+ /**
2446
+ * Remove the password from a PDF whose password you know, and return the
2447
+ * unprotected bytes; open them with `PdfDoc.open`.
2448
+ *
2449
+ * The owner password always works. The user password works only when the
2450
+ * file has no permission restrictions. Throws `PdfluentError` with
2451
+ * `E-SECURITY-DECRYPTION-FAILED` for a password that does not entitle the
2452
+ * caller, and `E-WASM-INVALID-ARGUMENT` for a PDF without a password.
2453
+ * @param {Uint8Array} bytes
2454
+ * @param {string} password
2455
+ * @returns {Uint8Array}
2456
+ */
2457
+ export function decryptPdf(bytes, password) {
2458
+ try {
2459
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2460
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
2461
+ const len0 = WASM_VECTOR_LEN;
2462
+ const ptr1 = passStringToWasm0(password, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2463
+ const len1 = WASM_VECTOR_LEN;
2464
+ wasm.decryptPdf(retptr, ptr0, len0, ptr1, len1);
2465
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2466
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2467
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2468
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
2469
+ if (r3) {
2470
+ throw takeObject(r2);
2471
+ }
2472
+ var v3 = getArrayU8FromWasm0(r0, r1).slice();
2473
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
2474
+ return v3;
2475
+ } finally {
2476
+ wasm.__wbindgen_add_to_stack_pointer(16);
2477
+ }
2478
+ }
2479
+
2480
+ /**
2481
+ * Encrypt a PDF with AES-256 and return the encrypted bytes.
2482
+ *
2483
+ * `userPassword` is needed to open the file (may be empty: then anyone can
2484
+ * open it, and the permissions apply); `ownerPassword` lifts the permissions
2485
+ * (empty: the user password serves as both). Refuses a PDF that is already
2486
+ * encrypted. Throws `PdfluentError` with `E-WASM-INVALID-ARGUMENT` or
2487
+ * `E-PARSE-INVALID-PDF`.
2488
+ * @param {Uint8Array} bytes
2489
+ * @param {string} user_password
2490
+ * @param {string} owner_password
2491
+ * @param {EncryptPermissions | null} [permissions]
2492
+ * @returns {Uint8Array}
2493
+ */
2494
+ export function encryptPdf(bytes, user_password, owner_password, permissions) {
2495
+ try {
2496
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2497
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
2498
+ const len0 = WASM_VECTOR_LEN;
2499
+ const ptr1 = passStringToWasm0(user_password, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2500
+ const len1 = WASM_VECTOR_LEN;
2501
+ const ptr2 = passStringToWasm0(owner_password, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2502
+ const len2 = WASM_VECTOR_LEN;
2503
+ wasm.encryptPdf(retptr, ptr0, len0, ptr1, len1, ptr2, len2, isLikeNone(permissions) ? 0 : addHeapObject(permissions));
2504
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2505
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2506
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2507
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
2508
+ if (r3) {
2509
+ throw takeObject(r2);
2510
+ }
2511
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
2512
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
2513
+ return v4;
2514
+ } finally {
2515
+ wasm.__wbindgen_add_to_stack_pointer(16);
2516
+ }
2517
+ }
2518
+
2519
+ /**
2520
+ * Extract the images of a PDF as PNG or JPEG files.
2521
+ *
2522
+ * Returns `{ images, skipped }`. An image that could not be exported exactly
2523
+ * as it looks -- JPEG 2000, JBIG2 or fax compression, a transparency mask, a
2524
+ * Decode array, CMYK, an ICC profile other than sRGB -- is listed in `skipped`
2525
+ * with the reason, never emitted wrong. Each image is listed once, on the
2526
+ * first page (0-based) that uses it.
2527
+ * @param {Uint8Array} bytes
2528
+ * @returns {ImageExtraction}
2529
+ */
2530
+ export function extractImages(bytes) {
2531
+ try {
2532
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2533
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
2534
+ const len0 = WASM_VECTOR_LEN;
2535
+ wasm.extractImages(retptr, ptr0, len0);
2536
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2537
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2538
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2539
+ if (r2) {
2540
+ throw takeObject(r1);
2541
+ }
2542
+ return takeObject(r0);
2543
+ } finally {
2544
+ wasm.__wbindgen_add_to_stack_pointer(16);
2545
+ }
2546
+ }
2547
+
2548
+ /**
2549
+ * Sign a PDF with your own certificate (a .p12/.pfx file and its password)
2550
+ * and return the signed bytes. The private key never leaves the page.
2551
+ *
2552
+ * This is a cryptographic PAdES signature (ETSI.CAdES.detached), appended as
2553
+ * an incremental update so earlier signatures stay valid. Without a
2554
+ * timestamp authority: no TSA or LTV in the browser. A self-signed
2555
+ * certificate verifies, but readers such as Acrobat show its validity as
2556
+ * unknown because they do not trust the issuer. Throws `PdfluentError` with
2557
+ * `E-SECURITY-DECRYPTION-FAILED` for a wrong certificate password.
2558
+ * @param {Uint8Array} bytes
2559
+ * @param {Uint8Array} pkcs12
2560
+ * @param {string} password
2561
+ * @param {SignPdfOptions | null} [options]
2562
+ * @returns {Uint8Array}
2563
+ */
2564
+ export function signPdf(bytes, pkcs12, password, options) {
2565
+ try {
2566
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2567
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
2568
+ const len0 = WASM_VECTOR_LEN;
2569
+ const ptr1 = passArray8ToWasm0(pkcs12, wasm.__wbindgen_export);
2570
+ const len1 = WASM_VECTOR_LEN;
2571
+ const ptr2 = passStringToWasm0(password, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2572
+ const len2 = WASM_VECTOR_LEN;
2573
+ wasm.signPdf(retptr, ptr0, len0, ptr1, len1, ptr2, len2, isLikeNone(options) ? 0 : addHeapObject(options));
2574
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2575
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2576
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2577
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
2578
+ if (r3) {
2579
+ throw takeObject(r2);
2580
+ }
2581
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
2582
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
2583
+ return v4;
2584
+ } finally {
2585
+ wasm.__wbindgen_add_to_stack_pointer(16);
2586
+ }
2587
+ }
2112
2588
  function __wbg_get_imports() {
2113
2589
  const import0 = {
2114
2590
  __proto__: null,
2115
- __wbg___pdfluent_error_ctor_e55fae67914d7975: function() {
2591
+ __wbg___pdfluent_error_ctor_9f2854a17b02ffba: function() {
2116
2592
  const ret = __pdfluent_error_ctor();
2117
2593
  return addHeapObject(ret);
2118
2594
  },
@@ -2127,6 +2603,14 @@ function __wbg_get_imports() {
2127
2603
  const ret = typeof(getObject(arg0)) === 'function';
2128
2604
  return ret;
2129
2605
  },
2606
+ __wbg___wbindgen_is_null_2042690d351e14f0: function(arg0) {
2607
+ const ret = getObject(arg0) === null;
2608
+ return ret;
2609
+ },
2610
+ __wbg___wbindgen_is_undefined_35bb9f4c7fd651d5: function(arg0) {
2611
+ const ret = getObject(arg0) === undefined;
2612
+ return ret;
2613
+ },
2130
2614
  __wbg___wbindgen_string_get_d109740c0d18f4d7: function(arg0, arg1) {
2131
2615
  const obj = getObject(arg1);
2132
2616
  const ret = typeof(obj) === 'string' ? obj : undefined;
@@ -2192,6 +2676,10 @@ function __wbg_get_imports() {
2192
2676
  __wbg_moveTo_11bf5a977e6b8610: function(arg0, arg1, arg2) {
2193
2677
  getObject(arg0).moveTo(arg1, arg2);
2194
2678
  },
2679
+ __wbg_new_02d162bc6cf02f60: function() {
2680
+ const ret = new Object();
2681
+ return addHeapObject(ret);
2682
+ },
2195
2683
  __wbg_new_1f236d63ba0c4784: function(arg0, arg1) {
2196
2684
  const ret = new Error(getStringFromWasm0(arg0, arg1));
2197
2685
  return addHeapObject(ret);
@@ -2200,6 +2688,10 @@ function __wbg_get_imports() {
2200
2688
  const ret = new Array();
2201
2689
  return addHeapObject(ret);
2202
2690
  },
2691
+ __wbg_new_from_slice_269e35316ed2d061: function(arg0, arg1) {
2692
+ const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));
2693
+ return addHeapObject(ret);
2694
+ },
2203
2695
  __wbg_new_with_u8_clamped_array_and_sh_13504c3c5394c7c9: function() { return handleError(function (arg0, arg1, arg2, arg3) {
2204
2696
  const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
2205
2697
  return addHeapObject(ret);
@@ -2273,6 +2765,10 @@ function __wbg_get_imports() {
2273
2765
  __wbg_set_width_25112eb6bf1148df: function(arg0, arg1) {
2274
2766
  getObject(arg0).width = arg1 >>> 0;
2275
2767
  },
2768
+ __wbg_stringify_ef0c105b1ccc3849: function() { return handleError(function (arg0) {
2769
+ const ret = JSON.stringify(getObject(arg0));
2770
+ return addHeapObject(ret);
2771
+ }, arguments); },
2276
2772
  __wbg_strokeRect_3430a0df4158ba67: function(arg0, arg1, arg2, arg3, arg4) {
2277
2773
  getObject(arg0).strokeRect(arg1, arg2, arg3, arg4);
2278
2774
  },
package/xfa_wasm_bg.wasm CHANGED
Binary file
@@ -5,14 +5,21 @@ export const __wbg_pdfdoc_free: (a: number, b: number) => void;
5
5
  export const __wbg_pdfdocmut_free: (a: number, b: number) => void;
6
6
  export const __wbg_texteditor_free: (a: number, b: number) => void;
7
7
  export const __wbg_xfaengine_free: (a: number, b: number) => void;
8
+ export const decryptPdf: (a: number, b: number, c: number, d: number, e: number) => void;
9
+ export const encryptPdf: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
10
+ export const extractImages: (a: number, b: number, c: number) => void;
8
11
  export const pdfdoc_addFreeText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
9
12
  export const pdfdoc_addHighlight: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
10
13
  export const pdfdoc_addStickyNote: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
11
14
  export const pdfdoc_addTextWatermark: (a: number, b: number, c: number, d: number, e: number) => void;
15
+ export const pdfdoc_addWatermark: (a: number, b: number, c: number) => void;
12
16
  export const pdfdoc_compress: (a: number, b: number) => void;
13
17
  export const pdfdoc_convertToPdfa: (a: number, b: number, c: number, d: number) => void;
14
18
  export const pdfdoc_deletePages: (a: number, b: number, c: number, d: number) => void;
15
19
  export const pdfdoc_dssInfo: (a: number, b: number) => void;
20
+ export const pdfdoc_extractBlocks: (a: number, b: number, c: number, d: number) => void;
21
+ export const pdfdoc_extractDocling: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
22
+ export const pdfdoc_extractMarkdown: (a: number, b: number, c: number, d: number) => void;
16
23
  export const pdfdoc_extractPages: (a: number, b: number, c: number, d: number) => void;
17
24
  export const pdfdoc_flattenXfa: (a: number, b: number) => void;
18
25
  export const pdfdoc_getAnnotations: (a: number, b: number, c: number) => void;
@@ -37,6 +44,7 @@ export const pdfdoc_setFormField: (a: number, b: number, c: number, d: number, e
37
44
  export const pdfdoc_setFormFields: (a: number, b: number, c: number, d: number) => void;
38
45
  export const pdfdoc_signatures: (a: number, b: number) => void;
39
46
  export const pdfdoc_text: (a: number, b: number, c: number) => void;
47
+ export const pdfdoc_textWithLayout: (a: number, b: number) => void;
40
48
  export const pdfdoc_toDocx: (a: number, b: number) => void;
41
49
  export const pdfdoc_toPptx: (a: number, b: number) => void;
42
50
  export const pdfdoc_toXlsx: (a: number, b: number) => void;
@@ -52,18 +60,23 @@ export const pdfdocmut_compress: (a: number, b: number) => void;
52
60
  export const pdfdocmut_deletePages: (a: number, b: number, c: number, d: number) => void;
53
61
  export const pdfdocmut_extractPages: (a: number, b: number, c: number, d: number) => void;
54
62
  export const pdfdocmut_formatTextSpan: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
63
+ export const pdfdocmut_imagePlacements: (a: number, b: number, c: number) => void;
55
64
  export const pdfdocmut_open: (a: number, b: number, c: number) => void;
56
65
  export const pdfdocmut_pageCount: (a: number) => number;
57
66
  export const pdfdocmut_redactRegion: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
58
67
  export const pdfdocmut_redactSearch: (a: number, b: number, c: number, d: number) => void;
68
+ export const pdfdocmut_removeImage: (a: number, b: number, c: number, d: number, e: number) => void;
59
69
  export const pdfdocmut_reorderPages: (a: number, b: number, c: number, d: number) => void;
70
+ export const pdfdocmut_replaceImage: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
60
71
  export const pdfdocmut_replaceTextSpan: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
61
72
  export const pdfdocmut_rotatePage: (a: number, b: number, c: number, d: number) => void;
62
73
  export const pdfdocmut_save: (a: number, b: number) => void;
63
74
  export const pdfdocmut_setFormField: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
64
75
  export const pdfdocmut_setFormFields: (a: number, b: number, c: number, d: number) => void;
76
+ export const pdfdocmut_setImageRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
65
77
  export const pdfdocmut_setMultiSelect: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
66
78
  export const pdfdocmut_setTextRunStyle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
79
+ export const signPdf: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
67
80
  export const texteditor_findText: (a: number, b: number, c: number, d: number) => void;
68
81
  export const texteditor_open: (a: number, b: number, c: number) => void;
69
82
  export const texteditor_pageCount: (a: number) => number;