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;
@@ -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
  *
@@ -1153,3 +1389,11 @@ export function disableLogging(): void;
1153
1389
  * ```
1154
1390
  */
1155
1391
  export function setLogLevel(level: string): void;
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;