@reportwright/pdf 0.1.0-beta.10 → 0.1.0-beta.11
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/README.md +196 -65
- package/dist/fflate.js +2 -2341
- package/dist/fflate.js.map +6 -0
- package/dist/index.js +104 -18112
- package/dist/index.js.map +6 -0
- package/dist/write.js +108 -0
- package/dist/write.js.map +6 -0
- package/examples/p12-signer.mjs +30 -0
- package/index.d.ts +139 -4
- package/package.json +70 -10
- package/write.d.ts +89 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// A signer for pdf.sign from a PKCS#12 file (.p12 / .pfx: a key and its certificates under a password), through
|
|
2
|
+
// cmsSigner and node-forge (npm i node-forge; it is not a dependency of @reportwright/pdf). RSA keys, PKCS#1 v1.5.
|
|
3
|
+
//
|
|
4
|
+
// import { p12Signer } from '@reportwright/pdf/examples/p12-signer.mjs';
|
|
5
|
+
// await pdf.sign({ name: 'Signature1' }, { signer: p12Signer(fs.readFileSync('id.p12'), 'password') });
|
|
6
|
+
import forge from 'node-forge';
|
|
7
|
+
import { cmsSigner } from '@reportwright/pdf';
|
|
8
|
+
|
|
9
|
+
/** @param {Uint8Array} p12 the file's bytes @param {string} password */
|
|
10
|
+
export function p12Signer(p12, password) {
|
|
11
|
+
const asn1 = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(p12).toString('binary')));
|
|
12
|
+
const box = forge.pkcs12.pkcs12FromAsn1(asn1, password); // a wrong password throws here
|
|
13
|
+
const bags = (type) => box.getBags({ bagType: type })[type] ?? [];
|
|
14
|
+
const key = [...bags(forge.pki.oids.pkcs8ShroudedKeyBag), ...bags(forge.pki.oids.keyBag)][0]?.key;
|
|
15
|
+
if (!key) throw new TypeError('p12Signer: no private key in the file');
|
|
16
|
+
const certs = bags(forge.pki.oids.certBag).map((b) => b.cert);
|
|
17
|
+
// the signer's certificate first: the one whose public key is the key's
|
|
18
|
+
const mine = certs.findIndex((c) => c.publicKey.n?.equals(key.n));
|
|
19
|
+
if (mine < 0) throw new TypeError("p12Signer: no certificate for the file's key");
|
|
20
|
+
certs.unshift(...certs.splice(mine, 1));
|
|
21
|
+
return cmsSigner({
|
|
22
|
+
certs: certs.map((c) => forge.pki.certificateToPem(c)).join('\n'),
|
|
23
|
+
keyAlgorithm: 'rsa',
|
|
24
|
+
sign(bytes, hash) {
|
|
25
|
+
const md = { 'SHA-256': forge.md.sha256, 'SHA-384': forge.md.sha384, 'SHA-512': forge.md.sha512 }[hash].create();
|
|
26
|
+
md.update(Buffer.from(bytes).toString('binary'));
|
|
27
|
+
return Uint8Array.from(Buffer.from(key.sign(md), 'binary'));
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
package/index.d.ts
CHANGED
|
@@ -336,6 +336,9 @@ export interface Path {
|
|
|
336
336
|
svg(d: string): this;
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
+
/** SVG path data `d` as PDF path operators (m, l, c, h) in SVG user space; scaleY -1 flips y. Malformed data throws a TypeError. */
|
|
340
|
+
export function svgPathOps(d: string, opts?: { scaleY?: number }): string;
|
|
341
|
+
|
|
339
342
|
/** A gradient or tiling pattern made by a page of this document (an opaque handle: copies and forgeries are refused). */
|
|
340
343
|
export interface Gradient { readonly type: 'gradient' }
|
|
341
344
|
export interface TilingPattern { readonly type: 'tiling' }
|
|
@@ -547,6 +550,22 @@ export interface Field {
|
|
|
547
550
|
readonly type: 'field';
|
|
548
551
|
readonly kind: 'text' | 'checkbox' | 'radio' | 'combo' | 'list' | 'button' | 'signature';
|
|
549
552
|
readonly name: string;
|
|
553
|
+
/** the widget's object number (field and widget are one dictionary), for a structure tree's OBJR; 0 when flattened. Not on a radio group */
|
|
554
|
+
readonly widgetRef?: number;
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* A caller's own appearance for a field (pdf.core callers): each state's content-stream operators (Latin-1), written
|
|
558
|
+
* exactly as the normal appearance (/AP /N); resources: the object number of its Resources ("12 0 R", written through
|
|
559
|
+
* pdf.core), default the shared Resources (which hold every font registered with core.resource('Font', …)).
|
|
560
|
+
*/
|
|
561
|
+
export interface OwnAppearance { normal: string; resources?: string }
|
|
562
|
+
/** A caller's appearance, /DA and structure link for a text-bearing field */
|
|
563
|
+
export interface OwnTextLook {
|
|
564
|
+
appearance?: OwnAppearance;
|
|
565
|
+
/** the default appearance written as /DA ("/F1 12 Tf 0 g": printable ASCII with Tf); with appearance, font is not needed */
|
|
566
|
+
da?: string;
|
|
567
|
+
/** /StructParent, for a caller's own structure tree (not with tagged: the built-in tagger links fields itself) */
|
|
568
|
+
structParent?: number;
|
|
550
569
|
}
|
|
551
570
|
/** Where a widget goes: a page of this PDF and a box (top-left space). */
|
|
552
571
|
export interface WidgetBox { page: Page; x?: number; y?: number; width: number; height: number }
|
|
@@ -572,7 +591,9 @@ export interface FieldTextOptions {
|
|
|
572
591
|
align?: 'left' | 'center' | 'right';
|
|
573
592
|
}
|
|
574
593
|
export type CheckStyle = 'check' | 'cross' | 'circle' | 'square' | 'diamond' | 'star';
|
|
575
|
-
export interface TextFieldOptions extends FieldOptions, FieldTextOptions {
|
|
594
|
+
export interface TextFieldOptions extends FieldOptions, Omit<FieldTextOptions, 'font'>, OwnTextLook {
|
|
595
|
+
/** required unless both appearance and da are given */
|
|
596
|
+
font?: Font;
|
|
576
597
|
/** at most 100,000 characters (and maxLen); line breaks only when multiline */
|
|
577
598
|
value?: string;
|
|
578
599
|
defaultValue?: string;
|
|
@@ -592,6 +613,10 @@ export interface CheckboxOptions extends FieldOptions {
|
|
|
592
613
|
style?: CheckStyle;
|
|
593
614
|
/** the mark's colour */
|
|
594
615
|
color?: Color;
|
|
616
|
+
/** the caller's own on and off appearances (operators), instead of the drawn mark */
|
|
617
|
+
appearance?: { on: string; off: string; resources?: string };
|
|
618
|
+
/** /StructParent, for a caller's own structure tree */
|
|
619
|
+
structParent?: number;
|
|
595
620
|
}
|
|
596
621
|
export interface RadioGroupOptions extends Omit<FieldOptions, keyof WidgetBox> {
|
|
597
622
|
/** 1–1000 buttons, each with its own export value (the same one only with radiosInUnison) */
|
|
@@ -607,7 +632,9 @@ export interface RadioGroupOptions extends Omit<FieldOptions, keyof WidgetBox> {
|
|
|
607
632
|
}
|
|
608
633
|
/** an option: one string (export value and display text), or [export value, display text] */
|
|
609
634
|
export type ChoiceOption = string | readonly [string, string];
|
|
610
|
-
export interface ChoiceOptions extends FieldOptions, FieldTextOptions {
|
|
635
|
+
export interface ChoiceOptions extends FieldOptions, Omit<FieldTextOptions, 'font'>, OwnTextLook {
|
|
636
|
+
/** required unless both appearance and da are given */
|
|
637
|
+
font?: Font;
|
|
611
638
|
/** at most 10,000, in the order given (the Sort flag is never set); export values unique */
|
|
612
639
|
options: ChoiceOption[];
|
|
613
640
|
}
|
|
@@ -633,7 +660,11 @@ export interface ButtonOptions extends FieldOptions, Partial<FieldTextOptions> {
|
|
|
633
660
|
/** the face when pressed (/D; not in PDF/A, whose appearances have /N only) */
|
|
634
661
|
pressedBackground?: Color;
|
|
635
662
|
}
|
|
636
|
-
|
|
663
|
+
/** No width and height: an invisible field (a zero /Rect, /F 132), on page when given (still open), else on no page (AcroForm only) */
|
|
664
|
+
export interface SignatureOptions extends Omit<FieldOptions, 'page' | 'width' | 'height'> {
|
|
665
|
+
page?: Page;
|
|
666
|
+
width?: number;
|
|
667
|
+
height?: number;
|
|
637
668
|
/** /Lock: the fields signing locks */
|
|
638
669
|
lock?: { action?: 'All' } | { action: 'Include' | 'Exclude'; fields: (string | Field)[] };
|
|
639
670
|
}
|
|
@@ -651,6 +682,78 @@ export interface FormScope {
|
|
|
651
682
|
signature(name: string, o: SignatureOptions): Field;
|
|
652
683
|
}
|
|
653
684
|
|
|
685
|
+
/**
|
|
686
|
+
* The extension API (`pdf.core`): the object writer, the shared Resources, the catalog and the end-of-document hooks
|
|
687
|
+
* that every feature module works through (ARCHITECTURE.md, "Extension points"). A caller writing its own content
|
|
688
|
+
* streams and objects (the ReportWright engine) uses it beside the Pdf methods. Not covered by semver in 0.x.
|
|
689
|
+
* Object text is PDF syntax: `"12 0 R"`, `"<< /Type /XObject … >>"`. In an encrypted file every string in it (literal
|
|
690
|
+
* or hex) is encrypted when the object is written.
|
|
691
|
+
*/
|
|
692
|
+
export interface PdfCore {
|
|
693
|
+
/** a new object number, for an object written later with write() (or writeStream, writeBig) */
|
|
694
|
+
reserve(): number;
|
|
695
|
+
/** write object n now: a dictionary or any value, and for a stream its bytes already filtered (/Length is added). Small objects go into object streams */
|
|
696
|
+
write(n: number, dict: string, stream?: Uint8Array): Promise<void> | undefined;
|
|
697
|
+
/** write object n as a stream of raw bytes, Flate-compressed (adding /Filter) unless compress is off */
|
|
698
|
+
writeStream(n: number, dict: string, raw: Uint8Array): Promise<void> | undefined;
|
|
699
|
+
/** write object n whose text may be too long to hold (head, the parts as they come, tail) */
|
|
700
|
+
writeBig(n: number, head: string, parts: Iterable<string>, tail: string): Promise<void>;
|
|
701
|
+
/** reserve and write */
|
|
702
|
+
object(dict: string, stream?: Uint8Array): Promise<number>;
|
|
703
|
+
/** a name (without the slash) in the shared Resources dictionary of every page for a value ("12 0 R" or an inline dictionary); the same value gets the same name */
|
|
704
|
+
resource(kind: 'Font' | 'XObject' | 'ExtGState' | 'Pattern' | 'Shading' | 'ColorSpace' | 'Properties', value: string, name?: string): string;
|
|
705
|
+
/**
|
|
706
|
+
* an embedded image (pdf.embedImage) for a caller's own content stream: its name in the shared Resources, its object
|
|
707
|
+
* number, whether it has transparency (the page then needs a transparency /Group, as page.image sets) and its EXIF
|
|
708
|
+
* orientation as a unit-square matrix. Draw it with `q w 0 0 h x y cm <orientation> cm /<name> Do Q`
|
|
709
|
+
*/
|
|
710
|
+
imageResource(image: Image): { name: string; ref: number; alpha: boolean; orientation: [number, number, number, number, number, number] };
|
|
711
|
+
/** the shared Resources dictionary's object number (a form XObject drawing with page resources uses it) */
|
|
712
|
+
readonly resourcesRef: number;
|
|
713
|
+
/** a catalog entry (key without the slash), read when the catalog is written: finishers may still set it */
|
|
714
|
+
catalog(key: string, value: string): void;
|
|
715
|
+
/** run fn at end(), after the last page is written and before the fonts and the catalog; in registration order */
|
|
716
|
+
onFinish(fn: () => Promise<void> | void): void;
|
|
717
|
+
/** a font object written after every finisher (see Font in src/document.js) */
|
|
718
|
+
addFont(font: unknown): void;
|
|
719
|
+
/** page i's object number (0-based), reserved ahead when the page does not exist yet */
|
|
720
|
+
pageRef(i: number): number;
|
|
721
|
+
/** page i's height, once the page exists */
|
|
722
|
+
pageHeight(i: number): number | undefined;
|
|
723
|
+
readonly pageCount: number;
|
|
724
|
+
/** a warning in end()'s result */
|
|
725
|
+
warn(message: string): void;
|
|
726
|
+
/** run fn after every write queued before it (writes outside a page or a finisher must go through it: the object writer is not re-entrant) */
|
|
727
|
+
serial<T>(fn: () => Promise<T>): Promise<T>;
|
|
728
|
+
/** the first failure of a queued write, or null */
|
|
729
|
+
readonly failed: unknown;
|
|
730
|
+
/** the options a module must respect */
|
|
731
|
+
readonly compress: boolean;
|
|
732
|
+
readonly pdfa: boolean;
|
|
733
|
+
readonly pdfaLevel: { part: 1 | 2 | 3; conformance: 'a' | 'b' | 'u'; unicode: boolean } | null;
|
|
734
|
+
readonly tagged: boolean;
|
|
735
|
+
readonly signal: AbortSignal;
|
|
736
|
+
/** the Info dictionary's text to write instead of the one made from the options (null: made from the options) */
|
|
737
|
+
info: string | null;
|
|
738
|
+
/** the XMP packet to write instead of the one made from the options */
|
|
739
|
+
xmp: Uint8Array | null;
|
|
740
|
+
/** more XMP schemas (standards/xmp.js Extension), pushed before the end */
|
|
741
|
+
xmpExtensions: unknown[];
|
|
742
|
+
/** made to be signed (createPdf's sign option): every byte is hashed */
|
|
743
|
+
readonly signing: boolean;
|
|
744
|
+
/** the AcroForm's /SigFlags (pdf.sign sets 3) */
|
|
745
|
+
sigFlags: number;
|
|
746
|
+
/** the signature dictionary written as the file's last object (security/sign.js); internal */
|
|
747
|
+
last: unknown;
|
|
748
|
+
/** the structure tree (tags/tags.js) when tagged, else null: tags.link(page, annotRef, 'Link' | 'Annot') gives an annotation its element (with an OBJR) and returns its /StructParent */
|
|
749
|
+
tags: { link(page: Page, annotRef: number, type?: 'Link' | 'Annot'): number; [k: string]: unknown } | null;
|
|
750
|
+
/** internal: the page queue (used by Page and createPdf) */
|
|
751
|
+
newPage(page: unknown): number;
|
|
752
|
+
opened(page: unknown): void;
|
|
753
|
+
queuePage(page: unknown): Promise<void>;
|
|
754
|
+
finish(blank: () => unknown): Promise<{ pages: number; bytes: number; warnings: string[] }>;
|
|
755
|
+
}
|
|
756
|
+
|
|
654
757
|
export interface Pdf {
|
|
655
758
|
standardFont(name: StandardFontName): Font;
|
|
656
759
|
/** a TrueType or OpenType/CFF font; subset by default; shaper: text goes through it (complex scripts);
|
|
@@ -691,7 +794,7 @@ export interface Pdf {
|
|
|
691
794
|
/** end open pages, write the rest, end the sink */
|
|
692
795
|
end(): Promise<{ pages: number; bytes: number; warnings: string[] }>;
|
|
693
796
|
/** the extension API (ARCHITECTURE.md); not covered by semver in 0.x */
|
|
694
|
-
readonly core:
|
|
797
|
+
readonly core: PdfCore;
|
|
695
798
|
}
|
|
696
799
|
|
|
697
800
|
export function createPdf(sink: Sink, options?: PdfOptions): Pdf;
|
|
@@ -699,6 +802,38 @@ export function createPdf(sink: Sink, options?: PdfOptions): Pdf;
|
|
|
699
802
|
export function toBytes(build: (pdf: Pdf) => unknown, options?: PdfOptions): Promise<Uint8Array>;
|
|
700
803
|
export const STANDARD_NAMES: StandardFontName[];
|
|
701
804
|
|
|
805
|
+
/** A font file read for metrics and glyph lookup. Throws a TypeError on bytes that are not a TrueType or OpenType font. */
|
|
806
|
+
export interface FontInfo {
|
|
807
|
+
/** glyph count (maxp) */
|
|
808
|
+
readonly numGlyphs: number;
|
|
809
|
+
/** PostScript name (name ID 6), as written in the file */
|
|
810
|
+
readonly postscriptName: string;
|
|
811
|
+
/** OS/2 fsType embedding flags (0 means installable embedding) */
|
|
812
|
+
readonly fsType: number;
|
|
813
|
+
readonly unitsPerEm: number;
|
|
814
|
+
/** hhea ascent, in font units */
|
|
815
|
+
readonly ascent: number;
|
|
816
|
+
/** hhea descent, in font units (negative) */
|
|
817
|
+
readonly descent: number;
|
|
818
|
+
/** true for an OpenType font with CFF outlines */
|
|
819
|
+
readonly isCFF: boolean;
|
|
820
|
+
/** horizontal advance of a glyph ID, in font units; 0 for an ID past numGlyphs */
|
|
821
|
+
advance(glyphId: number): number;
|
|
822
|
+
/** whether the Unicode cmap maps this code point to a glyph */
|
|
823
|
+
hasGlyph(codePoint: number): boolean;
|
|
824
|
+
/** the glyph ID for a code point, 0 when none */
|
|
825
|
+
glyphForCodePoint(codePoint: number): number;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/** Read a font file's metrics and cmap. */
|
|
829
|
+
export function readFont(bytes: Uint8Array): FontInfo;
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Check a font subset before embedding it. Returns a description of the first problem (header, table directory, loca
|
|
833
|
+
* order, CFF INDEXes), or null when the subset is well formed. Never throws.
|
|
834
|
+
*/
|
|
835
|
+
export function checkSubset(bytes: Uint8Array): string | null;
|
|
836
|
+
|
|
702
837
|
// ---- reading and modifying (group H) ----
|
|
703
838
|
|
|
704
839
|
export type PdfReadErrorCode = 'E_MALFORMED' | 'E_BUDGET' | 'E_DEPTH' | 'E_CYCLE' | 'E_TIMEOUT' | 'E_ABORTED' | 'E_PASSWORD' | 'E_ENCRYPTED' | 'E_UNSUPPORTED' | 'E_ACTIVE' | 'E_SIGNED';
|
package/package.json
CHANGED
|
@@ -1,23 +1,83 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reportwright/pdf",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.11",
|
|
4
4
|
"description": "A streaming PDF writer for Node and browsers with no runtime dependencies: flat memory, PDF/A-1b to 3a, PDF/UA-1, Factur-X, embedded TrueType with Unicode text.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Arun Mallikarjun",
|
|
8
8
|
"homepage": "https://github.com/MrArun005/reportwright/tree/main/packages/pdf#readme",
|
|
9
|
-
"bugs": {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/MrArun005/reportwright/issues"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/MrArun005/reportwright.git",
|
|
15
|
+
"directory": "packages/pdf"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"pdf",
|
|
19
|
+
"pdf-writer",
|
|
20
|
+
"streaming",
|
|
21
|
+
"pdf-a",
|
|
22
|
+
"pdf-ua",
|
|
23
|
+
"factur-x",
|
|
24
|
+
"zugferd",
|
|
25
|
+
"accessibility",
|
|
26
|
+
"truetype",
|
|
27
|
+
"encryption",
|
|
28
|
+
"aes",
|
|
29
|
+
"pades",
|
|
30
|
+
"digital-signature",
|
|
31
|
+
"reportwright"
|
|
32
|
+
],
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
13
36
|
"exports": {
|
|
14
|
-
".": {
|
|
15
|
-
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./index.d.ts",
|
|
39
|
+
"default": "./dist/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./write": {
|
|
42
|
+
"types": "./write.d.ts",
|
|
43
|
+
"default": "./dist/write.js"
|
|
44
|
+
},
|
|
45
|
+
"./fflate": {
|
|
46
|
+
"types": "./fflate.d.ts",
|
|
47
|
+
"default": "./dist/fflate.js"
|
|
48
|
+
},
|
|
16
49
|
"./examples/*": "./examples/*",
|
|
17
50
|
"./package.json": "./package.json"
|
|
18
51
|
},
|
|
19
52
|
"types": "./index.d.ts",
|
|
20
|
-
"files": [
|
|
21
|
-
|
|
22
|
-
|
|
53
|
+
"files": [
|
|
54
|
+
"dist",
|
|
55
|
+
"index.d.ts",
|
|
56
|
+
"write.d.ts",
|
|
57
|
+
"fflate.d.ts",
|
|
58
|
+
"examples",
|
|
59
|
+
"README.md",
|
|
60
|
+
"LICENSE",
|
|
61
|
+
"THIRD-PARTY-NOTICES.md"
|
|
62
|
+
],
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=20.16"
|
|
65
|
+
},
|
|
66
|
+
"sideEffects": false,
|
|
67
|
+
"scripts": {
|
|
68
|
+
"build": "node build.mjs",
|
|
69
|
+
"test": "vitest run",
|
|
70
|
+
"format": "prettier --write \"src/**/*.{js,mjs}\" \"tests/**/*.{js,mjs}\" \"tools/**/*.{js,mjs}\"",
|
|
71
|
+
"format:check": "prettier --check \"src/**/*.{js,mjs}\" \"tests/**/*.{js,mjs}\" \"tools/**/*.{js,mjs}\""
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"esbuild": "^0.28.2",
|
|
75
|
+
"fflate": "^0.8.3",
|
|
76
|
+
"harfbuzzjs": "^1.6.2",
|
|
77
|
+
"node-forge": "^1.4.0",
|
|
78
|
+
"pdf-lib": "^1.17.1",
|
|
79
|
+
"prettier": "3.9.9",
|
|
80
|
+
"sharp": "^0.34.3",
|
|
81
|
+
"vitest": "^5.0.3"
|
|
82
|
+
}
|
|
23
83
|
}
|
package/write.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Types of @reportwright/pdf/write: the writer subset of index.d.ts (same declarations, no reader or bulk types).
|
|
2
|
+
export {
|
|
3
|
+
cmyk,
|
|
4
|
+
nodeSigner,
|
|
5
|
+
cmsSigner,
|
|
6
|
+
createPdf,
|
|
7
|
+
toBytes,
|
|
8
|
+
STANDARD_NAMES,
|
|
9
|
+
svgPathOps,
|
|
10
|
+
readFont,
|
|
11
|
+
checkSubset,
|
|
12
|
+
} from './index.js';
|
|
13
|
+
export type {
|
|
14
|
+
AFRelationship,
|
|
15
|
+
Annotation,
|
|
16
|
+
AnnotationOptions,
|
|
17
|
+
ArtifactOptions,
|
|
18
|
+
AttachOptions,
|
|
19
|
+
BlendMode,
|
|
20
|
+
Box,
|
|
21
|
+
ButtonAction,
|
|
22
|
+
ButtonOptions,
|
|
23
|
+
CheckStyle,
|
|
24
|
+
CheckboxOptions,
|
|
25
|
+
ChoiceOption,
|
|
26
|
+
ChoiceOptions,
|
|
27
|
+
Color,
|
|
28
|
+
ColorStops,
|
|
29
|
+
ComboBoxOptions,
|
|
30
|
+
DrawOptions,
|
|
31
|
+
EncryptOptions,
|
|
32
|
+
FacturXProfile,
|
|
33
|
+
Field,
|
|
34
|
+
FieldOptions,
|
|
35
|
+
FieldTextOptions,
|
|
36
|
+
Fit,
|
|
37
|
+
Font,
|
|
38
|
+
FontInfo,
|
|
39
|
+
FormScope,
|
|
40
|
+
Gradient,
|
|
41
|
+
HashName,
|
|
42
|
+
IccColor,
|
|
43
|
+
IccColorSpace,
|
|
44
|
+
Image,
|
|
45
|
+
ImageOptions,
|
|
46
|
+
Layer,
|
|
47
|
+
LayerOptions,
|
|
48
|
+
LineEnding,
|
|
49
|
+
LinkOptions,
|
|
50
|
+
LinkTarget,
|
|
51
|
+
ListBoxOptions,
|
|
52
|
+
MeasureOptions,
|
|
53
|
+
NoteIcon,
|
|
54
|
+
OutlineEntry,
|
|
55
|
+
OwnAppearance,
|
|
56
|
+
OwnTextLook,
|
|
57
|
+
Page,
|
|
58
|
+
PageLabelRange,
|
|
59
|
+
PageOptions,
|
|
60
|
+
Paint,
|
|
61
|
+
Path,
|
|
62
|
+
Pdf,
|
|
63
|
+
PdfCore,
|
|
64
|
+
PdfOptions,
|
|
65
|
+
Permissions,
|
|
66
|
+
Point,
|
|
67
|
+
RadioGroupOptions,
|
|
68
|
+
Rect,
|
|
69
|
+
RenderMode,
|
|
70
|
+
ShapeOptions,
|
|
71
|
+
ShapedGlyph,
|
|
72
|
+
Shaper,
|
|
73
|
+
SignOptions,
|
|
74
|
+
SignRequest,
|
|
75
|
+
SignatureOptions,
|
|
76
|
+
Signer,
|
|
77
|
+
Sink,
|
|
78
|
+
SpotColor,
|
|
79
|
+
StampName,
|
|
80
|
+
StandardFontName,
|
|
81
|
+
Subsetter,
|
|
82
|
+
TagOptions,
|
|
83
|
+
TextBoxOptions,
|
|
84
|
+
TextFieldOptions,
|
|
85
|
+
TextOptions,
|
|
86
|
+
TilingPattern,
|
|
87
|
+
ViewerOptions,
|
|
88
|
+
WidgetBox,
|
|
89
|
+
} from './index.js';
|