pdf-oxide-wasm 0.3.38 → 0.3.39

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.
Binary file
@@ -2,6 +2,7 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_artifactstyle_free: (a: number, b: number) => void;
5
+ export const __wbg_streamingtable_free: (a: number, b: number) => void;
5
6
  export const __wbg_wasmartifact_free: (a: number, b: number) => void;
6
7
  export const __wbg_wasmcertificate_free: (a: number, b: number) => void;
7
8
  export const __wbg_wasmdocumentbuilder_free: (a: number, b: number) => void;
@@ -15,6 +16,11 @@ export const __wbg_wasmpdfpageregion_free: (a: number, b: number) => void;
15
16
  export const __wbg_wasmsignature_free: (a: number, b: number) => void;
16
17
  export const __wbg_wasmtimestamp_free: (a: number, b: number) => void;
17
18
  export const setLogLevel: (a: number, b: number, c: number) => void;
19
+ export const signPdfBytes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
20
+ export const streamingtable_columnCount: (a: number) => number;
21
+ export const streamingtable_finish: (a: number, b: number) => void;
22
+ export const streamingtable_pushRow: (a: number, b: number, c: number, d: number) => void;
23
+ export const streamingtable_pushRowSpan: (a: number, b: number, c: number) => void;
18
24
  export const wasmartifact_center: (a: number, b: number) => number;
19
25
  export const wasmartifact_left: (a: number, b: number) => number;
20
26
  export const wasmartifact_new: () => number;
@@ -28,6 +34,8 @@ export const wasmartifactstyle_new: () => number;
28
34
  export const wasmcertificate_isValid: (a: number, b: number) => void;
29
35
  export const wasmcertificate_issuer: (a: number, b: number) => void;
30
36
  export const wasmcertificate_load: (a: number, b: number, c: number) => void;
37
+ export const wasmcertificate_loadPem: (a: number, b: number, c: number, d: number, e: number) => void;
38
+ export const wasmcertificate_loadPkcs12: (a: number, b: number, c: number, d: number, e: number) => void;
31
39
  export const wasmcertificate_serial: (a: number, b: number) => void;
32
40
  export const wasmcertificate_subject: (a: number, b: number) => void;
33
41
  export const wasmcertificate_validity: (a: number, b: number) => void;
@@ -37,41 +45,72 @@ export const wasmdocumentbuilder_build: (a: number, b: number) => void;
37
45
  export const wasmdocumentbuilder_commitPage: (a: number, b: number, c: number) => void;
38
46
  export const wasmdocumentbuilder_creator: (a: number, b: number, c: number, d: number) => void;
39
47
  export const wasmdocumentbuilder_keywords: (a: number, b: number, c: number, d: number) => void;
48
+ export const wasmdocumentbuilder_language: (a: number, b: number, c: number, d: number) => void;
40
49
  export const wasmdocumentbuilder_letterPage: (a: number, b: number) => void;
41
50
  export const wasmdocumentbuilder_new: () => number;
51
+ export const wasmdocumentbuilder_onOpen: (a: number, b: number, c: number, d: number) => void;
42
52
  export const wasmdocumentbuilder_page: (a: number, b: number, c: number, d: number) => void;
43
53
  export const wasmdocumentbuilder_registerEmbeddedFont: (a: number, b: number, c: number, d: number, e: number) => void;
54
+ export const wasmdocumentbuilder_roleMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
44
55
  export const wasmdocumentbuilder_subject: (a: number, b: number, c: number, d: number) => void;
56
+ export const wasmdocumentbuilder_taggedPdfUa1: (a: number, b: number) => void;
45
57
  export const wasmdocumentbuilder_title: (a: number, b: number, c: number, d: number) => void;
46
58
  export const wasmdocumentbuilder_toBytesEncrypted: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
47
59
  export const wasmembeddedfont_fromBytes: (a: number, b: number, c: number, d: number, e: number) => void;
48
60
  export const wasmembeddedfont_name: (a: number, b: number) => void;
49
61
  export const wasmfluentpagebuilder_at: (a: number, b: number, c: number, d: number) => void;
62
+ export const wasmfluentpagebuilder_barcode1d: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
63
+ export const wasmfluentpagebuilder_barcodeQr: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
50
64
  export const wasmfluentpagebuilder_checkbox: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
65
+ export const wasmfluentpagebuilder_columns: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
51
66
  export const wasmfluentpagebuilder_comboBox: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
52
67
  export const wasmfluentpagebuilder_done: (a: number, b: number, c: number) => void;
68
+ export const wasmfluentpagebuilder_fieldCalculate: (a: number, b: number, c: number, d: number) => void;
69
+ export const wasmfluentpagebuilder_fieldFormat: (a: number, b: number, c: number, d: number) => void;
70
+ export const wasmfluentpagebuilder_fieldKeystroke: (a: number, b: number, c: number, d: number) => void;
71
+ export const wasmfluentpagebuilder_fieldValidate: (a: number, b: number, c: number, d: number) => void;
53
72
  export const wasmfluentpagebuilder_filledRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
