@peculiar/pdf-form-json 1.17.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/LICENSE +661 -0
- package/README.md +148 -0
- package/build/index.d.ts +250 -0
- package/build/peculiar.pdf.form.es.js +203 -0
- package/build/peculiar.pdf.form.js +234 -0
- package/package.json +47 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var pdfDoc = require('@peculiar/pdf-doc');
|
|
4
|
+
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
var n = Object.create(null);
|
|
7
|
+
if (e) {
|
|
8
|
+
Object.keys(e).forEach(function (k) {
|
|
9
|
+
if (k !== 'default') {
|
|
10
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return e[k]; }
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var pdfDoc__namespace = /*#__PURE__*/_interopNamespaceDefault(pdfDoc);
|
|
23
|
+
|
|
24
|
+
class ComponentConverter {
|
|
25
|
+
constructor(type) {
|
|
26
|
+
this.type = type;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
class ComponentConverterFactory {
|
|
31
|
+
constructor(...converters) {
|
|
32
|
+
this.items = new Map();
|
|
33
|
+
for (const converter of converters) {
|
|
34
|
+
this.register(converter);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
register(converter) {
|
|
38
|
+
this.items.set(converter.type, converter);
|
|
39
|
+
}
|
|
40
|
+
find(type) {
|
|
41
|
+
const converter = this.items.get(type);
|
|
42
|
+
return converter || null;
|
|
43
|
+
}
|
|
44
|
+
get(type) {
|
|
45
|
+
const converter = this.find(type);
|
|
46
|
+
if (!converter) {
|
|
47
|
+
throw new Error(`Converter not found for type ${type.name}`);
|
|
48
|
+
}
|
|
49
|
+
return converter;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
class FieldConverter extends ComponentConverter {
|
|
54
|
+
export(component) {
|
|
55
|
+
const json = {
|
|
56
|
+
type: this.typeJSON,
|
|
57
|
+
id: component.id,
|
|
58
|
+
name: component.name
|
|
59
|
+
};
|
|
60
|
+
this.onExport(component, json);
|
|
61
|
+
return json;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class WidgetConverter extends ComponentConverter {
|
|
66
|
+
export(component) {
|
|
67
|
+
const json = {
|
|
68
|
+
type: this.typeJSON,
|
|
69
|
+
id: component.id,
|
|
70
|
+
name: component.name,
|
|
71
|
+
position: {
|
|
72
|
+
left: component.left,
|
|
73
|
+
top: component.top,
|
|
74
|
+
height: component.height,
|
|
75
|
+
width: component.width
|
|
76
|
+
},
|
|
77
|
+
flags: {
|
|
78
|
+
hidden: component.hidden,
|
|
79
|
+
invisible: component.invisible,
|
|
80
|
+
locked: component.locked,
|
|
81
|
+
lockedContents: component.lockedContents,
|
|
82
|
+
noExport: component.noExport,
|
|
83
|
+
noRotate: component.noRotate,
|
|
84
|
+
noView: component.noView,
|
|
85
|
+
noZoom: component.noZoom,
|
|
86
|
+
print: component.print,
|
|
87
|
+
readOnly: component.readOnly,
|
|
88
|
+
readOnlyAnnot: component.readOnlyAnnot,
|
|
89
|
+
required: component.required,
|
|
90
|
+
toggleNoView: component.toggleNoView
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
this.onExport(component, json);
|
|
94
|
+
return json;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
class CheckBoxConverter extends WidgetConverter {
|
|
99
|
+
constructor() {
|
|
100
|
+
super(pdfDoc__namespace.CheckBox);
|
|
101
|
+
this.typeJSON = pdfDoc__namespace.FormComponentType.checkBox;
|
|
102
|
+
}
|
|
103
|
+
onExport(component, json) {
|
|
104
|
+
json.checked = component.checked;
|
|
105
|
+
json.value = component.value;
|
|
106
|
+
}
|
|
107
|
+
setValue(component, data) {
|
|
108
|
+
component.checked = data.checked;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
class ComboBoxConverter extends WidgetConverter {
|
|
113
|
+
constructor() {
|
|
114
|
+
super(pdfDoc__namespace.ComboBox);
|
|
115
|
+
this.typeJSON = pdfDoc__namespace.FormComponentType.comboBox;
|
|
116
|
+
}
|
|
117
|
+
onExport(component, json) {
|
|
118
|
+
let flags = {};
|
|
119
|
+
if (json.flags && typeof json.flags === "object") {
|
|
120
|
+
flags = json.flags;
|
|
121
|
+
}
|
|
122
|
+
json.flags = {
|
|
123
|
+
...flags,
|
|
124
|
+
combo: component.combo,
|
|
125
|
+
edit: component.edit,
|
|
126
|
+
sort: component.sort,
|
|
127
|
+
multiSelect: component.multiSelect,
|
|
128
|
+
doNotSpellCheck: component.doNotSpellCheck,
|
|
129
|
+
commitOnSelChange: component.commitOnSelChange
|
|
130
|
+
};
|
|
131
|
+
json.options = component.options;
|
|
132
|
+
json.selected = component.selected;
|
|
133
|
+
}
|
|
134
|
+
setValue(component, data) {
|
|
135
|
+
component.selected = data.selected;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
class RadioButtonConverter extends WidgetConverter {
|
|
140
|
+
constructor() {
|
|
141
|
+
super(pdfDoc__namespace.RadioButton);
|
|
142
|
+
this.typeJSON = pdfDoc__namespace.FormComponentType.radioButton;
|
|
143
|
+
}
|
|
144
|
+
onExport(component, json) {
|
|
145
|
+
json.checked = component.checked;
|
|
146
|
+
json.value = component.value;
|
|
147
|
+
}
|
|
148
|
+
setValue(component, data) {
|
|
149
|
+
component.checked = data.checked;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
class RadioButtonGroupConverter extends FieldConverter {
|
|
154
|
+
constructor() {
|
|
155
|
+
super(pdfDoc__namespace.RadioButtonGroup);
|
|
156
|
+
this.typeJSON = pdfDoc__namespace.FormComponentType.radioButtonGroup;
|
|
157
|
+
}
|
|
158
|
+
onExport(component, json) {
|
|
159
|
+
json.selected = component.selected;
|
|
160
|
+
}
|
|
161
|
+
setValue(component, data) {
|
|
162
|
+
const button = component.get(data.selected);
|
|
163
|
+
button.checked = true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
class TextEditorConverter extends WidgetConverter {
|
|
168
|
+
constructor() {
|
|
169
|
+
super(pdfDoc__namespace.TextEditor);
|
|
170
|
+
this.typeJSON = pdfDoc__namespace.FormComponentType.textEditor;
|
|
171
|
+
}
|
|
172
|
+
onExport(component, json) {
|
|
173
|
+
json.maxLen = component.maxLen;
|
|
174
|
+
json.multiline = component.multiline;
|
|
175
|
+
json.text = component.text;
|
|
176
|
+
}
|
|
177
|
+
setValue(component, data) {
|
|
178
|
+
component.text = data.text;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
class FormConverter {
|
|
183
|
+
constructor(registry) {
|
|
184
|
+
this.registry = registry;
|
|
185
|
+
}
|
|
186
|
+
export(doc) {
|
|
187
|
+
const res = {
|
|
188
|
+
form: {}
|
|
189
|
+
};
|
|
190
|
+
const components = doc.getComponents();
|
|
191
|
+
for (const component of components) {
|
|
192
|
+
const obj = this.exportComponent(component);
|
|
193
|
+
if (obj) {
|
|
194
|
+
res.form[obj.name] = obj;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return res;
|
|
198
|
+
}
|
|
199
|
+
exportComponent(component) {
|
|
200
|
+
const converter = this.registry.find(component.constructor);
|
|
201
|
+
if (converter) {
|
|
202
|
+
return converter.export(component);
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
setValue(doc, data) {
|
|
207
|
+
for (const item of data) {
|
|
208
|
+
const component = doc.getComponentByName(item.name);
|
|
209
|
+
if (!component) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const converter = this.registry.find(component.constructor);
|
|
213
|
+
if (!converter || converter.typeJSON !== item.type) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
converter.setValue(component, item);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const registry = new ComponentConverterFactory(new CheckBoxConverter(), new RadioButtonConverter(), new TextEditorConverter(), new ComboBoxConverter(), new ComboBoxConverter(), new RadioButtonGroupConverter());
|
|
222
|
+
const globalFormConverter = new FormConverter(registry);
|
|
223
|
+
|
|
224
|
+
exports.CheckBoxConverter = CheckBoxConverter;
|
|
225
|
+
exports.ComboBoxConverter = ComboBoxConverter;
|
|
226
|
+
exports.ComponentConverter = ComponentConverter;
|
|
227
|
+
exports.ComponentConverterFactory = ComponentConverterFactory;
|
|
228
|
+
exports.FieldConverter = FieldConverter;
|
|
229
|
+
exports.FormConverter = FormConverter;
|
|
230
|
+
exports.RadioButtonConverter = RadioButtonConverter;
|
|
231
|
+
exports.RadioButtonGroupConverter = RadioButtonGroupConverter;
|
|
232
|
+
exports.TextEditorConverter = TextEditorConverter;
|
|
233
|
+
exports.WidgetConverter = WidgetConverter;
|
|
234
|
+
exports.globalFormConverter = globalFormConverter;
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@peculiar/pdf-form-json",
|
|
3
|
+
"version": "1.17.0",
|
|
4
|
+
"description": "A PDF module enabling working with form elements through JSON.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pdf",
|
|
7
|
+
"form",
|
|
8
|
+
"json",
|
|
9
|
+
"acroform"
|
|
10
|
+
],
|
|
11
|
+
"author": "microshine <microshine@mail.ru>",
|
|
12
|
+
"homepage": "https://github.com/PeculiarVentures/pdf/tree/master/packages/form-json#readme",
|
|
13
|
+
"license": "AGPL",
|
|
14
|
+
"main": "build/peculiar.pdf.form.js",
|
|
15
|
+
"module": "build/peculiar.pdf.form.es.js",
|
|
16
|
+
"types": "build/index.d.ts",
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public",
|
|
19
|
+
"registry": "https://registry.npmjs.org/"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"build",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/PeculiarVentures/pdf.git"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"test": "echo \"Error: run tests from root\" && exit 1",
|
|
32
|
+
"clear": "rimraf build/*",
|
|
33
|
+
"build": "rollup -c",
|
|
34
|
+
"rebuild": "yarn run clear && yarn run build",
|
|
35
|
+
"prepack": "npm run rebuild"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/PeculiarVentures/pdf/issues"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@peculiar/pdf-core": "^1.17.0",
|
|
42
|
+
"@peculiar/pdf-doc": "^1.17.0",
|
|
43
|
+
"pvtsutils": "^1.3.6",
|
|
44
|
+
"tslib": "^2.8.1"
|
|
45
|
+
},
|
|
46
|
+
"gitHead": "00443469bff7e573273636f54f34930180672859"
|
|
47
|
+
}
|