pretext-pdf 1.1.1 → 1.6.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/CHANGELOG.md +659 -0
- package/README.md +82 -7
- package/dist/allowed-props.d.ts +76 -0
- package/dist/allowed-props.d.ts.map +1 -1
- package/dist/allowed-props.js.map +1 -1
- package/dist/assets/generators/barcode.d.ts +9 -0
- package/dist/assets/generators/barcode.d.ts.map +1 -0
- package/dist/assets/generators/barcode.js +24 -0
- package/dist/assets/generators/barcode.js.map +1 -0
- package/dist/assets/generators/chart.d.ts +13 -0
- package/dist/assets/generators/chart.d.ts.map +1 -0
- package/dist/assets/generators/chart.js +32 -0
- package/dist/assets/generators/chart.js.map +1 -0
- package/dist/assets/generators/qr.d.ts +9 -0
- package/dist/assets/generators/qr.d.ts.map +1 -0
- package/dist/assets/generators/qr.js +25 -0
- package/dist/assets/generators/qr.js.map +1 -0
- package/dist/assets/index.d.ts +19 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +19 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/loaders/images.d.ts +20 -0
- package/dist/assets/loaders/images.d.ts.map +1 -0
- package/dist/assets/loaders/images.js +69 -0
- package/dist/assets/loaders/images.js.map +1 -0
- package/dist/assets/loaders/orchestrator.d.ts +24 -0
- package/dist/assets/loaders/orchestrator.d.ts.map +1 -0
- package/dist/assets/loaders/orchestrator.js +109 -0
- package/dist/assets/loaders/orchestrator.js.map +1 -0
- package/dist/assets/loaders/vectors.d.ts +25 -0
- package/dist/assets/loaders/vectors.d.ts.map +1 -0
- package/dist/assets/loaders/vectors.js +118 -0
- package/dist/assets/loaders/vectors.js.map +1 -0
- package/dist/assets/loaders/watermark.d.ts +12 -0
- package/dist/assets/loaders/watermark.d.ts.map +1 -0
- package/dist/assets/loaders/watermark.js +40 -0
- package/dist/assets/loaders/watermark.js.map +1 -0
- package/dist/assets/security/fetch.d.ts +14 -0
- package/dist/assets/security/fetch.d.ts.map +1 -0
- package/dist/assets/security/fetch.js +112 -0
- package/dist/assets/security/fetch.js.map +1 -0
- package/dist/assets/security/ipv4-normalize.d.ts +28 -0
- package/dist/assets/security/ipv4-normalize.d.ts.map +1 -0
- package/dist/assets/security/ipv4-normalize.js +116 -0
- package/dist/assets/security/ipv4-normalize.js.map +1 -0
- package/dist/assets/security/path-allowlist.d.ts +12 -0
- package/dist/assets/security/path-allowlist.d.ts.map +1 -0
- package/dist/assets/security/path-allowlist.js +26 -0
- package/dist/assets/security/path-allowlist.js.map +1 -0
- package/dist/assets/security/url-validation.d.ts +22 -0
- package/dist/assets/security/url-validation.d.ts.map +1 -0
- package/dist/assets/security/url-validation.js +164 -0
- package/dist/assets/security/url-validation.js.map +1 -0
- package/dist/assets/svg/dimensions.d.ts +19 -0
- package/dist/assets/svg/dimensions.d.ts.map +1 -0
- package/dist/assets/svg/dimensions.js +43 -0
- package/dist/assets/svg/dimensions.js.map +1 -0
- package/dist/assets/svg/rasterize.d.ts +6 -0
- package/dist/assets/svg/rasterize.d.ts.map +1 -0
- package/dist/assets/svg/rasterize.js +38 -0
- package/dist/assets/svg/rasterize.js.map +1 -0
- package/dist/assets/svg/resolve-content.d.ts +16 -0
- package/dist/assets/svg/resolve-content.d.ts.map +1 -0
- package/dist/assets/svg/resolve-content.js +38 -0
- package/dist/assets/svg/resolve-content.js.map +1 -0
- package/dist/assets/svg/sanitize.d.ts +22 -0
- package/dist/assets/svg/sanitize.d.ts.map +1 -0
- package/dist/assets/svg/sanitize.js +46 -0
- package/dist/assets/svg/sanitize.js.map +1 -0
- package/dist/assets/util/redact-path.d.ts +14 -0
- package/dist/assets/util/redact-path.d.ts.map +1 -0
- package/dist/assets/util/redact-path.js +16 -0
- package/dist/assets/util/redact-path.js.map +1 -0
- package/dist/assets.d.ts +10 -27
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +10 -549
- package/dist/assets.js.map +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +2 -1
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +11 -1
- package/dist/cli.js.map +1 -1
- package/dist/compat.d.ts +63 -1
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +42 -5
- package/dist/compat.js.map +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/fonts.d.ts.map +1 -1
- package/dist/fonts.js +8 -10
- package/dist/fonts.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/layout-state.d.ts +1 -1
- package/dist/layout-state.d.ts.map +1 -1
- package/dist/layout-state.js +5 -0
- package/dist/layout-state.js.map +1 -1
- package/dist/measure-blocks/float-group.d.ts +9 -0
- package/dist/measure-blocks/float-group.d.ts.map +1 -0
- package/dist/measure-blocks/float-group.js +103 -0
- package/dist/measure-blocks/float-group.js.map +1 -0
- package/dist/measure-blocks/helpers.d.ts +44 -0
- package/dist/measure-blocks/helpers.d.ts.map +1 -0
- package/dist/measure-blocks/helpers.js +43 -0
- package/dist/measure-blocks/helpers.js.map +1 -0
- package/dist/measure-blocks/highlight.d.ts +26 -0
- package/dist/measure-blocks/highlight.d.ts.map +1 -0
- package/dist/measure-blocks/highlight.js +169 -0
- package/dist/measure-blocks/highlight.js.map +1 -0
- package/dist/measure-blocks/image.d.ts +9 -0
- package/dist/measure-blocks/image.d.ts.map +1 -0
- package/dist/measure-blocks/image.js +136 -0
- package/dist/measure-blocks/image.js.map +1 -0
- package/dist/measure-blocks/index.d.ts +24 -0
- package/dist/measure-blocks/index.d.ts.map +1 -0
- package/dist/measure-blocks/index.js +179 -0
- package/dist/measure-blocks/index.js.map +1 -0
- package/dist/measure-blocks/list.d.ts +8 -0
- package/dist/measure-blocks/list.d.ts.map +1 -0
- package/dist/measure-blocks/list.js +108 -0
- package/dist/measure-blocks/list.js.map +1 -0
- package/dist/measure-blocks/simple-blocks.d.ts +18 -0
- package/dist/measure-blocks/simple-blocks.d.ts.map +1 -0
- package/dist/measure-blocks/simple-blocks.js +121 -0
- package/dist/measure-blocks/simple-blocks.js.map +1 -0
- package/dist/measure-blocks/table/columns.d.ts +17 -0
- package/dist/measure-blocks/table/columns.d.ts.map +1 -0
- package/dist/measure-blocks/table/columns.js +83 -0
- package/dist/measure-blocks/table/columns.js.map +1 -0
- package/dist/measure-blocks/table/measure.d.ts +8 -0
- package/dist/measure-blocks/table/measure.d.ts.map +1 -0
- package/dist/measure-blocks/table/measure.js +231 -0
- package/dist/measure-blocks/table/measure.js.map +1 -0
- package/dist/measure-blocks/table/spans.d.ts +25 -0
- package/dist/measure-blocks/table/spans.d.ts.map +1 -0
- package/dist/measure-blocks/table/spans.js +55 -0
- package/dist/measure-blocks/table/spans.js.map +1 -0
- package/dist/measure-blocks/text-blocks.d.ts +17 -0
- package/dist/measure-blocks/text-blocks.d.ts.map +1 -0
- package/dist/measure-blocks/text-blocks.js +242 -0
- package/dist/measure-blocks/text-blocks.js.map +1 -0
- package/dist/measure-text.d.ts +21 -3
- package/dist/measure-text.d.ts.map +1 -1
- package/dist/measure-text.js +87 -36
- package/dist/measure-text.js.map +1 -1
- package/dist/measure.d.ts +1 -1
- package/dist/measure.d.ts.map +1 -1
- package/dist/measure.js +8 -6
- package/dist/measure.js.map +1 -1
- package/dist/node-polyfill.d.ts.map +1 -1
- package/dist/node-polyfill.js +9 -0
- package/dist/node-polyfill.js.map +1 -1
- package/dist/pipeline-footnotes.d.ts +1 -1
- package/dist/pipeline-footnotes.d.ts.map +1 -1
- package/dist/pipeline-toc.d.ts +1 -1
- package/dist/pipeline-toc.d.ts.map +1 -1
- package/dist/pipeline.d.ts +3 -3
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +4 -5
- package/dist/pipeline.js.map +1 -1
- package/dist/plugin-types.d.ts +1 -1
- package/dist/plugin-types.d.ts.map +1 -1
- package/dist/post-process.d.ts +2 -2
- package/dist/post-process.d.ts.map +1 -1
- package/dist/post-process.js +32 -9
- package/dist/post-process.js.map +1 -1
- package/dist/render-blocks/blockquote.d.ts +7 -0
- package/dist/render-blocks/blockquote.d.ts.map +1 -0
- package/dist/render-blocks/blockquote.js +87 -0
- package/dist/render-blocks/blockquote.js.map +1 -0
- package/dist/render-blocks/callout.d.ts +7 -0
- package/dist/render-blocks/callout.d.ts.map +1 -0
- package/dist/render-blocks/callout.js +84 -0
- package/dist/render-blocks/callout.js.map +1 -0
- package/dist/render-blocks/code.d.ts +7 -0
- package/dist/render-blocks/code.d.ts.map +1 -0
- package/dist/render-blocks/code.js +84 -0
- package/dist/render-blocks/code.js.map +1 -0
- package/dist/render-blocks/footnote.d.ts +11 -0
- package/dist/render-blocks/footnote.d.ts.map +1 -0
- package/dist/render-blocks/footnote.js +45 -0
- package/dist/render-blocks/footnote.js.map +1 -0
- package/dist/render-blocks/header-footer.d.ts +11 -0
- package/dist/render-blocks/header-footer.d.ts.map +1 -0
- package/dist/render-blocks/header-footer.js +56 -0
- package/dist/render-blocks/header-footer.js.map +1 -0
- package/dist/render-blocks/hr.d.ts +7 -0
- package/dist/render-blocks/hr.d.ts.map +1 -0
- package/dist/render-blocks/hr.js +24 -0
- package/dist/render-blocks/hr.js.map +1 -0
- package/dist/render-blocks/image.d.ts +9 -0
- package/dist/render-blocks/image.d.ts.map +1 -0
- package/dist/render-blocks/image.js +135 -0
- package/dist/render-blocks/image.js.map +1 -0
- package/dist/render-blocks/index.d.ts +17 -0
- package/dist/render-blocks/index.d.ts.map +1 -0
- package/dist/render-blocks/index.js +17 -0
- package/dist/render-blocks/index.js.map +1 -0
- package/dist/render-blocks/list-item.d.ts +7 -0
- package/dist/render-blocks/list-item.d.ts.map +1 -0
- package/dist/render-blocks/list-item.js +80 -0
- package/dist/render-blocks/list-item.js.map +1 -0
- package/dist/render-blocks/rich.d.ts +7 -0
- package/dist/render-blocks/rich.d.ts.map +1 -0
- package/dist/render-blocks/rich.js +160 -0
- package/dist/render-blocks/rich.js.map +1 -0
- package/dist/render-blocks/table.d.ts +7 -0
- package/dist/render-blocks/table.d.ts.map +1 -0
- package/dist/render-blocks/table.js +139 -0
- package/dist/render-blocks/table.js.map +1 -0
- package/dist/render-blocks/text.d.ts +7 -0
- package/dist/render-blocks/text.d.ts.map +1 -0
- package/dist/render-blocks/text.js +183 -0
- package/dist/render-blocks/text.js.map +1 -0
- package/dist/render-blocks/watermark.d.ts +8 -0
- package/dist/render-blocks/watermark.d.ts.map +1 -0
- package/dist/render-blocks/watermark.js +52 -0
- package/dist/render-blocks/watermark.js.map +1 -0
- package/dist/render-extras.d.ts.map +1 -1
- package/dist/render-extras.js +1 -2
- package/dist/render-extras.js.map +1 -1
- package/dist/render-utils.d.ts.map +1 -1
- package/dist/render-utils.js +10 -6
- package/dist/render-utils.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +9 -3
- package/dist/render.js.map +1 -1
- package/dist/rich-text.d.ts +2 -1
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +0 -1
- package/dist/rich-text.js.map +1 -1
- package/dist/types-internal.d.ts +19 -3
- package/dist/types-internal.d.ts.map +1 -1
- package/dist/types-public/document.d.ts +261 -0
- package/dist/types-public/document.d.ts.map +1 -0
- package/dist/types-public/document.js +2 -0
- package/dist/types-public/document.js.map +1 -0
- package/dist/types-public/elements-block.d.ts +246 -0
- package/dist/types-public/elements-block.d.ts.map +1 -0
- package/dist/types-public/elements-block.js +8 -0
- package/dist/types-public/elements-block.js.map +1 -0
- package/dist/types-public/elements-media.d.ts +199 -0
- package/dist/types-public/elements-media.d.ts.map +1 -0
- package/dist/types-public/elements-media.js +2 -0
- package/dist/types-public/elements-media.js.map +1 -0
- package/dist/types-public/elements-text.d.ts +327 -0
- package/dist/types-public/elements-text.d.ts.map +1 -0
- package/dist/types-public/elements-text.js +2 -0
- package/dist/types-public/elements-text.js.map +1 -0
- package/dist/types-public/index.d.ts +14 -0
- package/dist/types-public/index.d.ts.map +1 -0
- package/dist/types-public/index.js +2 -0
- package/dist/types-public/index.js.map +1 -0
- package/dist/types-public/render-options.d.ts +38 -0
- package/dist/types-public/render-options.d.ts.map +1 -0
- package/dist/types-public/render-options.js +2 -0
- package/dist/types-public/render-options.js.map +1 -0
- package/dist/types-public/union.d.ts +13 -0
- package/dist/types-public/union.d.ts.map +1 -0
- package/dist/types-public/union.js +2 -0
- package/dist/types-public/union.js.map +1 -0
- package/dist/types-public/validation.d.ts +64 -0
- package/dist/types-public/validation.d.ts.map +1 -0
- package/dist/types-public/validation.js +2 -0
- package/dist/types-public/validation.js.map +1 -0
- package/dist/types-public.d.ts +5 -1081
- package/dist/types-public.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/validate/document.d.ts +28 -0
- package/dist/validate/document.d.ts.map +1 -0
- package/dist/validate/document.js +295 -0
- package/dist/validate/document.js.map +1 -0
- package/dist/validate/elements/forms-floats.d.ts +19 -0
- package/dist/validate/elements/forms-floats.d.ts.map +1 -0
- package/dist/validate/elements/forms-floats.js +96 -0
- package/dist/validate/elements/forms-floats.js.map +1 -0
- package/dist/validate/elements/list.d.ts +10 -0
- package/dist/validate/elements/list.d.ts.map +1 -0
- package/dist/validate/elements/list.js +66 -0
- package/dist/validate/elements/list.js.map +1 -0
- package/dist/validate/elements/media.d.ts +23 -0
- package/dist/validate/elements/media.d.ts.map +1 -0
- package/dist/validate/elements/media.js +179 -0
- package/dist/validate/elements/media.js.map +1 -0
- package/dist/validate/elements/structural-simple.d.ts +21 -0
- package/dist/validate/elements/structural-simple.d.ts.map +1 -0
- package/dist/validate/elements/structural-simple.js +63 -0
- package/dist/validate/elements/structural-simple.js.map +1 -0
- package/dist/validate/elements/structural.d.ts +12 -0
- package/dist/validate/elements/structural.d.ts.map +1 -0
- package/dist/validate/elements/structural.js +12 -0
- package/dist/validate/elements/structural.js.map +1 -0
- package/dist/validate/elements/table.d.ts +10 -0
- package/dist/validate/elements/table.d.ts.map +1 -0
- package/dist/validate/elements/table.js +165 -0
- package/dist/validate/elements/table.js.map +1 -0
- package/dist/validate/elements/text.d.ts +26 -0
- package/dist/validate/elements/text.d.ts.map +1 -0
- package/dist/validate/elements/text.js +331 -0
- package/dist/validate/elements/text.js.map +1 -0
- package/dist/validate/errors.d.ts +9 -0
- package/dist/validate/errors.d.ts.map +1 -0
- package/dist/validate/errors.js +43 -0
- package/dist/validate/errors.js.map +1 -0
- package/dist/validate/fonts.d.ts +11 -0
- package/dist/validate/fonts.d.ts.map +1 -0
- package/dist/validate/fonts.js +118 -0
- package/dist/validate/fonts.js.map +1 -0
- package/dist/validate/helpers.d.ts +76 -0
- package/dist/validate/helpers.d.ts.map +1 -0
- package/dist/validate/helpers.js +169 -0
- package/dist/validate/helpers.js.map +1 -0
- package/dist/validate/index.d.ts +37 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +279 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/validate.d.ts +6 -18
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +6 -1585
- package/dist/validate.js.map +1 -1
- package/dist/vendor/pretext/VERSION.d.ts +3 -0
- package/dist/vendor/pretext/VERSION.d.ts.map +1 -0
- package/dist/vendor/pretext/VERSION.js +12 -0
- package/dist/vendor/pretext/VERSION.js.map +1 -0
- package/dist/version-check.d.ts +47 -0
- package/dist/version-check.d.ts.map +1 -0
- package/dist/version-check.js +75 -0
- package/dist/version-check.js.map +1 -0
- package/package.json +26 -7
- package/dist/measure-blocks.d.ts +0 -26
- package/dist/measure-blocks.d.ts.map +0 -1
- package/dist/measure-blocks.js +0 -1317
- package/dist/measure-blocks.js.map +0 -1
- package/dist/render-blocks.d.ts +0 -28
- package/dist/render-blocks.d.ts.map +0 -1
- package/dist/render-blocks.js +0 -1059
- package/dist/render-blocks.js.map +0 -1
package/dist/types-public.d.ts
CHANGED
|
@@ -1,1085 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pretext-pdf — Public TypeScript types (
|
|
2
|
+
* pretext-pdf — Public TypeScript types (legacy shim).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The contents of this file moved into src/types-public/ as separate
|
|
5
|
+
* domain-grouped modules. This shim preserves the old import path during
|
|
6
|
+
* v1.4.0. It will be removed once internal consumers are updated.
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
import type { ErrorCode } from './errors.js';
|
|
10
|
-
/**
|
|
11
|
-
* Top-level document descriptor. Named PdfDocument to avoid clash with browser window.Document
|
|
12
|
-
* @public
|
|
13
|
-
*/
|
|
14
|
-
export interface PdfDocument {
|
|
15
|
-
/** Page size. Default: 'A4' (595×842 pt). Custom: [width, height] in pt. */
|
|
16
|
-
pageSize?: NamedPageSize | [number, number];
|
|
17
|
-
/** Page margins in pt. Default: all 72pt (1 inch). */
|
|
18
|
-
margins?: Partial<Margins>;
|
|
19
|
-
/** Default font family for body text. Default: 'Inter' */
|
|
20
|
-
defaultFont?: string;
|
|
21
|
-
/** Default font size in pt. Default: 12 */
|
|
22
|
-
defaultFontSize?: number;
|
|
23
|
-
/** Default line height in pt. Default: fontSize * 1.5 */
|
|
24
|
-
defaultLineHeight?: number;
|
|
25
|
-
/** Custom fonts to load and embed. Inter 400 is always available without specifying. */
|
|
26
|
-
fonts?: FontSpec[];
|
|
27
|
-
/** Header rendered at top of every page. Supports \{\{pageNumber\}\} and \{\{totalPages\}\}. */
|
|
28
|
-
header?: HeaderFooterSpec;
|
|
29
|
-
/** Footer rendered at bottom of every page. Supports \{\{pageNumber\}\} and \{\{totalPages\}\}. */
|
|
30
|
-
footer?: HeaderFooterSpec;
|
|
31
|
-
/** Watermark overlay rendered on every page behind content. Text or image. */
|
|
32
|
-
watermark?: WatermarkSpec;
|
|
33
|
-
/** Password protection and permission control for the output PDF. */
|
|
34
|
-
encryption?: EncryptionSpec;
|
|
35
|
-
/** Visual signature placeholder drawn on the specified page. */
|
|
36
|
-
signature?: SignatureSpec;
|
|
37
|
-
/** PDF bookmark outline (sidebar navigation). Defaults to enabled. Set to false to disable bookmarks entirely. */
|
|
38
|
-
bookmarks?: false | BookmarkConfig;
|
|
39
|
-
/** Automatic word hyphenation using Liang's algorithm. Requires installing the matching `hyphenation.XX` npm package. */
|
|
40
|
-
hyphenation?: HyphenationConfig;
|
|
41
|
-
/** PDF document metadata written into the file's properties. */
|
|
42
|
-
metadata?: DocumentMetadata;
|
|
43
|
-
/**
|
|
44
|
-
* Default style applied to every paragraph and heading that does not
|
|
45
|
-
* explicitly set the field. Explicit element-level values always win.
|
|
46
|
-
*/
|
|
47
|
-
defaultParagraphStyle?: {
|
|
48
|
-
fontSize?: number;
|
|
49
|
-
lineHeight?: number;
|
|
50
|
-
fontFamily?: string;
|
|
51
|
-
fontWeight?: 400 | 700;
|
|
52
|
-
color?: string;
|
|
53
|
-
align?: 'left' | 'center' | 'right' | 'justify';
|
|
54
|
-
letterSpacing?: number;
|
|
55
|
-
spaceBefore?: number;
|
|
56
|
-
spaceAfter?: number;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Page-range overrides for header/footer. Sections are matched by page number
|
|
60
|
-
* (1-based). The first matching section wins. Falls back to doc.header/footer.
|
|
61
|
-
*/
|
|
62
|
-
sections?: Array<{
|
|
63
|
-
/** First page this section applies to (1-based, inclusive). Default: 1 */
|
|
64
|
-
fromPage?: number;
|
|
65
|
-
/** Last page this section applies to (1-based, inclusive). Default: Infinity */
|
|
66
|
-
toPage?: number;
|
|
67
|
-
header?: PdfDocument['header'];
|
|
68
|
-
footer?: PdfDocument['footer'];
|
|
69
|
-
}>;
|
|
70
|
-
/** Document content elements, rendered top-to-bottom. */
|
|
71
|
-
content: ContentElement[];
|
|
72
|
-
/** If true, flatten all form fields into static content (no longer interactive). Default: false */
|
|
73
|
-
flattenForms?: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* Called when an image fails to load (file not found, URL error, embed failure).
|
|
76
|
-
* Return 'skip' to silently omit the image (default behavior).
|
|
77
|
-
* Return 'throw' to abort rendering with the original error.
|
|
78
|
-
* If omitted, failures are logged as warnings and the image is skipped.
|
|
79
|
-
*/
|
|
80
|
-
onImageLoadError?: (src: string | Uint8Array, error: Error) => 'skip' | 'throw';
|
|
81
|
-
/**
|
|
82
|
-
* Called when a form field fails to render (field type error, font missing, etc.).
|
|
83
|
-
* Return 'skip' to silently omit the field.
|
|
84
|
-
* Return 'throw' to abort rendering with the original error.
|
|
85
|
-
* If omitted, failures are logged as warnings and the field is skipped.
|
|
86
|
-
*/
|
|
87
|
-
onFormFieldError?: (fieldName: string | undefined, error: Error) => 'skip' | 'throw';
|
|
88
|
-
/**
|
|
89
|
-
* Document creation date written into PDF metadata.
|
|
90
|
-
* Accepts an ISO 8601 string or a Date object. Default: current date/time.
|
|
91
|
-
*/
|
|
92
|
-
renderDate?: string | Date;
|
|
93
|
-
/**
|
|
94
|
-
* Restrict filesystem access to these absolute directory paths.
|
|
95
|
-
* When set, any image/SVG/font `src` pointing outside these directories
|
|
96
|
-
* throws PATH_TRAVERSAL. Strongly recommended when src values originate
|
|
97
|
-
* from user-controlled input to prevent arbitrary file reads.
|
|
98
|
-
*
|
|
99
|
-
* Example: `allowedFileDirs: ['/app/assets', '/tmp/uploads']`
|
|
100
|
-
*/
|
|
101
|
-
allowedFileDirs?: string[];
|
|
102
|
-
}
|
|
103
|
-
/** @public */
|
|
104
|
-
export interface DocumentMetadata {
|
|
105
|
-
/** Document title shown in PDF viewer title bar. */
|
|
106
|
-
title?: string;
|
|
107
|
-
/** Author name. */
|
|
108
|
-
author?: string;
|
|
109
|
-
/** Subject / description. */
|
|
110
|
-
subject?: string;
|
|
111
|
-
/** Searchable keywords. */
|
|
112
|
-
keywords?: string[];
|
|
113
|
-
/** Producing application name. Default: 'pretext-pdf' */
|
|
114
|
-
creator?: string;
|
|
115
|
-
/** BCP47 language tag e.g. 'en-US', 'hi', 'ar'. Sets the PDF /Lang catalog attribute for accessibility. */
|
|
116
|
-
language?: string;
|
|
117
|
-
/** PDF producer field shown in document properties e.g. 'MyApp v2.1'. */
|
|
118
|
-
producer?: string;
|
|
119
|
-
}
|
|
120
|
-
/** @public */
|
|
121
|
-
export interface Margins {
|
|
122
|
-
top: number;
|
|
123
|
-
bottom: number;
|
|
124
|
-
left: number;
|
|
125
|
-
right: number;
|
|
126
|
-
}
|
|
127
|
-
/** @public */
|
|
128
|
-
export interface FontSpec {
|
|
129
|
-
/** Font family name, e.g. 'Roboto'. Used in fontFamily fields. */
|
|
130
|
-
family: string;
|
|
131
|
-
/** Font weight. Default: 400 */
|
|
132
|
-
weight?: 400 | 700;
|
|
133
|
-
/** Font style. Default: 'normal' */
|
|
134
|
-
style?: 'normal' | 'italic';
|
|
135
|
-
/** Absolute file path (Node.js) or font bytes (browser). */
|
|
136
|
-
src: string | Uint8Array;
|
|
137
|
-
}
|
|
138
|
-
/** @public */
|
|
139
|
-
export interface HeaderFooterSpec {
|
|
140
|
-
/** Text content. Use \{\{pageNumber\}\} and \{\{totalPages\}\} as tokens. */
|
|
141
|
-
text: string;
|
|
142
|
-
/** Font size in pt. Default: 10 */
|
|
143
|
-
fontSize?: number;
|
|
144
|
-
/** Alignment. Default: 'center' */
|
|
145
|
-
align?: 'left' | 'center' | 'right';
|
|
146
|
-
/** Font family. Default: document.defaultFont */
|
|
147
|
-
fontFamily?: string;
|
|
148
|
-
/** Font weight. Default: 400 */
|
|
149
|
-
fontWeight?: 400 | 700;
|
|
150
|
-
/** Text color as 6-digit hex. Default: '#666666' */
|
|
151
|
-
color?: string;
|
|
152
|
-
}
|
|
153
|
-
/** @public */
|
|
154
|
-
export interface WatermarkSpec {
|
|
155
|
-
/** Text to render as watermark. Either text or image required. */
|
|
156
|
-
text?: string;
|
|
157
|
-
/** Absolute path or Uint8Array of a PNG/JPG image. Either text or image required. */
|
|
158
|
-
image?: string | Uint8Array;
|
|
159
|
-
/** Font family for text watermark. Default: document.defaultFont */
|
|
160
|
-
fontFamily?: string;
|
|
161
|
-
/** Font weight. Default: 400 */
|
|
162
|
-
fontWeight?: 400 | 700;
|
|
163
|
-
/** Font size in pt. Default: auto-computed from page diagonal */
|
|
164
|
-
fontSize?: number;
|
|
165
|
-
/** Color as 6-digit hex. Default: '#CCCCCC' */
|
|
166
|
-
color?: string;
|
|
167
|
-
/** Opacity 0.0–1.0. Default: 0.3 */
|
|
168
|
-
opacity?: number;
|
|
169
|
-
/** Rotation in degrees (counter-clockwise). Default: -45 */
|
|
170
|
-
rotation?: number;
|
|
171
|
-
}
|
|
172
|
-
/** @public */
|
|
173
|
-
export interface EncryptionSpec {
|
|
174
|
-
/** Password required to OPEN the document. If omitted, document opens without a password
|
|
175
|
-
* but permissions still apply. */
|
|
176
|
-
userPassword?: string;
|
|
177
|
-
/** Password for full unrestricted access. If omitted, a random owner password is generated
|
|
178
|
-
* (preventing tools from bypassing permissions). */
|
|
179
|
-
ownerPassword?: string;
|
|
180
|
-
/** Permissions granted to anyone who opens the document (with or without user password).
|
|
181
|
-
* Only applied when encryption is active. */
|
|
182
|
-
permissions?: {
|
|
183
|
-
/** Allow printing. Default: true */
|
|
184
|
-
printing?: boolean;
|
|
185
|
-
/** Allow copying text/graphics. Default: true */
|
|
186
|
-
copying?: boolean;
|
|
187
|
-
/** Allow modifying content. Default: false */
|
|
188
|
-
modifying?: boolean;
|
|
189
|
-
/** Allow adding/editing annotations and forms. Default: true */
|
|
190
|
-
annotating?: boolean;
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
/** @public */
|
|
194
|
-
export interface SignatureSpec {
|
|
195
|
-
/** Name shown as "Signed by: X" inside the box. Optional. */
|
|
196
|
-
signerName?: string;
|
|
197
|
-
/** Short reason e.g. "I approve this document". Shown at bottom. Optional. */
|
|
198
|
-
reason?: string;
|
|
199
|
-
/** Location string e.g. "New Delhi, India". Shown at bottom. Optional. */
|
|
200
|
-
location?: string;
|
|
201
|
-
/** X position from left edge of page in pt. Default: left margin (72pt). */
|
|
202
|
-
x?: number;
|
|
203
|
-
/** Y position from TOP of page in pt. Default: 40pt from bottom of page. */
|
|
204
|
-
y?: number;
|
|
205
|
-
/** Width of signature box in pt. Default: 200 */
|
|
206
|
-
width?: number;
|
|
207
|
-
/** Height of signature box in pt. Default: 60 */
|
|
208
|
-
height?: number;
|
|
209
|
-
/** Page index (0-based). Default: last page. */
|
|
210
|
-
page?: number;
|
|
211
|
-
/** Border color as 6-digit hex. Default: '#000000' */
|
|
212
|
-
borderColor?: string;
|
|
213
|
-
/** Font size for text inside box in pt. Default: 8 */
|
|
214
|
-
fontSize?: number;
|
|
215
|
-
/**
|
|
216
|
-
* Path to a PKCS#12 (.p12/.pfx) certificate file, or Uint8Array of cert bytes.
|
|
217
|
-
* When provided, a real PKCS#7/CMS digital signature is embedded in the PDF.
|
|
218
|
-
* Requires the `@signpdf/signpdf` optional peer dependency.
|
|
219
|
-
*/
|
|
220
|
-
p12?: string | Uint8Array;
|
|
221
|
-
/** Passphrase to decrypt the P12 certificate. Omit if cert has no passphrase. */
|
|
222
|
-
passphrase?: string;
|
|
223
|
-
/** Contact info (e.g. email) embedded in the signature dictionary. Default: '' */
|
|
224
|
-
contactInfo?: string;
|
|
225
|
-
/** If true, skip rendering the visual signature box (crypto-only invisible signing). Default: false */
|
|
226
|
-
invisible?: boolean;
|
|
227
|
-
}
|
|
228
|
-
/** @public */
|
|
229
|
-
export interface BookmarkConfig {
|
|
230
|
-
/** Minimum heading level to include in outline. Default: 1 */
|
|
231
|
-
minLevel?: 1 | 2 | 3 | 4;
|
|
232
|
-
/** Maximum heading level to include in outline. Default: 4 */
|
|
233
|
-
maxLevel?: 1 | 2 | 3 | 4;
|
|
234
|
-
}
|
|
235
|
-
/** @public */
|
|
236
|
-
export interface HyphenationConfig {
|
|
237
|
-
/** Language code matching the `hyphenation.XX` npm package. e.g. 'en-us', 'de', 'fr'. Required. */
|
|
238
|
-
language: string;
|
|
239
|
-
/** Minimum word length to attempt hyphenation. Default: 6 */
|
|
240
|
-
minWordLength?: number;
|
|
241
|
-
/** Minimum characters before the hyphen. Default: 2 */
|
|
242
|
-
leftMin?: number;
|
|
243
|
-
/** Minimum characters after the hyphen. Default: 3 */
|
|
244
|
-
rightMin?: number;
|
|
245
|
-
}
|
|
246
|
-
/** @public */
|
|
247
|
-
export interface AnnotationSpec {
|
|
248
|
-
/** Text content shown in the popup. Required. */
|
|
249
|
-
contents: string;
|
|
250
|
-
/** Author name shown in popup header. Optional. */
|
|
251
|
-
author?: string;
|
|
252
|
-
/** Annotation color as 6-digit hex. Default: '#FFFF00' (yellow) */
|
|
253
|
-
color?: string;
|
|
254
|
-
/** Whether the popup is open by default. Default: false */
|
|
255
|
-
open?: boolean;
|
|
256
|
-
}
|
|
257
|
-
/** @public */
|
|
258
|
-
export interface CommentElement {
|
|
259
|
-
type: 'comment';
|
|
260
|
-
/** Popup text content. Required. */
|
|
261
|
-
contents: string;
|
|
262
|
-
/** Author name. Optional. */
|
|
263
|
-
author?: string;
|
|
264
|
-
/** Color as 6-digit hex. Default: '#FFFF00' */
|
|
265
|
-
color?: string;
|
|
266
|
-
/** Whether popup is open by default. Default: false */
|
|
267
|
-
open?: boolean;
|
|
268
|
-
/** Extra space below in pt. Default: 0 */
|
|
269
|
-
spaceAfter?: number;
|
|
270
|
-
}
|
|
271
|
-
/** @public */
|
|
272
|
-
export interface AssemblyPart {
|
|
273
|
-
/** Render this document and include its pages */
|
|
274
|
-
doc?: PdfDocument;
|
|
275
|
-
/** Pre-rendered PDF bytes to include directly */
|
|
276
|
-
pdf?: Uint8Array;
|
|
277
|
-
}
|
|
278
|
-
/** @public */
|
|
279
|
-
export interface FormFieldElement {
|
|
280
|
-
type: 'form-field';
|
|
281
|
-
/** AcroForm field type. */
|
|
282
|
-
fieldType: 'text' | 'checkbox' | 'radio' | 'dropdown' | 'button';
|
|
283
|
-
/** Unique field name within the document. Required. */
|
|
284
|
-
name: string;
|
|
285
|
-
/** Label text rendered above the interactive field. Optional. */
|
|
286
|
-
label?: string;
|
|
287
|
-
/** Placeholder text for text fields. */
|
|
288
|
-
placeholder?: string;
|
|
289
|
-
/** Pre-filled default value for text fields. */
|
|
290
|
-
defaultValue?: string;
|
|
291
|
-
/** Makes text field multi-line. Default: false */
|
|
292
|
-
multiline?: boolean;
|
|
293
|
-
/** Maximum character length for text fields. */
|
|
294
|
-
maxLength?: number;
|
|
295
|
-
/** Initial checked state for checkboxes. Default: false */
|
|
296
|
-
checked?: boolean;
|
|
297
|
-
/** Option list for radio groups and dropdowns. */
|
|
298
|
-
options?: Array<{
|
|
299
|
-
value: string;
|
|
300
|
-
label: string;
|
|
301
|
-
}>;
|
|
302
|
-
/** Pre-selected value for radio groups and dropdowns. */
|
|
303
|
-
defaultSelected?: string;
|
|
304
|
-
/** Field width in pt. Default: full content width */
|
|
305
|
-
width?: number;
|
|
306
|
-
/** Field height in pt. Default: auto per fieldType (text=24, multiline=60, radio=20×options, others=24) */
|
|
307
|
-
height?: number;
|
|
308
|
-
/** Font size for field text in pt. Default: doc.defaultFontSize */
|
|
309
|
-
fontSize?: number;
|
|
310
|
-
/** Field border color as 6-digit hex. Default: '#999999' */
|
|
311
|
-
borderColor?: string;
|
|
312
|
-
/** Field background color as 6-digit hex. Default: '#FFFFFF' */
|
|
313
|
-
backgroundColor?: string;
|
|
314
|
-
/** Extra space below this field in pt. Default: 8 */
|
|
315
|
-
spaceAfter?: number;
|
|
316
|
-
/** Extra space above this field in pt. Default: 0 */
|
|
317
|
-
spaceBefore?: number;
|
|
318
|
-
/** If true, never break this element across pages. Default: true */
|
|
319
|
-
keepTogether?: boolean;
|
|
320
|
-
}
|
|
321
|
-
/** @public */
|
|
322
|
-
export type ContentElement = ParagraphElement | HeadingElement | SpacerElement | TableElement | ImageElement | SvgElement | QrCodeElement | BarcodeElement | ChartElement | ListElement | HorizontalRuleElement | PageBreakElement | CodeBlockElement | RichParagraphElement | BlockquoteElement | TocElement | TocEntryElement | CommentElement | FormFieldElement | CalloutElement | FootnoteDefElement | FloatGroupElement;
|
|
323
|
-
/** @public */
|
|
324
|
-
export interface ParagraphElement {
|
|
325
|
-
type: 'paragraph';
|
|
326
|
-
text: string;
|
|
327
|
-
/** Text direction: 'ltr' = left-to-right, 'rtl' = right-to-left, 'auto' = detect from character dominance. Default: 'auto' */
|
|
328
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
329
|
-
/** Font size in pt. Default: document.defaultFontSize */
|
|
330
|
-
fontSize?: number;
|
|
331
|
-
/** Line height in pt. Default: fontSize * 1.5 */
|
|
332
|
-
lineHeight?: number;
|
|
333
|
-
/** Font family name. Default: document.defaultFont */
|
|
334
|
-
fontFamily?: string;
|
|
335
|
-
/** Font weight. Default: 400 */
|
|
336
|
-
fontWeight?: 400 | 700;
|
|
337
|
-
/** Text color as 6-digit hex. Default: '#000000' */
|
|
338
|
-
color?: string;
|
|
339
|
-
/** Text alignment. Default: 'left' for LTR, 'right' for RTL (auto-detected) */
|
|
340
|
-
align?: 'left' | 'center' | 'right' | 'justify';
|
|
341
|
-
/** Background color as 6-digit hex. Drawn behind the text block. Default: none */
|
|
342
|
-
bgColor?: string;
|
|
343
|
-
/** Extra space below this element in pt. Default: 0 */
|
|
344
|
-
spaceAfter?: number;
|
|
345
|
-
/** Extra space above this element in pt. Default: 0 */
|
|
346
|
-
spaceBefore?: number;
|
|
347
|
-
/** If true, never break this block across pages. Default: false */
|
|
348
|
-
keepTogether?: boolean;
|
|
349
|
-
/** Underline all text in this element. Default: false */
|
|
350
|
-
underline?: boolean;
|
|
351
|
-
/** Strikethrough all text in this element. Default: false */
|
|
352
|
-
strikethrough?: boolean;
|
|
353
|
-
/** Clickable URL for the entire paragraph. Opens in browser when clicked. */
|
|
354
|
-
url?: string;
|
|
355
|
-
/** Number of columns for multi-column layout. Default: 1 (single column) */
|
|
356
|
-
columns?: number;
|
|
357
|
-
/** Gap between columns in pt. Default: 24 */
|
|
358
|
-
columnGap?: number;
|
|
359
|
-
/** Set to false to disable hyphenation for this element. Default: inherits from doc.hyphenation. */
|
|
360
|
-
hyphenate?: false;
|
|
361
|
-
/** Extra spacing between characters in pt. Default: 0 */
|
|
362
|
-
letterSpacing?: number;
|
|
363
|
-
/** Simulate small-caps: uppercase text at 80% font size. Default: false */
|
|
364
|
-
smallCaps?: boolean;
|
|
365
|
-
/**
|
|
366
|
-
* Render digits (0–9) at a fixed slot width (widest digit in font).
|
|
367
|
-
* Ensures numeric columns align regardless of digit width variation (1 vs 0 etc.).
|
|
368
|
-
*/
|
|
369
|
-
tabularNumbers?: boolean;
|
|
370
|
-
/** PDF sticky-note annotation attached to this element. */
|
|
371
|
-
annotation?: AnnotationSpec;
|
|
372
|
-
}
|
|
373
|
-
/** @public */
|
|
374
|
-
export interface HeadingElement {
|
|
375
|
-
type: 'heading';
|
|
376
|
-
level: 1 | 2 | 3 | 4;
|
|
377
|
-
text: string;
|
|
378
|
-
/** Text direction: 'ltr' = left-to-right, 'rtl' = right-to-left, 'auto' = detect from character dominance. Default: 'auto' */
|
|
379
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
380
|
-
/** Font family override. Default: document.defaultFont */
|
|
381
|
-
fontFamily?: string;
|
|
382
|
-
/** Font weight override. Default: 700 */
|
|
383
|
-
fontWeight?: 400 | 700;
|
|
384
|
-
/** Font size override in pt. Default: per-level default (h1=28, h2=22, h3=18, h4=15) */
|
|
385
|
-
fontSize?: number;
|
|
386
|
-
/** Line height override in pt. Default: fontSize * 1.3 */
|
|
387
|
-
lineHeight?: number;
|
|
388
|
-
/** Text alignment. Default: 'left' for LTR, 'right' for RTL (auto-detected) */
|
|
389
|
-
align?: 'left' | 'center' | 'right' | 'justify';
|
|
390
|
-
/** Text color as 6-digit hex. Default: '#000000' */
|
|
391
|
-
color?: string;
|
|
392
|
-
/** Background color as 6-digit hex. Drawn behind the text block. Default: none */
|
|
393
|
-
bgColor?: string;
|
|
394
|
-
/** Extra space above this element in pt. Default: 0 */
|
|
395
|
-
spaceBefore?: number;
|
|
396
|
-
/** Extra space below this element in pt. Default: per-level default */
|
|
397
|
-
spaceAfter?: number;
|
|
398
|
-
/** If true, never break this block across pages. Default: true */
|
|
399
|
-
keepTogether?: boolean;
|
|
400
|
-
/** Underline all text in this element. Default: false */
|
|
401
|
-
underline?: boolean;
|
|
402
|
-
/** Strikethrough all text in this element. Default: false */
|
|
403
|
-
strikethrough?: boolean;
|
|
404
|
-
/** Set to false to exclude this heading from the PDF bookmark outline. Default: included. */
|
|
405
|
-
bookmark?: false;
|
|
406
|
-
/** Set to false to disable hyphenation for this element. Default: inherits from doc.hyphenation. */
|
|
407
|
-
hyphenate?: false;
|
|
408
|
-
/** Clickable URL for the entire heading. Opens in browser when clicked. */
|
|
409
|
-
url?: string;
|
|
410
|
-
/** Named anchor destination for internal links. Allows other spans to link to this heading via href: '#anchorId'. */
|
|
411
|
-
anchor?: string;
|
|
412
|
-
/** Extra spacing between characters in pt. Default: 0 */
|
|
413
|
-
letterSpacing?: number;
|
|
414
|
-
/** Simulate small-caps: uppercase text at 80% font size. Default: false */
|
|
415
|
-
smallCaps?: boolean;
|
|
416
|
-
/**
|
|
417
|
-
* Render digits (0–9) at a fixed slot width (widest digit in font).
|
|
418
|
-
* Ensures numeric columns align regardless of digit width variation (1 vs 0 etc.).
|
|
419
|
-
*/
|
|
420
|
-
tabularNumbers?: boolean;
|
|
421
|
-
/** PDF sticky-note annotation attached to this element. */
|
|
422
|
-
annotation?: AnnotationSpec;
|
|
423
|
-
}
|
|
424
|
-
/** @public */
|
|
425
|
-
export interface SpacerElement {
|
|
426
|
-
type: 'spacer';
|
|
427
|
-
/** Height in pt */
|
|
428
|
-
height: number;
|
|
429
|
-
}
|
|
430
|
-
/** @public */
|
|
431
|
-
export interface TableElement {
|
|
432
|
-
type: 'table';
|
|
433
|
-
columns: ColumnDef[];
|
|
434
|
-
rows: TableRow[];
|
|
435
|
-
/** Default text direction for all cells. Cells can override individually. Default: 'auto' */
|
|
436
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
437
|
-
/** Number of rows treated as headers (repeated on continuation pages). Default: auto-detect rows with isHeader: true */
|
|
438
|
-
headerRows?: number;
|
|
439
|
-
/** Border color (hex). Default: '#cccccc' */
|
|
440
|
-
borderColor?: string;
|
|
441
|
-
/** Border thickness in pt. Default: 0.5 */
|
|
442
|
-
borderWidth?: number;
|
|
443
|
-
/** Background color for header rows (hex). Default: '#f5f5f5' */
|
|
444
|
-
headerBgColor?: string;
|
|
445
|
-
/** Cell font size in pt. Default: document.defaultFontSize */
|
|
446
|
-
fontSize?: number;
|
|
447
|
-
/** Horizontal cell padding in pt. Default: 8 */
|
|
448
|
-
cellPaddingH?: number;
|
|
449
|
-
/** Vertical cell padding in pt. Default: 6 */
|
|
450
|
-
cellPaddingV?: number;
|
|
451
|
-
/** Space below table in pt. Default: 0 */
|
|
452
|
-
spaceAfter?: number;
|
|
453
|
-
/** Space above table in pt. Default: 0 */
|
|
454
|
-
spaceBefore?: number;
|
|
455
|
-
}
|
|
456
|
-
/** @public */
|
|
457
|
-
export interface ColumnDef {
|
|
458
|
-
/** Fixed pt (e.g. 80), proportional fraction (e.g. '2*' or '*'), or 'auto' (shrink-to-content). */
|
|
459
|
-
width: number | string;
|
|
460
|
-
/** Column default text alignment. Default: 'left' */
|
|
461
|
-
align?: 'left' | 'center' | 'right';
|
|
462
|
-
}
|
|
463
|
-
/** @public */
|
|
464
|
-
export interface TableRow {
|
|
465
|
-
cells: TableCell[];
|
|
466
|
-
/** Mark row as a header (styled + repeated on continuation pages). Default: false */
|
|
467
|
-
isHeader?: boolean;
|
|
468
|
-
}
|
|
469
|
-
/** @public */
|
|
470
|
-
export interface TableCell {
|
|
471
|
-
text: string;
|
|
472
|
-
/** Text direction: 'ltr', 'rtl', or 'auto'. Default: 'auto' */
|
|
473
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
474
|
-
/** Overrides column alignment for this cell */
|
|
475
|
-
align?: 'left' | 'center' | 'right';
|
|
476
|
-
fontWeight?: 400 | 700;
|
|
477
|
-
/** Font family override for this cell. Default: document.defaultFont */
|
|
478
|
-
fontFamily?: string;
|
|
479
|
-
/** Font size override for this cell in pt. Default: table.fontSize ?? document.defaultFontSize */
|
|
480
|
-
fontSize?: number;
|
|
481
|
-
/** Text color (hex). Default: '#000000' */
|
|
482
|
-
color?: string;
|
|
483
|
-
/** Cell background color (hex). Optional — overrides row/table default. */
|
|
484
|
-
bgColor?: string;
|
|
485
|
-
/** Number of columns this cell spans. Default: 1 */
|
|
486
|
-
colspan?: number;
|
|
487
|
-
/** Number of rows this cell spans. Default: 1 */
|
|
488
|
-
rowspan?: number;
|
|
489
|
-
/**
|
|
490
|
-
* Render digits (0–9) at a fixed slot width (widest digit in font).
|
|
491
|
-
* Ensures numeric columns align regardless of digit width variation (1 vs 0 etc.).
|
|
492
|
-
*/
|
|
493
|
-
tabularNumbers?: boolean;
|
|
494
|
-
}
|
|
495
|
-
/** @public */
|
|
496
|
-
export interface ImageElement {
|
|
497
|
-
type: 'image';
|
|
498
|
-
/** Absolute file path (Node.js) or raw bytes (browser/Node) */
|
|
499
|
-
src: string | Uint8Array;
|
|
500
|
-
/** Image format. Default: 'auto' (detected from magic bytes, then file extension). */
|
|
501
|
-
format?: 'png' | 'jpg' | 'auto';
|
|
502
|
-
/** Render width in pt. Omit to auto-size to contentWidth. */
|
|
503
|
-
width?: number;
|
|
504
|
-
/** Render height in pt. Omit to preserve aspect ratio. */
|
|
505
|
-
height?: number;
|
|
506
|
-
/** Horizontal alignment within content area. Default: 'left' */
|
|
507
|
-
align?: 'left' | 'center' | 'right';
|
|
508
|
-
/** Space below image in pt. Default: 0 */
|
|
509
|
-
spaceAfter?: number;
|
|
510
|
-
/** Space above image in pt. Default: 0 */
|
|
511
|
-
spaceBefore?: number;
|
|
512
|
-
/**
|
|
513
|
-
* If set, renders image + floatText as a two-column composite block.
|
|
514
|
-
* 'left' = image left, text right. 'right' = image right, text left.
|
|
515
|
-
* NOTE: Constrained float only — floatText is a single paragraph alongside the image.
|
|
516
|
-
*/
|
|
517
|
-
float?: 'left' | 'right';
|
|
518
|
-
/** Image column width in pt. Default: 35% of content width. */
|
|
519
|
-
floatWidth?: number;
|
|
520
|
-
/** Gap between image and text columns in pt. Default: 12 */
|
|
521
|
-
floatGap?: number;
|
|
522
|
-
/** Text rendered alongside the image. Required when float is set. Mutually exclusive with floatSpans. */
|
|
523
|
-
floatText?: string;
|
|
524
|
-
/** Rich-text spans rendered alongside the image. Alternative to floatText for mixed-style float text. */
|
|
525
|
-
floatSpans?: InlineSpan[];
|
|
526
|
-
/** Font size for floatText in pt. Default: doc.defaultFontSize */
|
|
527
|
-
floatFontSize?: number;
|
|
528
|
-
/** Font family for floatText. Default: doc.defaultFont */
|
|
529
|
-
floatFontFamily?: string;
|
|
530
|
-
/** Text color for floatText as 6-digit hex. Default: '#000000' */
|
|
531
|
-
floatColor?: string;
|
|
532
|
-
}
|
|
533
|
-
/** @public */
|
|
534
|
-
export interface FloatGroupElement {
|
|
535
|
-
type: 'float-group';
|
|
536
|
-
/** The image to float left or right. */
|
|
537
|
-
image: {
|
|
538
|
-
src: string | Uint8Array;
|
|
539
|
-
format?: 'png' | 'jpg' | 'auto';
|
|
540
|
-
height?: number;
|
|
541
|
-
};
|
|
542
|
-
/** Image position. 'left' = image left, text right. 'right' = image right, text left. */
|
|
543
|
-
float: 'left' | 'right';
|
|
544
|
-
/** Image column width in pt. Default: 35% of content width. */
|
|
545
|
-
floatWidth?: number;
|
|
546
|
-
/** Gap between image and text columns in pt. Default: 12 */
|
|
547
|
-
floatGap?: number;
|
|
548
|
-
/** Content elements rendered in the text column, top-to-bottom. */
|
|
549
|
-
content: Array<ParagraphElement | HeadingElement | RichParagraphElement>;
|
|
550
|
-
/** Space above the entire float group in pt. Default: 0 */
|
|
551
|
-
spaceBefore?: number;
|
|
552
|
-
/** Space below the entire float group in pt. Default: 12 */
|
|
553
|
-
spaceAfter?: number;
|
|
554
|
-
}
|
|
555
|
-
/** @public */
|
|
556
|
-
export interface SvgElement {
|
|
557
|
-
type: 'svg';
|
|
558
|
-
/** Inline SVG markup string. Either `svg` or `src` is required. */
|
|
559
|
-
svg?: string;
|
|
560
|
-
/**
|
|
561
|
-
* Path to an SVG file (absolute path) or an https:// URL.
|
|
562
|
-
* Either `svg` or `src` is required.
|
|
563
|
-
* @example src: path.join(__dirname, 'chart.svg')
|
|
564
|
-
* @example src: 'https://example.com/logo.svg'
|
|
565
|
-
*/
|
|
566
|
-
src?: string;
|
|
567
|
-
/** Rendered width in pt. Default: available content width */
|
|
568
|
-
width?: number;
|
|
569
|
-
/** Rendered height in pt. Auto-computed from SVG viewBox if not set */
|
|
570
|
-
height?: number;
|
|
571
|
-
/** Alignment within content area. Default: 'left' */
|
|
572
|
-
align?: 'left' | 'center' | 'right';
|
|
573
|
-
/** Space above element in pt. Default: 8 */
|
|
574
|
-
spaceBefore?: number;
|
|
575
|
-
/** Space below element in pt. Default: 8 */
|
|
576
|
-
spaceAfter?: number;
|
|
577
|
-
}
|
|
578
|
-
/** @public */
|
|
579
|
-
export interface QrCodeElement {
|
|
580
|
-
type: 'qr-code';
|
|
581
|
-
/** The data to encode (URL, text, UPI string, etc.). Required. Max 2953 chars at error-correction L. */
|
|
582
|
-
data: string;
|
|
583
|
-
/** Rendered size in pt (width = height). Default: 80 */
|
|
584
|
-
size?: number;
|
|
585
|
-
/** QR error correction level. Default: 'M' */
|
|
586
|
-
errorCorrectionLevel?: 'L' | 'M' | 'Q' | 'H';
|
|
587
|
-
/** Module color as 6-digit hex. Default: '#000000' */
|
|
588
|
-
foreground?: string;
|
|
589
|
-
/** Background color as 6-digit hex. Default: '#ffffff' */
|
|
590
|
-
background?: string;
|
|
591
|
-
/** Quiet-zone modules around the symbol. Default: 4 */
|
|
592
|
-
margin?: number;
|
|
593
|
-
/** Alignment within content area. Default: 'left' */
|
|
594
|
-
align?: 'left' | 'center' | 'right';
|
|
595
|
-
/** Space above element in pt. Default: 8 */
|
|
596
|
-
spaceBefore?: number;
|
|
597
|
-
/** Space below element in pt. Default: 8 */
|
|
598
|
-
spaceAfter?: number;
|
|
599
|
-
}
|
|
600
|
-
/** @public */
|
|
601
|
-
export interface BarcodeElement {
|
|
602
|
-
type: 'barcode';
|
|
603
|
-
/**
|
|
604
|
-
* Barcode symbology. Common values: 'ean13', 'ean8', 'upca', 'code128',
|
|
605
|
-
* 'code39', 'qrcode', 'pdf417', 'datamatrix', 'itf14', 'azteccode'.
|
|
606
|
-
* Full list: https://bwip-js.metafloor.com/
|
|
607
|
-
*/
|
|
608
|
-
symbology: string;
|
|
609
|
-
/** Data to encode. Format requirements vary by symbology. */
|
|
610
|
-
data: string;
|
|
611
|
-
/** Rendered width in pt. Default: 200 */
|
|
612
|
-
width?: number;
|
|
613
|
-
/** Rendered height in pt. Default: 60 */
|
|
614
|
-
height?: number;
|
|
615
|
-
/** Render human-readable text below the barcode. Default: true */
|
|
616
|
-
includeText?: boolean;
|
|
617
|
-
/** Alignment within content area. Default: 'left' */
|
|
618
|
-
align?: 'left' | 'center' | 'right';
|
|
619
|
-
/** Space above element in pt. Default: 8 */
|
|
620
|
-
spaceBefore?: number;
|
|
621
|
-
/** Space below element in pt. Default: 8 */
|
|
622
|
-
spaceAfter?: number;
|
|
623
|
-
}
|
|
624
|
-
/** @public */
|
|
625
|
-
export interface ChartElement {
|
|
626
|
-
type: 'chart';
|
|
627
|
-
/**
|
|
628
|
-
* A vega-lite JSON specification object.
|
|
629
|
-
* Requires `vega` and `vega-lite` to be installed: `npm install vega vega-lite`
|
|
630
|
-
* @see https://vega.github.io/vega-lite/docs/spec.html
|
|
631
|
-
*/
|
|
632
|
-
spec: Record<string, unknown>;
|
|
633
|
-
/** Rendered width in pt. Default: available content width */
|
|
634
|
-
width?: number;
|
|
635
|
-
/** Rendered height in pt. Default: 300 */
|
|
636
|
-
height?: number;
|
|
637
|
-
/** Optional figure caption rendered below the chart. */
|
|
638
|
-
caption?: string;
|
|
639
|
-
/** Alignment within content area. Default: 'left' */
|
|
640
|
-
align?: 'left' | 'center' | 'right';
|
|
641
|
-
/** Space above element in pt. Default: 8 */
|
|
642
|
-
spaceBefore?: number;
|
|
643
|
-
/** Space below element in pt. Default: 8 */
|
|
644
|
-
spaceAfter?: number;
|
|
645
|
-
}
|
|
646
|
-
/** @public */
|
|
647
|
-
export interface ListElement {
|
|
648
|
-
type: 'list';
|
|
649
|
-
/** 'ordered' = "1. 2. 3.", 'unordered' = bullet point */
|
|
650
|
-
style: 'ordered' | 'unordered';
|
|
651
|
-
items: ListItem[];
|
|
652
|
-
/** Custom marker for unordered lists. Default: '•' */
|
|
653
|
-
marker?: string;
|
|
654
|
-
/** Left indent in pt. Default: 20 */
|
|
655
|
-
indent?: number;
|
|
656
|
-
/** Width reserved for marker column in pt. Default: 20 */
|
|
657
|
-
markerWidth?: number;
|
|
658
|
-
/** Font size in pt. Default: document.defaultFontSize */
|
|
659
|
-
fontSize?: number;
|
|
660
|
-
/** Line height in pt. Default: fontSize * 1.5 */
|
|
661
|
-
lineHeight?: number;
|
|
662
|
-
/** Space between list items in pt. Default: 4 */
|
|
663
|
-
itemSpaceAfter?: number;
|
|
664
|
-
/** Space below the entire list in pt. Default: 0 */
|
|
665
|
-
spaceAfter?: number;
|
|
666
|
-
/** Space above the entire list in pt. Default: 0 */
|
|
667
|
-
spaceBefore?: number;
|
|
668
|
-
/** Text color for all list items (hex). Default: '#000000' */
|
|
669
|
-
color?: string;
|
|
670
|
-
/**
|
|
671
|
-
* For ordered lists with nested items: how nested item counters behave.
|
|
672
|
-
* 'continue' — nested items continue the parent counter (1, 2, 3, 4...).
|
|
673
|
-
* 'restart' — nested items restart at 1, parent counter is unaffected.
|
|
674
|
-
* Default: 'continue'
|
|
675
|
-
*/
|
|
676
|
-
nestedNumberingStyle?: 'continue' | 'restart';
|
|
677
|
-
}
|
|
678
|
-
/** @public */
|
|
679
|
-
export interface ListItem {
|
|
680
|
-
text: string;
|
|
681
|
-
/** Text direction: 'ltr', 'rtl', or 'auto'. Default: 'auto' */
|
|
682
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
683
|
-
/** Font weight for this item. Default: 400 */
|
|
684
|
-
fontWeight?: 400 | 700;
|
|
685
|
-
/** Nested items — up to 2 levels deep. */
|
|
686
|
-
items?: ListItem[];
|
|
687
|
-
}
|
|
688
|
-
/** @public */
|
|
689
|
-
export interface HorizontalRuleElement {
|
|
690
|
-
type: 'hr';
|
|
691
|
-
/** Line thickness in pt. Default: 0.5 */
|
|
692
|
-
thickness?: number;
|
|
693
|
-
/** Line color (hex). Default: '#cccccc' */
|
|
694
|
-
color?: string;
|
|
695
|
-
/** Space above line in pt. Default: 12. Alias: spaceBefore */
|
|
696
|
-
spaceAbove?: number;
|
|
697
|
-
/** Space below line in pt. Default: 12. Alias: spaceAfter */
|
|
698
|
-
spaceBelow?: number;
|
|
699
|
-
/** Alias for spaceAbove — consistent with paragraph/heading naming */
|
|
700
|
-
spaceBefore?: number;
|
|
701
|
-
/** Alias for spaceAfter — consistent with paragraph/heading naming */
|
|
702
|
-
spaceAfter?: number;
|
|
703
|
-
}
|
|
704
|
-
/**
|
|
705
|
-
* Forces a page break at this position. No-op if already at the top of a page.
|
|
706
|
-
* @public
|
|
707
|
-
*/
|
|
708
|
-
export interface PageBreakElement {
|
|
709
|
-
type: 'page-break';
|
|
710
|
-
}
|
|
711
|
-
/** @public */
|
|
712
|
-
export interface CodeBlockElement {
|
|
713
|
-
type: 'code';
|
|
714
|
-
/** Preformatted source code. Newlines and indentation are preserved. */
|
|
715
|
-
text: string;
|
|
716
|
-
/** Text direction. Code blocks should always be 'ltr' (logical order). Default: 'ltr' */
|
|
717
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
718
|
-
/**
|
|
719
|
-
* Font family for code text. Must be loaded in doc.fonts as a monospace TTF.
|
|
720
|
-
* There is no default — a font MUST be provided for code blocks.
|
|
721
|
-
* Recommended: JetBrains Mono, Fira Code, Courier Prime, etc.
|
|
722
|
-
*/
|
|
723
|
-
fontFamily: string;
|
|
724
|
-
/** Font size in pt. Default: doc.defaultFontSize - 2 (slightly smaller than body text) */
|
|
725
|
-
fontSize?: number;
|
|
726
|
-
/** Line height in pt. Default: fontSize * 1.4 */
|
|
727
|
-
lineHeight?: number;
|
|
728
|
-
/** Background box color (hex). Default: '#f6f8fa' */
|
|
729
|
-
bgColor?: string;
|
|
730
|
-
/** Text color (hex). Default: '#24292f' */
|
|
731
|
-
color?: string;
|
|
732
|
-
/** Padding inside the background box on all 4 sides in pt. Default: 8 */
|
|
733
|
-
padding?: number;
|
|
734
|
-
/** Space below element in pt. Default: 12 */
|
|
735
|
-
spaceAfter?: number;
|
|
736
|
-
/** Space above element in pt. Default: 12 */
|
|
737
|
-
spaceBefore?: number;
|
|
738
|
-
/** If true, never break this block across pages. Default: false */
|
|
739
|
-
keepTogether?: boolean;
|
|
740
|
-
/**
|
|
741
|
-
* Programming language for syntax highlighting. Requires `highlight.js` peer dependency.
|
|
742
|
-
* When set, tokens are colored using the highlight theme. When unset or highlight.js
|
|
743
|
-
* is not installed, renders as plain monospace text (existing behavior).
|
|
744
|
-
* Examples: 'javascript', 'typescript', 'python', 'rust', 'go', 'sql', 'json', 'bash'
|
|
745
|
-
*/
|
|
746
|
-
language?: string;
|
|
747
|
-
/**
|
|
748
|
-
* Custom syntax highlight colors (6-digit hex). Overrides the default GitHub-light theme.
|
|
749
|
-
* Only used when `language` is set.
|
|
750
|
-
*/
|
|
751
|
-
highlightTheme?: {
|
|
752
|
-
keyword?: string;
|
|
753
|
-
string?: string;
|
|
754
|
-
comment?: string;
|
|
755
|
-
number?: string;
|
|
756
|
-
function?: string;
|
|
757
|
-
punctuation?: string;
|
|
758
|
-
type?: string;
|
|
759
|
-
built_in?: string;
|
|
760
|
-
literal?: string;
|
|
761
|
-
};
|
|
762
|
-
}
|
|
763
|
-
/**
|
|
764
|
-
* A paragraph composed of inline spans with mixed formatting (bold, italic, color, per-span fontSize).
|
|
765
|
-
* @public
|
|
766
|
-
*/
|
|
767
|
-
export interface RichParagraphElement {
|
|
768
|
-
type: 'rich-paragraph';
|
|
769
|
-
spans: InlineSpan[];
|
|
770
|
-
/** Text direction: 'ltr', 'rtl', or 'auto'. Default: 'auto' */
|
|
771
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
772
|
-
/** Font size in pt for all spans. Default: doc.defaultFontSize */
|
|
773
|
-
fontSize?: number;
|
|
774
|
-
/** Line height in pt. Default: fontSize * 1.5 */
|
|
775
|
-
lineHeight?: number;
|
|
776
|
-
/** Text alignment. Default: 'left' for LTR, 'right' for RTL (auto-detected) */
|
|
777
|
-
align?: 'left' | 'center' | 'right' | 'justify';
|
|
778
|
-
/** Background color as 6-digit hex. Drawn behind the text block. Default: none */
|
|
779
|
-
bgColor?: string;
|
|
780
|
-
/** Extra space above this element in pt. Default: 0 */
|
|
781
|
-
spaceBefore?: number;
|
|
782
|
-
/** Extra space below this element in pt. Default: 0 */
|
|
783
|
-
spaceAfter?: number;
|
|
784
|
-
/** If true, never break this block across pages. Default: false */
|
|
785
|
-
keepTogether?: boolean;
|
|
786
|
-
/** Number of columns for multi-column layout. Default: 1 (single column) */
|
|
787
|
-
columns?: number;
|
|
788
|
-
/** Gap between columns in pt. Default: 24 */
|
|
789
|
-
columnGap?: number;
|
|
790
|
-
/** Extra spacing between characters in pt. Default: 0 */
|
|
791
|
-
letterSpacing?: number;
|
|
792
|
-
/** Simulate small-caps: uppercase text at 80% font size. Default: false */
|
|
793
|
-
smallCaps?: boolean;
|
|
794
|
-
/**
|
|
795
|
-
* Render digits (0–9) at a fixed slot width (widest digit in font).
|
|
796
|
-
* Ensures numeric columns align regardless of digit width variation (1 vs 0 etc.).
|
|
797
|
-
*/
|
|
798
|
-
tabularNumbers?: boolean;
|
|
799
|
-
}
|
|
800
|
-
/** @public */
|
|
801
|
-
export interface InlineSpan {
|
|
802
|
-
text: string;
|
|
803
|
-
/** Text direction for this span: 'ltr', 'rtl', or 'auto'. Default: 'auto' */
|
|
804
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
805
|
-
/** Font family. Default: doc.defaultFont */
|
|
806
|
-
fontFamily?: string;
|
|
807
|
-
/** Font weight. Default: 400 */
|
|
808
|
-
fontWeight?: 400 | 700;
|
|
809
|
-
/** Font style. Default: 'normal'. Requires italic variant in doc.fonts. */
|
|
810
|
-
fontStyle?: 'normal' | 'italic';
|
|
811
|
-
/** Text color (hex). Default: '#000000' */
|
|
812
|
-
color?: string;
|
|
813
|
-
/** Font size override in pt. When set, overrides the element-level fontSize for this span. Default: element fontSize */
|
|
814
|
-
fontSize?: number;
|
|
815
|
-
/** Underline the span text. Default: false */
|
|
816
|
-
underline?: boolean;
|
|
817
|
-
/** Draw a line through the middle of the span text. Default: false */
|
|
818
|
-
strikethrough?: boolean;
|
|
819
|
-
/** Clickable URL. Opens in browser when clicked in PDF viewer. Auto-applies blue color and underline. */
|
|
820
|
-
url?: string;
|
|
821
|
-
/** Internal anchor link: '#anchorId' to jump to a heading with matching anchor. Or external URL. Alias for url. */
|
|
822
|
-
href?: string;
|
|
823
|
-
/** Raise text as superscript or lower as subscript. Default: none */
|
|
824
|
-
verticalAlign?: 'superscript' | 'subscript';
|
|
825
|
-
/** Simulate small-caps: uppercase text at 80% font size. Default: false */
|
|
826
|
-
smallCaps?: boolean;
|
|
827
|
-
/** Extra spacing between characters in pt. Default: 0 */
|
|
828
|
-
letterSpacing?: number;
|
|
829
|
-
/**
|
|
830
|
-
* ID of a matching footnote-def element. When set, this span renders as a
|
|
831
|
-
* superscript number and pins the footnote def to the bottom of this page.
|
|
832
|
-
*/
|
|
833
|
-
footnoteRef?: string;
|
|
834
|
-
}
|
|
835
|
-
/**
|
|
836
|
-
* A composed line from the rich-text compositor — contains multiple styled fragments
|
|
837
|
-
* @internal
|
|
838
|
-
*/
|
|
839
|
-
export interface RichLine {
|
|
840
|
-
fragments: RichFragment[];
|
|
841
|
-
/** Total line content width in pt */
|
|
842
|
-
totalWidth: number;
|
|
843
|
-
/** Height of this line in pt. Computed as max(fragment.fontSize) * lineHeightRatio */
|
|
844
|
-
lineHeight: number;
|
|
845
|
-
}
|
|
846
|
-
/**
|
|
847
|
-
* A single styled run within a RichLine
|
|
848
|
-
* @internal
|
|
849
|
-
*/
|
|
850
|
-
export interface RichFragment {
|
|
851
|
-
text: string;
|
|
852
|
-
fontKey: string;
|
|
853
|
-
fontSize: number;
|
|
854
|
-
color: string;
|
|
855
|
-
/** x-offset from the left edge of the text area in pt */
|
|
856
|
-
x: number;
|
|
857
|
-
/** Fragment width in pt */
|
|
858
|
-
width: number;
|
|
859
|
-
underline?: boolean;
|
|
860
|
-
strikethrough?: boolean;
|
|
861
|
-
url?: string;
|
|
862
|
-
href?: string;
|
|
863
|
-
/** Vertical baseline shift in pt. Positive = up (superscript), negative = down (subscript) */
|
|
864
|
-
yOffset?: number;
|
|
865
|
-
/** Carried from InlineSpan.footnoteRef — used by renderer to identify footnote refs */
|
|
866
|
-
footnoteRef?: string;
|
|
867
|
-
/** Extra spacing between characters in pt. Carried from InlineSpan.letterSpacing. */
|
|
868
|
-
letterSpacing?: number;
|
|
869
|
-
}
|
|
870
|
-
/** @public */
|
|
871
|
-
export interface BlockquoteElement {
|
|
872
|
-
type: 'blockquote';
|
|
873
|
-
text: string;
|
|
874
|
-
/** Text direction: 'ltr', 'rtl', or 'auto'. Default: 'auto' */
|
|
875
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
876
|
-
/** Left border color (hex). Default: '#0070f3' */
|
|
877
|
-
borderColor?: string;
|
|
878
|
-
/** Left border width in pt. Default: 3 */
|
|
879
|
-
borderWidth?: number;
|
|
880
|
-
/** Background fill color (hex). Default: '#f8f9fa' */
|
|
881
|
-
bgColor?: string;
|
|
882
|
-
/** Text color (hex). Default: '#333333' */
|
|
883
|
-
color?: string;
|
|
884
|
-
/** Font family. Default: document.defaultFont */
|
|
885
|
-
fontFamily?: string;
|
|
886
|
-
/** Font weight. Default: 400 */
|
|
887
|
-
fontWeight?: 400 | 700;
|
|
888
|
-
/** Font style. Default: 'normal'. Requires italic variant in doc.fonts if set to 'italic'. */
|
|
889
|
-
fontStyle?: 'normal' | 'italic';
|
|
890
|
-
/** Font size in pt. Default: document.defaultFontSize */
|
|
891
|
-
fontSize?: number;
|
|
892
|
-
/** Line height in pt. Default: fontSize * 1.5 */
|
|
893
|
-
lineHeight?: number;
|
|
894
|
-
/** Shorthand for paddingH and paddingV. Sets both when they are not individually specified. Per-axis overrides take precedence. */
|
|
895
|
-
padding?: number;
|
|
896
|
-
/** Horizontal padding (left + right) inside the box in pt. Default: padding ?? 16 */
|
|
897
|
-
paddingH?: number;
|
|
898
|
-
/** Vertical padding (top + bottom) inside the box in pt. Default: padding ?? 10 */
|
|
899
|
-
paddingV?: number;
|
|
900
|
-
/** Text alignment. Default: 'left' */
|
|
901
|
-
align?: 'left' | 'center' | 'right' | 'justify';
|
|
902
|
-
/** Space above this element in pt. Default: 0 */
|
|
903
|
-
spaceBefore?: number;
|
|
904
|
-
/** Space below this element in pt. Default: 12 */
|
|
905
|
-
spaceAfter?: number;
|
|
906
|
-
/** If true, never break this block across pages. Default: false */
|
|
907
|
-
keepTogether?: boolean;
|
|
908
|
-
/** Underline all text in this element. Default: false */
|
|
909
|
-
underline?: boolean;
|
|
910
|
-
/** Strikethrough all text in this element. Default: false */
|
|
911
|
-
strikethrough?: boolean;
|
|
912
|
-
}
|
|
913
|
-
/**
|
|
914
|
-
* A highlighted callout box with an optional title and preset color schemes.
|
|
915
|
-
* Useful for info panels, warnings, tips, and notes.
|
|
916
|
-
* @public
|
|
917
|
-
*/
|
|
918
|
-
export interface CalloutElement {
|
|
919
|
-
type: 'callout';
|
|
920
|
-
/** Body text content. Required. */
|
|
921
|
-
content: string;
|
|
922
|
-
/**
|
|
923
|
-
* Preset style that sets default colors.
|
|
924
|
-
* - 'info': blue (#EFF6FF bg, #3B82F6 border)
|
|
925
|
-
* - 'warning': amber (#FFFBEB bg, #F59E0B border)
|
|
926
|
-
* - 'tip': green (#F0FDF4 bg, #22C55E border)
|
|
927
|
-
* - 'note': gray (#F9FAFB bg, #9CA3AF border)
|
|
928
|
-
* Default: blue-gray (#F8F9FA bg, #0070F3 border)
|
|
929
|
-
*/
|
|
930
|
-
style?: 'info' | 'warning' | 'tip' | 'note';
|
|
931
|
-
/** Optional title rendered above the body (bold, colored). */
|
|
932
|
-
title?: string;
|
|
933
|
-
/** Background color as 6-digit hex. Default: per style. */
|
|
934
|
-
backgroundColor?: string;
|
|
935
|
-
/** Left border color as 6-digit hex. Default: per style. */
|
|
936
|
-
borderColor?: string;
|
|
937
|
-
/** Text color as 6-digit hex. Default: '#1F2937' */
|
|
938
|
-
color?: string;
|
|
939
|
-
/** Title color as 6-digit hex. Default: same as borderColor */
|
|
940
|
-
titleColor?: string;
|
|
941
|
-
/** Font family. Default: document.defaultFont */
|
|
942
|
-
fontFamily?: string;
|
|
943
|
-
/** Font weight. Default: 400 */
|
|
944
|
-
fontWeight?: 400 | 700;
|
|
945
|
-
/** Font size in pt. Default: document.defaultFontSize */
|
|
946
|
-
fontSize?: number;
|
|
947
|
-
/** Line height in pt. Default: fontSize * 1.5 */
|
|
948
|
-
lineHeight?: number;
|
|
949
|
-
/** Shorthand for paddingH and paddingV. Default: 12 */
|
|
950
|
-
padding?: number;
|
|
951
|
-
/** Horizontal padding (left + right) inside the box in pt. Default: padding ?? 16 */
|
|
952
|
-
paddingH?: number;
|
|
953
|
-
/** Vertical padding (top + bottom) inside the box in pt. Default: padding ?? 10 */
|
|
954
|
-
paddingV?: number;
|
|
955
|
-
/** Space below this element in pt. Default: 12 */
|
|
956
|
-
spaceAfter?: number;
|
|
957
|
-
/** Space above this element in pt. Default: 0 */
|
|
958
|
-
spaceBefore?: number;
|
|
959
|
-
/** If true, never break this element across pages. Default: false */
|
|
960
|
-
keepTogether?: boolean;
|
|
961
|
-
/** Text direction. Default: 'auto' */
|
|
962
|
-
dir?: 'ltr' | 'rtl' | 'auto';
|
|
963
|
-
}
|
|
964
|
-
/**
|
|
965
|
-
* Defines a footnote. Placed anywhere in doc.content — order doesn't matter.
|
|
966
|
-
* Rendered at the bottom of the page that contains the matching footnoteRef span.
|
|
967
|
-
* @public
|
|
968
|
-
*/
|
|
969
|
-
export interface FootnoteDefElement {
|
|
970
|
-
type: 'footnote-def';
|
|
971
|
-
/** Unique identifier matched by InlineSpan.footnoteRef */
|
|
972
|
-
id: string;
|
|
973
|
-
/** The footnote text rendered at the bottom of the page */
|
|
974
|
-
text: string;
|
|
975
|
-
/** Font size in pt. Default: doc.defaultFontSize - 2 */
|
|
976
|
-
fontSize?: number;
|
|
977
|
-
/** Font family. Default: doc.defaultFont */
|
|
978
|
-
fontFamily?: string;
|
|
979
|
-
/** Space after the footnote def in pt. Default: 4 */
|
|
980
|
-
spaceAfter?: number;
|
|
981
|
-
}
|
|
982
|
-
/** @public */
|
|
983
|
-
export interface TocElement {
|
|
984
|
-
type: 'toc';
|
|
985
|
-
/** TOC title. Default: 'Table of Contents' */
|
|
986
|
-
title?: string;
|
|
987
|
-
/** Whether to show the title. Default: true */
|
|
988
|
-
showTitle?: boolean;
|
|
989
|
-
/** Minimum heading level to include. Default: 1 */
|
|
990
|
-
minLevel?: 1 | 2 | 3 | 4;
|
|
991
|
-
/** Maximum heading level to include. Default: 3 */
|
|
992
|
-
maxLevel?: 1 | 2 | 3 | 4;
|
|
993
|
-
/** Font size for TOC entries. Default: doc.defaultFontSize */
|
|
994
|
-
fontSize?: number;
|
|
995
|
-
/** Font size for TOC title. Default: fontSize + 4 */
|
|
996
|
-
titleFontSize?: number;
|
|
997
|
-
/** Indentation per level in pt. Default: 16 */
|
|
998
|
-
levelIndent?: number;
|
|
999
|
-
/** Leader character between entry text and page number. Default: '.' */
|
|
1000
|
-
leader?: string;
|
|
1001
|
-
/** Space after each entry line in pt. Default: 4 */
|
|
1002
|
-
entrySpacing?: number;
|
|
1003
|
-
/** Font family for TOC. Default: doc.defaultFont */
|
|
1004
|
-
fontFamily?: string;
|
|
1005
|
-
/** Space before the entire TOC section. Default: 0 */
|
|
1006
|
-
spaceBefore?: number;
|
|
1007
|
-
/** Space after the entire TOC section. Default: 0 */
|
|
1008
|
-
spaceAfter?: number;
|
|
1009
|
-
}
|
|
1010
|
-
/** @internal */
|
|
1011
|
-
export interface TocEntryElement {
|
|
1012
|
-
type: 'toc-entry';
|
|
1013
|
-
text: string;
|
|
1014
|
-
pageNumber: number;
|
|
1015
|
-
level: 1 | 2 | 3 | 4;
|
|
1016
|
-
levelIndent: number;
|
|
1017
|
-
leader: string;
|
|
1018
|
-
fontFamily: string;
|
|
1019
|
-
fontWeight: number;
|
|
1020
|
-
}
|
|
1021
|
-
/**
|
|
1022
|
-
* A single validation issue returned by {@link validateDocument}.
|
|
1023
|
-
* @public
|
|
1024
|
-
*/
|
|
1025
|
-
export interface ValidationError {
|
|
1026
|
-
/** JSONPath-style location — e.g. "doc.pageSize" or "doc.content[3].color" */
|
|
1027
|
-
path: string;
|
|
1028
|
-
/** Human-readable description of the issue */
|
|
1029
|
-
message: string;
|
|
1030
|
-
/** The unknown property name, when code is UNKNOWN_PROPERTY */
|
|
1031
|
-
unknownProp?: string;
|
|
1032
|
-
/** Levenshtein-nearest valid property name, when available */
|
|
1033
|
-
suggestion?: string;
|
|
1034
|
-
/** Severity of the issue */
|
|
1035
|
-
severity: 'error' | 'warning';
|
|
1036
|
-
/** Machine-readable error code */
|
|
1037
|
-
code: ErrorCode;
|
|
1038
|
-
}
|
|
1039
|
-
/**
|
|
1040
|
-
* Return value of {@link validateDocument}.
|
|
1041
|
-
* @public
|
|
1042
|
-
*/
|
|
1043
|
-
export interface ValidationResult {
|
|
1044
|
-
/** True when the document passed validation with zero errors */
|
|
1045
|
-
valid: boolean;
|
|
1046
|
-
/** All validation errors found (empty when valid is true) */
|
|
1047
|
-
errors: ValidationError[];
|
|
1048
|
-
/** Total number of validation issues. May exceed errors.length when errors are capped at 20. */
|
|
1049
|
-
errorCount: number;
|
|
1050
|
-
/** Warning-severity issue count. Reserved for future use — the validator currently emits only errors, so this is always 0. */
|
|
1051
|
-
warningCount: number;
|
|
1052
|
-
}
|
|
1053
|
-
/**
|
|
1054
|
-
* Optional logger interface for routing pretext-pdf diagnostic messages.
|
|
1055
|
-
* When not provided, diagnostics are written to console.warn.
|
|
1056
|
-
* @public
|
|
1057
|
-
*/
|
|
1058
|
-
export interface Logger {
|
|
1059
|
-
warn(message: string, ...args: unknown[]): void;
|
|
1060
|
-
}
|
|
1061
|
-
/** @public */
|
|
1062
|
-
export type RenderOptions = {
|
|
1063
|
-
/** Enable strict validation: reject unknown properties on elements and sub-structures */
|
|
1064
|
-
strict?: boolean;
|
|
1065
|
-
/**
|
|
1066
|
-
* Plugin definitions for custom element types.
|
|
1067
|
-
* Each plugin handles one `type` string across all 4 pipeline stages.
|
|
1068
|
-
* @beta
|
|
1069
|
-
*/
|
|
1070
|
-
plugins?: import('./plugin-types.js').PluginDefinition[];
|
|
1071
|
-
/**
|
|
1072
|
-
* Optional logger for diagnostic messages. When provided, advisory warnings
|
|
1073
|
-
* from validation, asset loading (images, QR, barcodes, charts, plugins,
|
|
1074
|
-
* watermarks), and rendering (form fields) are routed through `logger.warn`
|
|
1075
|
-
* instead of `console.warn`.
|
|
1076
|
-
*
|
|
1077
|
-
* @remarks
|
|
1078
|
-
* Bidi-js fallback warnings from RTL reordering still go to `console.warn`
|
|
1079
|
-
* directly. They are extremely rare (only fire when bidi-js itself errors)
|
|
1080
|
-
* and routing them requires changes to deferred internal modules. This will
|
|
1081
|
-
* be addressed in a future minor release.
|
|
1082
|
-
*/
|
|
1083
|
-
logger?: Logger;
|
|
1084
|
-
};
|
|
8
|
+
export type * from './types-public/index.js';
|
|
1085
9
|
//# sourceMappingURL=types-public.d.ts.map
|