54
73
  export const wasmfluentpagebuilder_font: (a: number, b: number, c: number, d: number, e: number) => void;
74
+ export const wasmfluentpagebuilder_footnote: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
55
75
  export const wasmfluentpagebuilder_freeText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
56
76
  export const wasmfluentpagebuilder_heading: (a: number, b: number, c: number, d: number, e: number) => void;
57
77
  export const wasmfluentpagebuilder_highlight: (a: number, b: number, c: number, d: number, e: number) => void;
58
78
  export const wasmfluentpagebuilder_horizontalRule: (a: number, b: number) => void;
79
+ export const wasmfluentpagebuilder_imageArtifact: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
80
+ export const wasmfluentpagebuilder_imageWithAlt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
81
+ export const wasmfluentpagebuilder_inline: (a: number, b: number, c: number, d: number) => void;
82
+ export const wasmfluentpagebuilder_inlineBold: (a: number, b: number, c: number, d: number) => void;
83
+ export const wasmfluentpagebuilder_inlineColor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
84
+ export const wasmfluentpagebuilder_inlineItalic: (a: number, b: number, c: number, d: number) => void;
59
85
  export const wasmfluentpagebuilder_line: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
86
+ export const wasmfluentpagebuilder_linkJavascript: (a: number, b: number, c: number, d: number) => void;
60
87
  export const wasmfluentpagebuilder_linkNamed: (a: number, b: number, c: number, d: number) => void;
61
88
  export const wasmfluentpagebuilder_linkPage: (a: number, b: number, c: number) => void;
62
89
  export const wasmfluentpagebuilder_linkUrl: (a: number, b: number, c: number, d: number) => void;
90
+ export const wasmfluentpagebuilder_measure: (a: number, b: number, c: number) => number;
91
+ export const wasmfluentpagebuilder_newPageSameSize: (a: number, b: number) => void;
92
+ export const wasmfluentpagebuilder_newline: (a: number, b: number) => void;
93
+ export const wasmfluentpagebuilder_onClose: (a: number, b: number, c: number, d: number) => void;
94
+ export const wasmfluentpagebuilder_onOpen: (a: number, b: number, c: number, d: number) => void;
63
95
  export const wasmfluentpagebuilder_paragraph: (a: number, b: number, c: number, d: number) => void;
64
96
  export const wasmfluentpagebuilder_pushButton: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
65
97
  export const wasmfluentpagebuilder_radioGroup: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number) => void;
66
98
  export const wasmfluentpagebuilder_rect: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
99
+ export const wasmfluentpagebuilder_remainingSpace: (a: number) => number;
100
+ export const wasmfluentpagebuilder_signatureField: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
67
101
  export const wasmfluentpagebuilder_space: (a: number, b: number, c: number) => void;
68
102
  export const wasmfluentpagebuilder_squiggly: (a: number, b: number, c: number, d: number, e: number) => void;
69
103
  export const wasmfluentpagebuilder_stamp: (a: number, b: number, c: number, d: number) => void;
70
104
  export const wasmfluentpagebuilder_stickyNote: (a: number, b: number, c: number, d: number) => void;
71
105
  export const wasmfluentpagebuilder_stickyNoteAt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
106
+ export const wasmfluentpagebuilder_streamingTable: (a: number, b: number, c: number) => void;
72
107
  export const wasmfluentpagebuilder_strikeout: (a: number, b: number, c: number, d: number, e: number) => void;
108
+ export const wasmfluentpagebuilder_strokeLine: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
109
+ export const wasmfluentpagebuilder_strokeRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
110
+ export const wasmfluentpagebuilder_table: (a: number, b: number, c: number) => void;
73
111
  export const wasmfluentpagebuilder_text: (a: number, b: number, c: number, d: number) => void;
74
112
  export const wasmfluentpagebuilder_textField: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
113
+ export const wasmfluentpagebuilder_textInRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
75
114
  export const wasmfluentpagebuilder_underline: (a: number, b: number, c: number, d: number, e: number) => void;
76
115
  export const wasmfluentpagebuilder_watermark: (a: number, b: number, c: number, d: number) => void;
77
116
  export const wasmfluentpagebuilder_watermarkConfidential: (a: number, b: number) => void;
@@ -126,6 +165,7 @@ export const wasmpdfdocument_flattenAllAnnotations: (a: number, b: number) => vo
126
165
  export const wasmpdfdocument_flattenForms: (a: number, b: number) => void;
127
166
  export const wasmpdfdocument_flattenFormsOnPage: (a: number, b: number, c: number) => void;
128
167
  export const wasmpdfdocument_flattenPageAnnotations: (a: number, b: number, c: number) => void;
168
+ export const wasmpdfdocument_flattenWarnings: (a: number, b: number) => void;
129
169
  export const wasmpdfdocument_getAnnotations: (a: number, b: number, c: number) => void;
130
170
  export const wasmpdfdocument_getFormFieldValue: (a: number, b: number, c: number, d: number) => void;
131
171
  export const wasmpdfdocument_getFormFields: (a: number, b: number) => void;
@@ -150,6 +190,7 @@ export const wasmpdfdocument_rotateAllPages: (a: number, b: number, c: number) =
150
190
  export const wasmpdfdocument_rotatePage: (a: number, b: number, c: number, d: number) => void;
151
191
  export const wasmpdfdocument_save: (a: number, b: number) => void;
152
192
  export const wasmpdfdocument_saveEncryptedToBytes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
193
+ export const wasmpdfdocument_saveWithOptions: (a: number, b: number, c: number, d: number, e: number) => void;
153
194
  export const wasmpdfdocument_search: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
154
195
  export const wasmpdfdocument_searchPage: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
155
196
  export const wasmpdfdocument_setAuthor: (a: number, b: number, c: number, d: number) => void;
@@ -213,8 +254,8 @@ export const wasmfooter_new: () => number;
213
254
  export const wasmheader_new: () => number;
214
255
  export const __wbg_wasmocrengine_free: (a: number, b: number) => void;
215
256
  export const disableLogging: () => void;
216
- export const __wbg_wasmfooter_free: (a: number, b: number) => void;
217
257
  export const __wbg_wasmheader_free: (a: number, b: number) => void;
258
+ export const __wbg_wasmfooter_free: (a: number, b: number) => void;
218
259
  export const lut_inverse_interp16: (a: number, b: number, c: number) => number;
219
260
  export const qcms_profile_precache_output_transform: (a: number) => void;
220
261
  export const lut_interp_linear16: (a: number, b: number, c: number) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdf-oxide-wasm",
3
- "version": "0.3.38",
3
+ "version": "0.3.39",
4
4
  "description": "Fast, zero-dependency PDF toolkit for Node.js, browsers, and edge runtimes — text extraction, markdown/HTML conversion, search, form filling, creation, and editing. Rust core compiled to WebAssembly.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "repository": {
@@ -1,6 +1,26 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
 
4
+ /**
5
+ * Horizontal-alignment enum shared by `textInRect`, buffered `table`, and
6
+ * `streamingTable`. Maps 1:1 onto [`crate::writer::TextAlign`] /
7
+ * [`crate::writer::CellAlign`]. Exported to JS as `Align` via `js_name`.
8
+ */
9
+ export enum Align {
10
+ /**
11
+ * Align to the left edge.
12
+ */
13
+ Left = 0,
14
+ /**
15
+ * Center horizontally.
16
+ */
17
+ Center = 1,
18
+ /**
19
+ * Align to the right edge.
20
+ */
21
+ Right = 2,
22
+ }
23
+
4
24
  /**
5
25
  * Style configuration for header/footer text.
6
26
  */
@@ -25,6 +45,45 @@ export class ArtifactStyle {
25
45
  constructor();
26
46
  }
27
47
 
48
+ /**
49
+ * WASM handle to a streaming-table building session. Created by
50
+ * `FluentPageBuilder.streamingTable()`; rows are pushed via `pushRow`,
51
+ * and the session is sealed with `finish()`.
52
+ *
53
+ * Single-use: `finish()` twice throws, and `pushRow` after `finish()`
54
+ * throws. The rows are buffered and replayed against the real Rust
55
+ * `StreamingTable` at `WasmFluentPageBuilder.done()` commit time —
56
+ * preserving the FluentPageBuilder borrow-lifetime invariant that can't
57
+ * cross the wasm-bindgen boundary.
58
+ */
59
+ export class StreamingTable {
60
+ private constructor();
61
+ free(): void;
62
+ [Symbol.dispose](): void;
63
+ /**
64
+ * Number of columns configured on this streaming table.
65
+ */
66
+ columnCount(): number;
67
+ /**
68
+ * Seal the streaming table — the buffered rows are flushed onto the
69
+ * parent page's op queue, to be replayed against the real Rust
70
+ * `StreamingTable` at `done()` commit time. Calling `finish()` twice
71
+ * throws.
72
+ */
73
+ finish(): void;
74
+ /**
75
+ * Push one row as an array of cell strings (all rowspan=1). Returns an
76
+ * error if the table has already been finished or if the row's cell count
77
+ * does not match the column count.
78
+ */
79
+ pushRow(cells: string[]): void;
80
+ /**
81
+ * Push one row with per-cell rowspan values. `cells` is a JS array of
82
+ * `[text, rowspan]` two-element arrays. `rowspan == 1` is a normal cell.
83
+ */
84
+ pushRowSpan(cells: any): void;
85
+ }
86
+
28
87
  /**
29
88
  * A header or footer artifact definition.
30
89
  */
@@ -71,6 +130,17 @@ export class WasmCertificate {
71
130
  * the DER doesn't parse.
72
131
  */
73
132
  static load(data: Uint8Array): WasmCertificate;
133
+ /**
134
+ * Load a signer certificate + private key from PEM strings.
135
+ * `certPem` must begin `-----BEGIN CERTIFICATE-----`.
136
+ * `keyPem` must begin `-----BEGIN PRIVATE KEY-----` or `-----BEGIN RSA PRIVATE KEY-----`.
137
+ */
138
+ static loadPem(cert_pem: string, key_pem: string): WasmCertificate;
139
+ /**
140
+ * Load a signer certificate + private key from a PKCS#12 (.p12/.pfx) blob.
141
+ * `password` is the passphrase protecting the key bag.
142
+ */
143
+ static loadPkcs12(data: Uint8Array, password: string): WasmCertificate;
74
144
  /**
75
145
  * Whether the certificate is currently within its validity
76
146
  * window. Does NOT verify chain, trust-root, or revocation.
@@ -141,6 +211,12 @@ export class WasmDocumentBuilder {
141
211
  * Set document keywords (comma-separated per PDF convention).
142
212
  */
143
213
  keywords(keywords: string): void;
214
+ /**
215
+ * Set the document's natural language tag (e.g. `"en-US"`).
216
+ *
217
+ * Emitted as `/Lang` in the catalog when `taggedPdfUa1()` is set.
218
+ */
219
+ language(lang: string): void;
144
220
  /**
145
221
  * Start a new US Letter page.
146
222
  */
@@ -151,6 +227,10 @@ export class WasmDocumentBuilder {
151
227
  * chains off the instance returned here.
152
228
  */
153
229
  constructor();
230
+ /**
231
+ * Run a JavaScript script when the document is opened (`/OpenAction`).
232
+ */
233
+ onOpen(script: string): void;
154
234
  /**
155
235
  * Start a new page with custom dimensions in PDF points
156
236
  * (72 pt = 1 inch).
@@ -161,10 +241,24 @@ export class WasmDocumentBuilder {
161
241
  * **Consumes** `font` — reusing the `WasmEmbeddedFont` throws.
162
242
  */
163
243
  registerEmbeddedFont(name: string, font: WasmEmbeddedFont): void;
244
+ /**
245
+ * Add a role-map entry: custom structure type → standard PDF structure type.
246
+ *
247
+ * Emitted in `/RoleMap` inside the StructTreeRoot when `taggedPdfUa1()`
248
+ * is set. Multiple calls accumulate entries.
249
+ */
250
+ roleMap(custom: string, standard: string): void;
164
251
  /**
165
252
  * Set document subject.
166
253
  */
167
254
  subject(subject: string): void;
255
+ /**
256
+ * Enable PDF/UA-1 tagged PDF mode.
257
+ *
258
+ * When enabled, `build()` emits `/MarkInfo`, `/StructTreeRoot`, `/Lang`,
259
+ * and `/ViewerPreferences` in the catalog. Opt-in — no effect unless called.
260
+ */
261
+ taggedPdfUa1(): void;
168
262
  /**
169
263
  * Set document title.
170
264
  */
@@ -207,7 +301,22 @@ export class WasmFluentPageBuilder {
207
301
  free(): void;
208
302
  [Symbol.dispose](): void;
209
303
  at(x: number, y: number): void;
304
+ /**
305
+ * Place a 1-D barcode image at `(x, y, w, h)` on the page.
306
+ * `barcodeType`: 0=Code128 1=Code39 2=EAN13 3=EAN8 4=UPCA 5=ITF
307
+ * 6=Code93 7=Codabar.
308
+ */
309
+ barcode1d(barcode_type: number, data: string, x: number, y: number, w: number, h: number): void;
310
+ /**
311
+ * Place a QR-code image at `(x, y, size, size)` on the page.
312
+ */
313
+ barcodeQr(data: string, x: number, y: number, size: number): void;
210
314
  checkbox(name: string, x: number, y: number, w: number, h: number, checked: boolean): void;
315
+ /**
316
+ * Lay out `text` as balanced multi-column flow (`columnCount` columns,
317
+ * `gapPt` points between columns). Paragraphs in `text` are separated by `"\n\n"`.
318
+ */
319
+ columns(column_count: number, gap_pt: number, text: string): void;
211
320
  /**
212
321
  * Add a dropdown combo-box.
213
322
  */
@@ -224,22 +333,77 @@ export class WasmFluentPageBuilder {
224
333
  * ```
225
334
  */
226
335
  done(builder: WasmDocumentBuilder): void;
336
+ fieldCalculate(script: string): void;
337
+ fieldFormat(script: string): void;
338
+ fieldKeystroke(script: string): void;
339
+ fieldValidate(script: string): void;
227
340
  /**
228
341
  * Draw a filled rectangle. RGB channels in 0.0-1.0.
229
342
  */
230
343
  filledRect(x: number, y: number, w: number, h: number, r: number, g: number, b: number): void;
231
344
  font(name: string, size: number): void;
345
+ /**
346
+ * Add a footnote: inline `refMark` at the cursor and `noteText` body
347
+ * near the page bottom with a separator artifact line.
348
+ */
349
+ footnote(ref_mark: string, note_text: string): void;
232
350
  freeText(x: number, y: number, w: number, h: number, text: string): void;
233
351
  heading(level: number, text: string): void;
234
352
  highlight(r: number, g: number, b: number): void;
235
353
  horizontalRule(): void;
354
+ /**
355
+ * Embed a decorative image (JPEG/PNG/WebP bytes) as an /Artifact (no alt text).
356
+ */
357
+ imageArtifact(bytes: Uint8Array, x: number, y: number, w: number, h: number): void;
358
+ /**
359
+ * Embed an image (JPEG/PNG/WebP bytes) with an accessibility alt text.
360
+ */
361
+ imageWithAlt(bytes: Uint8Array, x: number, y: number, w: number, h: number, alt_text: string): void;
362
+ /**
363
+ * Emit `text` inline (advances cursorX only, not cursorY).
364
+ */
365
+ inline(text: string): void;
366
+ /**
367
+ * Inline bold run.
368
+ */
369
+ inlineBold(text: string): void;
370
+ /**
371
+ * Inline colored run (RGB 0.0–1.0).
372
+ */
373
+ inlineColor(r: number, g: number, b: number, text: string): void;
374
+ /**
375
+ * Inline italic run.
376
+ */
377
+ inlineItalic(text: string): void;
236
378
  /**
237
379
  * Draw a line from (x1, y1) to (x2, y2) with 1pt black stroke.
238
380
  */
239
381
  line(x1: number, y1: number, x2: number, y2: number): void;
382
+ linkJavascript(script: string): void;
240
383
  linkNamed(destination: string): void;
241
384
  linkPage(page: number): void;
242
385
  linkUrl(url: string): void;
386
+ /**
387
+ * Measure the rendered width of `text` in the builder's current font
388
+ * and size, in PDF points. Pure query — does not mutate state.
389
+ *
390
+ * Thin JS view over [`crate::writer::FluentPageBuilder::measure`]. The
391
+ * WASM class tracks the current font/size independently of the
392
+ * buffered ops so this query is served without a live builder.
393
+ */
394
+ measure(text: string): number;
395
+ /**
396
+ * Finish the current page and start a new one with the same page
397
+ * size. Cursor resets to the top-left margin (72, height-72). The
398
+ * builder's font carries over.
399
+ */
400
+ newPageSameSize(): void;
401
+ /**
402
+ * Advance cursorY by one line-height and reset cursorX to 72 pt.
403
+ */
404
+ newline(): void;
405
+ onClose(script: string): void;
406
+ onOpen(script: string): void;
243
407
  paragraph(text: string): void;
244
408
  /**
245
409
  * Add a clickable push button with a visible caption.
@@ -255,14 +419,67 @@ export class WasmFluentPageBuilder {
255
419
  * Draw a stroked rectangle outline (1pt black).
256
420
  */
257
421
  rect(x: number, y: number, w: number, h: number): void;
422
+ /**
423
+ * Points remaining on the current page below the cursor (down to the
424
+ * 72 pt bottom margin). Mirrors
425
+ * [`crate::writer::FluentPageBuilder::remaining_space`] using the WASM
426
+ * class's independently-tracked cursor — accurate after `at`, `text`,
427
+ * `space`, `newPageSameSize`, `textInRect` and the table helpers.
428
+ */
429
+ remainingSpace(): number;
430
+ /**
431
+ * Add an unsigned signature placeholder field at the given bounds.
432
+ */
433
+ signatureField(name: string, x: number, y: number, w: number, h: number): void;
258
434
  space(points: number): void;
259
435
  squiggly(r: number, g: number, b: number): void;
260
436
  stamp(name: string): void;
261
437
  stickyNote(text: string): void;
262
438
  stickyNoteAt(x: number, y: number, text: string): void;
439
+ /**
440
+ * Open a streaming table. Returns a `StreamingTable` handle the caller
441
+ * pushes rows into; call `finish()` when done. The streamed rows are
442
+ * buffered per-table and replayed against the real Rust
443
+ * `StreamingTable` at `done()` commit time — avoiding the
444
+ * FluentPageBuilder-lifetime problem that otherwise can't cross the
445
+ * wasm-bindgen boundary.
446
+ */
447
+ streamingTable(spec: any): StreamingTable;
263
448
  strikeout(r: number, g: number, b: number): void;
449
+ /**
450
+ * Draw a straight line with explicit stroke width and RGB colour.
451
+ */
452
+ strokeLine(x1: number, y1: number, x2: number, y2: number, width: number, r: number, g: number, b: number): void;
453
+ /**
454
+ * Draw a stroked rectangle with explicit stroke width and RGB colour.
455
+ */
456
+ strokeRect(x: number, y: number, w: number, h: number, width: number, r: number, g: number, b: number): void;
457
+ /**
458
+ * Render a buffered table from a JS object:
459
+ *
460
+ * ```javascript
461
+ * page.table({
462
+ * columns: [
463
+ * { header: "SKU", width: 100, align: Align.Left },
464
+ * { header: "Qty", width: 60, align: Align.Right },
465
+ * ],
466
+ * rows: [["A-1","12"], ["B-2","3"]],
467
+ * hasHeader: true,
468
+ * });
469
+ * ```
470
+ *
471
+ * Uses `serde-wasm-bindgen` for deserialisation. Replays against the
472
+ * Rust `Table` builder at `done()` commit time.
473
+ */
474
+ table(spec: any): void;
264
475
  text(text: string): void;
265
476
  textField(name: string, x: number, y: number, w: number, h: number, default_value?: string | null): void;
477
+ /**
478
+ * Place wrapped text inside a rectangle with horizontal alignment.
479
+ * `align` is the `Align` enum (0 = Left, 1 = Center, 2 = Right) — also
480
+ * accepts a raw integer for JS callers that pre-date the enum import.
481
+ */
482
+ textInRect(x: number, y: number, w: number, h: number, text: string, align: number): void;
266
483
  underline(r: number, g: number, b: number): void;
267
484
  watermark(text: string): void;
268
485
  watermarkConfidential(): void;
@@ -682,6 +899,15 @@ export class WasmPdfDocument {
682
899
  * Flatten annotations on a page into the page content.
683
900
  */
684
901
  flattenPageAnnotations(page_index: number): void;
902
+ /**
903
+ * Return warnings collected during the last form-flattening save.
904
+ *
905
+ * Each entry names a widget field that had no `/AP` appearance stream;
906
+ * flattening such a field produces a blank rectangle.
907
+ *
908
+ * @returns Array of warning strings
909
+ */
910
+ flattenWarnings(): string[];
685
911
  /**
686
912
  * Get annotations from a page.
687
913
  *
@@ -838,6 +1064,16 @@ export class WasmPdfDocument {
838
1064
  * @returns Uint8Array containing the modified PDF
839
1065
  */
840
1066
  saveToBytes(): Uint8Array;
1067
+ /**
1068
+ * Save with options (compress, garbage_collect, linearize) and return bytes.
1069
+ *
1070
+ * @param {Object} [options] - Optional save options.
1071
+ * @param {boolean} [options.compress=true] - Compress raw streams with FlateDecode.
1072
+ * @param {boolean} [options.garbageCollect=true] - Remove unreachable objects.
1073
+ * @param {boolean} [options.linearize=false] - Linearize (reserved, no-op).
1074
+ * @returns Uint8Array containing the modified PDF
1075
+ */
1076
+ saveWithOptions(compress?: boolean | null, garbage_collect?: boolean | null, linearize?: boolean | null): Uint8Array;
841
1077
  /**
842
1078
  * Search for text across all pages.
843
1079
  *
@@ -1154,11 +1390,20 @@ export function disableLogging(): void;
1154
1390
  */
1155
1391
  export function setLogLevel(level: string): void;
1156
1392
 
1393
+ /**
1394
+ * Sign raw PDF bytes and return the signed PDF as a `Uint8Array`.
1395
+ *
1396
+ * `cert` must carry a private key (loaded via `Certificate.loadPem` or
1397
+ * `Certificate.loadPkcs12`).
1398
+ */
1399
+ export function signPdfBytes(pdf_data: Uint8Array, cert: WasmCertificate, reason?: string | null, location?: string | null): Uint8Array;
1400
+
1157
1401
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
1158
1402
 
1159
1403
  export interface InitOutput {
1160
1404
  readonly memory: WebAssembly.Memory;
1161
1405
  readonly __wbg_artifactstyle_free: (a: number, b: number) => void;
1406
+ readonly __wbg_streamingtable_free: (a: number, b: number) => void;
1162
1407
  readonly __wbg_wasmartifact_free: (a: number, b: number) => void;
1163
1408
  readonly __wbg_wasmcertificate_free: (a: number, b: number) => void;
1164
1409
  readonly __wbg_wasmdocumentbuilder_free: (a: number, b: number) => void;
@@ -1172,6 +1417,11 @@ export interface InitOutput {
1172
1417
  readonly __wbg_wasmsignature_free: (a: number, b: number) => void;
1173
1418
  readonly __wbg_wasmtimestamp_free: (a: number, b: number) => void;
1174
1419
  readonly setLogLevel: (a: number, b: number, c: number) => void;
1420
+ readonly signPdfBytes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1421
+ readonly streamingtable_columnCount: (a: number) => number;
1422
+ readonly streamingtable_finish: (a: number, b: number) => void;
1423
+ readonly streamingtable_pushRow: (a: number, b: number, c: number, d: number) => void;
1424
+ readonly streamingtable_pushRowSpan: (a: number, b: number, c: number) => void;
1175
1425
  readonly wasmartifact_center: (a: number, b: number) => number;
1176
1426
  readonly wasmartifact_left: (a: number, b: number) => number;
1177
1427
  readonly wasmartifact_new: () => number;
@@ -1185,6 +1435,8 @@ export interface InitOutput {
1185
1435
  readonly wasmcertificate_isValid: (a: number, b: number) => void;
1186
1436
  readonly wasmcertificate_issuer: (a: number, b: number) => void;
1187
1437
  readonly wasmcertificate_load: (a: number, b: number, c: number) => void;
1438
+ readonly wasmcertificate_loadPem: (a: number, b: number, c: number, d: number, e: number) => void;
1439
+ readonly wasmcertificate_loadPkcs12: (a: number, b: number, c: number, d: number, e: number) => void;
1188
1440
  readonly wasmcertificate_serial: (a: number, b: number) => void;
1189
1441
  readonly wasmcertificate_subject: (a: number, b: number) => void;
1190
1442
  readonly wasmcertificate_validity: (a: number, b: number) => void;
@@ -1194,41 +1446,72 @@ export interface InitOutput {
1194
1446
  readonly wasmdocumentbuilder_commitPage: (a: number, b: number, c: number) => void;
1195
1447
  readonly wasmdocumentbuilder_creator: (a: number, b: number, c: number, d: number) => void;
1196
1448
  readonly wasmdocumentbuilder_keywords: (a: number, b: number, c: number, d: number) => void;
1449
+ readonly wasmdocumentbuilder_language: (a: number, b: number, c: number, d: number) => void;
1197
1450
  readonly wasmdocumentbuilder_letterPage: (a: number, b: number) => void;
1198
1451
  readonly wasmdocumentbuilder_new: () => number;
1452
+ readonly wasmdocumentbuilder_onOpen: (a: number, b: number, c: number, d: number) => void;
1199
1453
  readonly wasmdocumentbuilder_page: (a: number, b: number, c: number, d: number) => void;
1200
1454
  readonly wasmdocumentbuilder_registerEmbeddedFont: (a: number, b: number, c: number, d: number, e: number) => void;
1455
+ readonly wasmdocumentbuilder_roleMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1201
1456
  readonly wasmdocumentbuilder_subject: (a: number, b: number, c: number, d: number) => void;
1457
+ readonly wasmdocumentbuilder_taggedPdfUa1: (a: number, b: number) => void;
1202
1458
  readonly wasmdocumentbuilder_title: (a: number, b: number, c: number, d: number) => void;
1203
1459
  readonly wasmdocumentbuilder_toBytesEncrypted: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1204
1460
  readonly wasmembeddedfont_fromBytes: (a: number, b: number, c: number, d: number, e: number) => void;
1205
1461
  readonly wasmembeddedfont_name: (a: number, b: number) => void;
1206
1462
  readonly wasmfluentpagebuilder_at: (a: number, b: number, c: number, d: number) => void;
1463
+ readonly wasmfluentpagebuilder_barcode1d: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1464
+ readonly wasmfluentpagebuilder_barcodeQr: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1207
1465
  readonly wasmfluentpagebuilder_checkbox: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1466
+ readonly wasmfluentpagebuilder_columns: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1208
1467
  readonly wasmfluentpagebuilder_comboBox: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
1209
1468
  readonly wasmfluentpagebuilder_done: (a: number, b: number, c: number) => void;
1469
+ readonly wasmfluentpagebuilder_fieldCalculate: (a: number, b: number, c: number, d: number) => void;
1470
+ readonly wasmfluentpagebuilder_fieldFormat: (a: number, b: number, c: number, d: number) => void;
1471
+ readonly wasmfluentpagebuilder_fieldKeystroke: (a: number, b: number, c: number, d: number) => void;
1472
+ readonly wasmfluentpagebuilder_fieldValidate: (a: number, b: number, c: number, d: number) => void;
1210
1473
  readonly wasmfluentpagebuilder_filledRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1211
1474
  readonly wasmfluentpagebuilder_font: (a: number, b: number, c: number, d: number, e: number) => void;
1475
+ readonly wasmfluentpagebuilder_footnote: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1212
1476
  readonly wasmfluentpagebuilder_freeText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1213
1477
  readonly wasmfluentpagebuilder_heading: (a: number, b: number, c: number, d: number, e: number) => void;
1214
1478
  readonly wasmfluentpagebuilder_highlight: (a: number, b: number, c: number, d: number, e: number) => void;
1215
1479
  readonly wasmfluentpagebuilder_horizontalRule: (a: number, b: number) => void;
1480
+ readonly wasmfluentpagebuilder_imageArtifact: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1481
+ readonly wasmfluentpagebuilder_imageWithAlt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1482
+ readonly wasmfluentpagebuilder_inline: (a: number, b: number, c: number, d: number) => void;
1483
+ readonly wasmfluentpagebuilder_inlineBold: (a: number, b: number, c: number, d: number) => void;
1484
+ readonly wasmfluentpagebuilder_inlineColor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
1485
+ readonly wasmfluentpagebuilder_inlineItalic: (a: number, b: number, c: number, d: number) => void;
1216
1486
  readonly wasmfluentpagebuilder_line: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1487
+ readonly wasmfluentpagebuilder_linkJavascript: (a: number, b: number, c: number, d: number) => void;
1217
1488
  readonly wasmfluentpagebuilder_linkNamed: (a: number, b: number, c: number, d: number) => void;
1218
1489
  readonly wasmfluentpagebuilder_linkPage: (a: number, b: number, c: number) => void;
1219
1490
  readonly wasmfluentpagebuilder_linkUrl: (a: number, b: number, c: number, d: number) => void;
1491
+ readonly wasmfluentpagebuilder_measure: (a: number, b: number, c: number) => number;
1492
+ readonly wasmfluentpagebuilder_newPageSameSize: (a: number, b: number) => void;
1493
+ readonly wasmfluentpagebuilder_newline: (a: number, b: number) => void;
1494
+ readonly wasmfluentpagebuilder_onClose: (a: number, b: number, c: number, d: number) => void;
1495
+ readonly wasmfluentpagebuilder_onOpen: (a: number, b: number, c: number, d: number) => void;
1220
1496
  readonly wasmfluentpagebuilder_paragraph: (a: number, b: number, c: number, d: number) => void;
1221
1497
  readonly wasmfluentpagebuilder_pushButton: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1222
1498
  readonly wasmfluentpagebuilder_radioGroup: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number) => void;
1223
1499
  readonly wasmfluentpagebuilder_rect: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1500
+ readonly wasmfluentpagebuilder_remainingSpace: (a: number) => number;
1501
+ readonly wasmfluentpagebuilder_signatureField: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1224
1502
  readonly wasmfluentpagebuilder_space: (a: number, b: number, c: number) => void;
1225
1503
  readonly wasmfluentpagebuilder_squiggly: (a: number, b: number, c: number, d: number, e: number) => void;
1226
1504
  readonly wasmfluentpagebuilder_stamp: (a: number, b: number, c: number, d: number) => void;
1227
1505
  readonly wasmfluentpagebuilder_stickyNote: (a: number, b: number, c: number, d: number) => void;
1228
1506
  readonly wasmfluentpagebuilder_stickyNoteAt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1507
+ readonly wasmfluentpagebuilder_streamingTable: (a: number, b: number, c: number) => void;
1229
1508
  readonly wasmfluentpagebuilder_strikeout: (a: number, b: number, c: number, d: number, e: number) => void;
1509
+ readonly wasmfluentpagebuilder_strokeLine: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1510
+ readonly wasmfluentpagebuilder_strokeRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1511
+ readonly wasmfluentpagebuilder_table: (a: number, b: number, c: number) => void;
1230
1512
  readonly wasmfluentpagebuilder_text: (a: number, b: number, c: number, d: number) => void;
1231
1513
  readonly wasmfluentpagebuilder_textField: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1514
+ readonly wasmfluentpagebuilder_textInRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1232
1515
  readonly wasmfluentpagebuilder_underline: (a: number, b: number, c: number, d: number, e: number) => void;
1233
1516
  readonly wasmfluentpagebuilder_watermark: (a: number, b: number, c: number, d: number) => void;
1234
1517
  readonly wasmfluentpagebuilder_watermarkConfidential: (a: number, b: number) => void;
@@ -1283,6 +1566,7 @@ export interface InitOutput {
1283
1566
  readonly wasmpdfdocument_flattenForms: (a: number, b: number) => void;
1284
1567
  readonly wasmpdfdocument_flattenFormsOnPage: (a: number, b: number, c: number) => void;
1285
1568
  readonly wasmpdfdocument_flattenPageAnnotations: (a: number, b: number, c: number) => void;
1569
+ readonly wasmpdfdocument_flattenWarnings: (a: number, b: number) => void;
1286
1570
  readonly wasmpdfdocument_getAnnotations: (a: number, b: number, c: number) => void;
1287
1571
  readonly wasmpdfdocument_getFormFieldValue: (a: number, b: number, c: number, d: number) => void;
1288
1572
  readonly wasmpdfdocument_getFormFields: (a: number, b: number) => void;
@@ -1307,6 +1591,7 @@ export interface InitOutput {
1307
1591
  readonly wasmpdfdocument_rotatePage: (a: number, b: number, c: number, d: number) => void;
1308
1592
  readonly wasmpdfdocument_save: (a: number, b: number) => void;
1309
1593
  readonly wasmpdfdocument_saveEncryptedToBytes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
1594
+ readonly wasmpdfdocument_saveWithOptions: (a: number, b: number, c: number, d: number, e: number) => void;
1310
1595
  readonly wasmpdfdocument_search: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
1311
1596
  readonly wasmpdfdocument_searchPage: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
1312
1597
  readonly wasmpdfdocument_setAuthor: (a: number, b: number, c: number, d: number) => void;
@@ -1370,8 +1655,8 @@ export interface InitOutput {
1370
1655
  readonly wasmheader_new: () => number;
1371
1656
  readonly __wbg_wasmocrengine_free: (a: number, b: number) => void;
1372
1657
  readonly disableLogging: () => void;
1373
- readonly __wbg_wasmfooter_free: (a: number, b: number) => void;
1374
1658
  readonly __wbg_wasmheader_free: (a: number, b: number) => void;
1659
+ readonly __wbg_wasmfooter_free: (a: number, b: number) => void;
1375
1660
  readonly lut_inverse_interp16: (a: number, b: number, c: number) => number;
1376
1661
  readonly qcms_profile_precache_output_transform: (a: number) => void;
1377
1662
  readonly lut_interp_linear16: (a: number, b: number, c: number) => number;