@pdftron/pdfnet-node-samples 9.4.2 → 9.5.0-2-beta-1

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.
Files changed (124) hide show
  1. package/package.json +18 -18
  2. package/readme.md +12 -12
  3. package/samples/AddImageTest/AddImageTest.js +2 -2
  4. package/samples/AdvancedImagingTest/AdvancedImagingTest.js +3 -3
  5. package/samples/AnnotationTest/AnnotationTest.js +2 -2
  6. package/samples/BookmarkTest/BookmarkTest.js +2 -2
  7. package/samples/CAD2PDFTest/CAD2PDFTest.js +79 -79
  8. package/samples/ContentReplacerTest/ContentReplacerTest.js +2 -2
  9. package/samples/ConvertTest/ConvertTest.js +270 -256
  10. package/samples/DataExtractionTest/DataExtractionTest.js +180 -0
  11. package/samples/DigitalSignaturesTest/DigitalSignaturesTest.js +526 -526
  12. package/samples/ElementBuilderTest/ElementBuilderTest.js +2 -2
  13. package/samples/ElementEditTest/ElementEditTest.js +2 -2
  14. package/samples/ElementReaderAdvTest/ElementReaderAdvTest.js +2 -2
  15. package/samples/ElementReaderTest/ElementReaderTest.js +2 -2
  16. package/samples/EncTest/EncTest.js +2 -2
  17. package/samples/FDFTest/FDFTest.js +218 -218
  18. package/samples/HTML2PDFTest/HTML2PDFTest.js +165 -165
  19. package/samples/HighlightsTest/HighlightsTest.js +2 -2
  20. package/samples/ImageExtractTest/ImageExtractTest.js +129 -129
  21. package/samples/ImpositionTest/ImpositionTest.js +86 -86
  22. package/samples/InteractiveFormsTest/InteractiveFormsTest.js +381 -381
  23. package/samples/JBIG2Test/JBIG2Test.js +88 -88
  24. package/samples/LogicalStructureTest/LogicalStructureTest.js +2 -2
  25. package/samples/OCRTest/OCRTest.js +234 -234
  26. package/samples/OfficeTemplateTest/OfficeTemplateTest.js +79 -77
  27. package/samples/OfficeToPDFTest/OfficeToPDFTest.js +125 -125
  28. package/samples/OptimizerTest/OptimizerTest.js +191 -191
  29. package/samples/PDF2HtmlTest/PDF2HtmlTest.js +3 -3
  30. package/samples/PDF2OfficeTest/PDF2OfficeTest.js +3 -3
  31. package/samples/PDFATest/PDFATest.js +2 -2
  32. package/samples/PDFDocMemoryTest/PDFDocMemoryTest.js +84 -84
  33. package/samples/PDFDrawTest/PDFDrawTest.js +2 -2
  34. package/samples/PDFLayersTest/PDFLayersTest.js +2 -2
  35. package/samples/PDFPackageTest/PDFPackageTest.js +111 -111
  36. package/samples/PDFPageTest/PDFPageTest.js +2 -2
  37. package/samples/PDFRedactTest/PDFRedactTest.js +2 -2
  38. package/samples/PageLabelsTest/PageLabelsTest.js +138 -138
  39. package/samples/PatternTest/PatternTest.js +226 -226
  40. package/samples/RectTest/RectTest.js +2 -2
  41. package/samples/SDFTest/SDFTest.js +3 -4
  42. package/samples/StamperTest/StamperTest.js +2 -2
  43. package/samples/TextExtractTest/TextExtractTest.js +2 -2
  44. package/samples/TextSearchTest/TextSearchTest.js +2 -2
  45. package/samples/U3DTest/U3DTest.js +104 -104
  46. package/samples/UndoRedoTest/UndoRedoTest.js +2 -2
  47. package/samples/UnicodeWriteTest/UnicodeWriteTest.js +2 -2
  48. package/samples/WebViewerConvertTest/WebViewerConvertTest.js +135 -135
  49. package/samples/runall.bat +6 -5
  50. package/samples/runall.sh +4 -5
  51. package/samples/TestFiles/BusinessCardTemplate.pdf +0 -0
  52. package/samples/TestFiles/Fishermen.docx +0 -0
  53. package/samples/TestFiles/Font_licenses.txt +0 -140
  54. package/samples/TestFiles/GlobalSignRootForTST.cer +0 -0
  55. package/samples/TestFiles/License.txt +0 -1
  56. package/samples/TestFiles/Misc-Fixed.pfa +0 -1166
  57. package/samples/TestFiles/NotoSans_with_hindi.ttf +0 -0
  58. package/samples/TestFiles/Output/empty +0 -1
  59. package/samples/TestFiles/SHA-2 Root USERTrust RSA CA Sectigo timestamping.crt +0 -34
  60. package/samples/TestFiles/SYH_Letter.docx +0 -0
  61. package/samples/TestFiles/TigerText.pdf +0 -0
  62. package/samples/TestFiles/US061222892-a.pdf +0 -0
  63. package/samples/TestFiles/butterfly.png +0 -0
  64. package/samples/TestFiles/credit card numbers.pdf +0 -0
  65. package/samples/TestFiles/dice.jpg +0 -0
  66. package/samples/TestFiles/dice.u3d +0 -0
  67. package/samples/TestFiles/doc_to_sign.pdf +0 -0
  68. package/samples/TestFiles/factsheet_Arabic.docx +0 -0
  69. package/samples/TestFiles/fish.pdf +0 -0
  70. package/samples/TestFiles/font.ttf +0 -0
  71. package/samples/TestFiles/form1.pdf +1 -245
  72. package/samples/TestFiles/form1_annots.xfdf +0 -34
  73. package/samples/TestFiles/form1_data.fdf +0 -4
  74. package/samples/TestFiles/form1_data.xfdf +0 -140
  75. package/samples/TestFiles/grayscale.tif +0 -0
  76. package/samples/TestFiles/hindi_sample_utf16le.txt +0 -0
  77. package/samples/TestFiles/imagemask.dat +0 -32
  78. package/samples/TestFiles/logo_red.png +0 -0
  79. package/samples/TestFiles/lorem_ipsum.pdf +0 -0
  80. package/samples/TestFiles/multipage.tif +0 -0
  81. package/samples/TestFiles/my_stream.txt +0 -2310
  82. package/samples/TestFiles/newsletter.pdf +0 -0
  83. package/samples/TestFiles/newsletter.xod +0 -0
  84. package/samples/TestFiles/numbered.pdf +0 -0
  85. package/samples/TestFiles/op_blend_test.pdf +0 -1498
  86. package/samples/TestFiles/palm.jp2 +0 -0
  87. package/samples/TestFiles/paragraphs_and_tables.pdf +0 -0
  88. package/samples/TestFiles/pdfnet.gif +0 -0
  89. package/samples/TestFiles/pdftron.bmp +0 -0
  90. package/samples/TestFiles/pdftron.cer +0 -0
  91. package/samples/TestFiles/pdftron.pfx +0 -0
  92. package/samples/TestFiles/pdftron_smart_substitution.plugin +0 -0
  93. package/samples/TestFiles/peppers.jpg +0 -0
  94. package/samples/TestFiles/signature.jpg +0 -0
  95. package/samples/TestFiles/simple-emf.emf +0 -0
  96. package/samples/TestFiles/simple-excel_2007.xlsx +0 -0
  97. package/samples/TestFiles/simple-outlook.msg +0 -0
  98. package/samples/TestFiles/simple-powerpoint_2007.pptx +0 -0
  99. package/samples/TestFiles/simple-publisher.pub +0 -0
  100. package/samples/TestFiles/simple-rtf.rtf +0 -224
  101. package/samples/TestFiles/simple-text.txt +0 -61
  102. package/samples/TestFiles/simple-visio.vsd +0 -0
  103. package/samples/TestFiles/simple-webpage.html +0 -731
  104. package/samples/TestFiles/simple-webpage.mht +0 -6972
  105. package/samples/TestFiles/simple-webpage_files/colorschememapping.xml +0 -2
  106. package/samples/TestFiles/simple-webpage_files/filelist.xml +0 -14
  107. package/samples/TestFiles/simple-webpage_files/image001.gif +0 -0
  108. package/samples/TestFiles/simple-webpage_files/image002.png +0 -0
  109. package/samples/TestFiles/simple-webpage_files/image003.jpg +0 -0
  110. package/samples/TestFiles/simple-webpage_files/image004.emz +0 -0
  111. package/samples/TestFiles/simple-webpage_files/image005.gif +0 -0
  112. package/samples/TestFiles/simple-webpage_files/image006.png +0 -0
  113. package/samples/TestFiles/simple-webpage_files/image007.gif +0 -0
  114. package/samples/TestFiles/simple-webpage_files/oledata.mso +0 -0
  115. package/samples/TestFiles/simple-webpage_files/themedata.thmx +0 -0
  116. package/samples/TestFiles/simple-word_2007.docx +0 -0
  117. package/samples/TestFiles/simple-xps.xps +0 -0
  118. package/samples/TestFiles/tagged.pdf +0 -0
  119. package/samples/TestFiles/the_rime_of_the_ancient_mariner.docx +0 -0
  120. package/samples/TestFiles/tiger.pdf +0 -0
  121. package/samples/TestFiles/waiver.pdf +0 -0
  122. package/samples/TestFiles/waiver_withApprovalField.pdf +0 -0
  123. package/samples/TestFiles/waiver_withApprovalField_certified.pdf +1 -424
  124. package/samples/TestFiles/waiver_withApprovalField_certified_approved.pdf +1 -466
@@ -1,9 +1,9 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
6
- const { PDFNet } = require('@pdftron/pdfnet-node');
6
+ const { PDFNet } = require('../lib/pdfnet.js');
7
7
  const PDFTronLicense = require('../LicenseKey/LicenseKey');
8
8
 
9
9
  ((exports) => {
@@ -1,10 +1,10 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
6
6
 
7
- const { PDFNet } = require('@pdftron/pdfnet-node');
7
+ const { PDFNet } = require('../lib/pdfnet.js');
8
8
  const PDFTronLicense = require('../LicenseKey/LicenseKey');
9
9
 
10
10
  ((exports) => {
@@ -1,10 +1,10 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
6
6
 
7
- const { PDFNet } = require('@pdftron/pdfnet-node');
7
+ const { PDFNet } = require('../lib/pdfnet.js');
8
8
  const PDFTronLicense = require('../LicenseKey/LicenseKey');
9
9
 
10
10
  ((exports) => {
@@ -1,10 +1,10 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
6
6
 
7
- const { PDFNet } = require('@pdftron/pdfnet-node');
7
+ const { PDFNet } = require('../lib/pdfnet.js');
8
8
  const PDFTronLicense = require('../LicenseKey/LicenseKey');
9
9
 
10
10
  ((exports) => {
@@ -1,5 +1,5 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
@@ -8,7 +8,7 @@
8
8
  // sets a new SecurityHandler. The sample also illustrates how password protection can
9
9
  // be removed from an existing PDF document.
10
10
  //---------------------------------------------------------------------------------------
11
- const { PDFNet } = require('@pdftron/pdfnet-node');
11
+ const { PDFNet } = require('../lib/pdfnet.js');
12
12
  const PDFTronLicense = require('../LicenseKey/LicenseKey');
13
13
 
14
14
  ((exports) => {
@@ -1,219 +1,219 @@
1
- //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
3
- // Consult legal.txt regarding legal and license information.
4
- //---------------------------------------------------------------------------------------
5
-
6
- //---------------------------------------------------------------------------------------
7
- // PDFNet includes a full support for FDF (Forms Data Format) and capability to merge/extract
8
- // forms data (FDF) with/from PDF. This sample illustrates basic FDF merge/extract functionality
9
- // available in PDFNet.
10
- //---------------------------------------------------------------------------------------
11
-
12
- const { PDFNet } = require('@pdftron/pdfnet-node');
13
- const PDFTronLicense = require('../LicenseKey/LicenseKey');
14
-
15
- ((exports) => {
16
-
17
- exports.runFDFTest = () => {
18
- const main = async () => {
19
- const inputPath = '../TestFiles/';
20
- const outputPath = '../TestFiles/Output/';
21
-
22
- // Example 1)
23
- // Iterate over all form fields in the document. Display all field names.
24
- try {
25
- const doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'form1.pdf');
26
- doc.initSecurityHandler();
27
-
28
- for (const itr = await doc.getFieldIteratorBegin(); await itr.hasNext(); itr.next()) {
29
- const field = await itr.current();
30
- console.log('Field name: ' + await field.getName());
31
- console.log('Field partial name: ' + await field.getPartialName());
32
-
33
- switch (await field.getType()) {
34
- case PDFNet.Field.Type.e_button:
35
- console.log('Field type: Button');
36
- break;
37
- case PDFNet.Field.Type.e_check:
38
- console.log('Field type: Check');
39
- break;
40
- case PDFNet.Field.Type.e_radio:
41
- console.log('Field type: Radio');
42
- break;
43
- case PDFNet.Field.Type.e_text:
44
- console.log('Field type: Text');
45
- break;
46
- case PDFNet.Field.Type.e_choice:
47
- console.log('Field type: Choice');
48
- break;
49
- case PDFNet.Field.Type.e_signature:
50
- console.log('Field type: Signature');
51
- break;
52
- default:
53
- console.log('Field type: Null');
54
- break;
55
- }
56
- console.log('------------------------------')
57
- }
58
- console.log('Done.');
59
- } catch (err) {
60
- console.log(err);
61
- }
62
-
63
- // Example 2) Import XFDF into FDF, then merge data from FDF into PDF
64
- try {
65
- // FDF to PDF
66
- // form fields
67
- console.log('Import form field data from XFDF to FDF.');
68
-
69
- const fdf_doc1 = await PDFNet.FDFDoc.createFromXFDF(inputPath + 'form1_data.xfdf');
70
- await fdf_doc1.save(outputPath + 'form1_data.fdf');
71
-
72
- // annotations
73
- console.log('Import annotations from XFDF to FDF.');
74
-
75
- const fdf_doc2 = await PDFNet.FDFDoc.createFromXFDF(inputPath + 'form1_annots.xfdf');
76
- await fdf_doc2.save(outputPath + 'form1_annots.fdf');
77
-
78
- // FDF to PDF
79
- // form fields
80
- console.log('Merge form field data from FDF.');
81
-
82
- const doc = await PDFNet.PDFDoc.createFromFilePath(`${inputPath}form1.pdf`);
83
- doc.initSecurityHandler();
84
- await doc.fdfMerge(fdf_doc1);
85
-
86
- // Refreshing missing appearances is not required here, but is recommended to make them
87
- // visible in PDF viewers with incomplete annotation viewing support. (such as Chrome)
88
- doc.refreshAnnotAppearances();
89
-
90
- await doc.save(outputPath + 'form1_filled.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
91
-
92
- // annotations
93
- console.log('Merge annotations from FDF.');
94
-
95
- await doc.fdfMerge(fdf_doc2);
96
- // Refreshing missing appearances is not required here, but is recommended to make them
97
- // visible in PDF viewers with incomplete annotation viewing support. (such as Chrome)
98
- doc.refreshAnnotAppearances();
99
- await doc.save(outputPath + 'form1_filled_with_annots.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
100
- console.log('Done.');
101
- } catch (err) {
102
- console.log(err);
103
- }
104
-
105
-
106
- // Example 3) Extract data from PDF to FDF, then export FDF as XFDF
107
- try {
108
- // PDF to FDF
109
- const in_doc = await PDFNet.PDFDoc.createFromFilePath(outputPath + 'form1_filled_with_annots.pdf');
110
- in_doc.initSecurityHandler();
111
-
112
- // form fields only
113
- console.log('Extract form fields data to FDF.');
114
-
115
- const doc_fields = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_forms_only);
116
- doc_fields.setPDFFileName('../form1_filled_with_annots.pdf');
117
- await doc_fields.save(outputPath + 'form1_filled_data.fdf');
118
-
119
- // annotations only
120
- console.log('Extract annotations to FDF.');
121
-
122
- const doc_annots = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_annots_only);
123
- doc_annots.setPDFFileName('../form1_filled_with_annots.pdf');
124
- await doc_annots.save(outputPath + 'form1_filled_annot.fdf');
125
-
126
- // both form fields and annotations
127
- console.log('Extract both form fields and annotations to FDF.');
128
-
129
- const doc_both = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);
130
- doc_both.setPDFFileName('../form1_filled_with_annots.pdf');
131
- await doc_both.save(outputPath + 'form1_filled_both.fdf');
132
-
133
- // FDF to XFDF
134
- // form fields
135
- console.log('Export form field data from FDF to XFDF.');
136
-
137
- await doc_fields.saveAsXFDF(outputPath + 'form1_filled_data.xfdf');
138
-
139
- // annotations
140
- console.log('Export annotations from FDF to XFDF.');
141
-
142
- await doc_annots.saveAsXFDF(outputPath + 'form1_filled_annot.xfdf');
143
-
144
- // both form fields and annotations
145
- console.log('Export both form fields and annotations from FDF to XFDF.');
146
-
147
- await doc_both.saveAsXFDF(outputPath + 'form1_filled_both.xfdf');
148
-
149
- console.log('Done.');
150
- } catch (err) {
151
- console.log(err);
152
- }
153
-
154
- // Example 4) Merge/Extract XFDF into/from PDF
155
- try {
156
- // Merge XFDF from string
157
- const in_doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'numbered.pdf');
158
- in_doc.initSecurityHandler();
159
-
160
- console.log('Merge XFDF string into PDF.');
161
-
162
- const str = `<?xml version="1.0" encoding="UTF-8" ?><xfdf xmlns="http://ns.adobe.com/xfdf" xml:space="preserve"><square subject="Rectangle" page="0" name="cf4d2e58-e9c5-2a58-5b4d-9b4b1a330e45" title="user" creationdate="D:20120827112326-07'00'" date="D:20120827112326-07'00'" rect="227.7814207650273,597.6174863387978,437.07103825136608,705.0491803278688" color="#000000" interior-color="#FFFF00" flags="print" width="1"><popup flags="print,nozoom,norotate" open="no" page="0" rect="0,792,0,792" /></square></xfdf>`;
163
-
164
- const fdoc = await PDFNet.FDFDoc.createFromXFDF(str);
165
- in_doc.fdfMerge(fdoc);
166
- await in_doc.save(outputPath + 'numbered_modified.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
167
- console.log('Merge complete.');
168
-
169
- // Extract XFDF as string
170
- console.log('Extract XFDF as a string.');
171
-
172
- const fdoc_new = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);
173
- const XFDF_str = await fdoc_new.saveAsXFDFAsString();
174
- console.log('Extracted XFDF: ');
175
- console.log(XFDF_str);
176
- console.log('Extract complete.');
177
- } catch (err) {
178
- console.log(err);
179
- }
180
-
181
- // Example 5) Read FDF files directly
182
- try {
183
- const doc = await PDFNet.FDFDoc.createFromFilePath(outputPath + 'form1_filled_data.fdf');
184
-
185
- for (const itr = await doc.getFieldIteratorBegin(); await itr.hasNext(); itr.next()) {
186
- const field = await itr.current();
187
- console.log('Field name: ' + await field.getName());
188
- console.log('Field partial name: ' + await field.getPartialName());
189
-
190
- console.log('------------------------------');
191
- }
192
-
193
- console.log('Done.');
194
- } catch (err) {
195
- console.log(err);
196
- }
197
-
198
- // Example 6) Direct generation of FDF.
199
- try
200
- {
201
- const doc = await PDFNet.FDFDoc.create();
202
- // Create new fields (i.e. key/value pairs).
203
- doc.fieldCreateFromString('Company', PDFNet.Field.Type.e_text, 'PDFTron Systems');
204
- doc.fieldCreateFromString('First Name', PDFNet.Field.Type.e_text, 'John');
205
- doc.fieldCreateFromString('Last Name', PDFNet.Field.Type.e_text, 'Doe');
206
-
207
- await doc.save(outputPath + 'sample_output.fdf');
208
- console.log('Done. Results saved in sample_output.fdf');
209
- } catch (err) {
210
- console.log(err);
211
- }
212
- };
213
-
214
- PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function (error) { console.log('Error: ' + JSON.stringify(error)); }).then(function () { return PDFNet.shutdown(); });
215
- };
216
- exports.runFDFTest();
217
- })(exports);
218
- // eslint-disable-next-line spaced-comment
1
+ //---------------------------------------------------------------------------------------
2
+ // Copyright (c) 2001-2023 by PDFTron Systems Inc. All Rights Reserved.
3
+ // Consult legal.txt regarding legal and license information.
4
+ //---------------------------------------------------------------------------------------
5
+
6
+ //---------------------------------------------------------------------------------------
7
+ // PDFNet includes a full support for FDF (Forms Data Format) and capability to merge/extract
8
+ // forms data (FDF) with/from PDF. This sample illustrates basic FDF merge/extract functionality
9
+ // available in PDFNet.
10
+ //---------------------------------------------------------------------------------------
11
+
12
+ const { PDFNet } = require('../lib/pdfnet.js');
13
+ const PDFTronLicense = require('../LicenseKey/LicenseKey');
14
+
15
+ ((exports) => {
16
+
17
+ exports.runFDFTest = () => {
18
+ const main = async () => {
19
+ const inputPath = '../TestFiles/';
20
+ const outputPath = '../TestFiles/Output/';
21
+
22
+ // Example 1)
23
+ // Iterate over all form fields in the document. Display all field names.
24
+ try {
25
+ const doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'form1.pdf');
26
+ doc.initSecurityHandler();
27
+
28
+ for (const itr = await doc.getFieldIteratorBegin(); await itr.hasNext(); itr.next()) {
29
+ const field = await itr.current();
30
+ console.log('Field name: ' + await field.getName());
31
+ console.log('Field partial name: ' + await field.getPartialName());
32
+
33
+ switch (await field.getType()) {
34
+ case PDFNet.Field.Type.e_button:
35
+ console.log('Field type: Button');
36
+ break;
37
+ case PDFNet.Field.Type.e_check:
38
+ console.log('Field type: Check');
39
+ break;
40
+ case PDFNet.Field.Type.e_radio:
41
+ console.log('Field type: Radio');
42
+ break;
43
+ case PDFNet.Field.Type.e_text:
44
+ console.log('Field type: Text');
45
+ break;
46
+ case PDFNet.Field.Type.e_choice:
47
+ console.log('Field type: Choice');
48
+ break;
49
+ case PDFNet.Field.Type.e_signature:
50
+ console.log('Field type: Signature');
51
+ break;
52
+ default:
53
+ console.log('Field type: Null');
54
+ break;
55
+ }
56
+ console.log('------------------------------')
57
+ }
58
+ console.log('Done.');
59
+ } catch (err) {
60
+ console.log(err);
61
+ }
62
+
63
+ // Example 2) Import XFDF into FDF, then merge data from FDF into PDF
64
+ try {
65
+ // FDF to PDF
66
+ // form fields
67
+ console.log('Import form field data from XFDF to FDF.');
68
+
69
+ const fdf_doc1 = await PDFNet.FDFDoc.createFromXFDF(inputPath + 'form1_data.xfdf');
70
+ await fdf_doc1.save(outputPath + 'form1_data.fdf');
71
+
72
+ // annotations
73
+ console.log('Import annotations from XFDF to FDF.');
74
+
75
+ const fdf_doc2 = await PDFNet.FDFDoc.createFromXFDF(inputPath + 'form1_annots.xfdf');
76
+ await fdf_doc2.save(outputPath + 'form1_annots.fdf');
77
+
78
+ // FDF to PDF
79
+ // form fields
80
+ console.log('Merge form field data from FDF.');
81
+
82
+ const doc = await PDFNet.PDFDoc.createFromFilePath(`${inputPath}form1.pdf`);
83
+ doc.initSecurityHandler();
84
+ await doc.fdfMerge(fdf_doc1);
85
+
86
+ // Refreshing missing appearances is not required here, but is recommended to make them
87
+ // visible in PDF viewers with incomplete annotation viewing support. (such as Chrome)
88
+ doc.refreshAnnotAppearances();
89
+
90
+ await doc.save(outputPath + 'form1_filled.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
91
+
92
+ // annotations
93
+ console.log('Merge annotations from FDF.');
94
+
95
+ await doc.fdfMerge(fdf_doc2);
96
+ // Refreshing missing appearances is not required here, but is recommended to make them
97
+ // visible in PDF viewers with incomplete annotation viewing support. (such as Chrome)
98
+ doc.refreshAnnotAppearances();
99
+ await doc.save(outputPath + 'form1_filled_with_annots.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
100
+ console.log('Done.');
101
+ } catch (err) {
102
+ console.log(err);
103
+ }
104
+
105
+
106
+ // Example 3) Extract data from PDF to FDF, then export FDF as XFDF
107
+ try {
108
+ // PDF to FDF
109
+ const in_doc = await PDFNet.PDFDoc.createFromFilePath(outputPath + 'form1_filled_with_annots.pdf');
110
+ in_doc.initSecurityHandler();
111
+
112
+ // form fields only
113
+ console.log('Extract form fields data to FDF.');
114
+
115
+ const doc_fields = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_forms_only);
116
+ doc_fields.setPDFFileName('../form1_filled_with_annots.pdf');
117
+ await doc_fields.save(outputPath + 'form1_filled_data.fdf');
118
+
119
+ // annotations only
120
+ console.log('Extract annotations to FDF.');
121
+
122
+ const doc_annots = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_annots_only);
123
+ doc_annots.setPDFFileName('../form1_filled_with_annots.pdf');
124
+ await doc_annots.save(outputPath + 'form1_filled_annot.fdf');
125
+
126
+ // both form fields and annotations
127
+ console.log('Extract both form fields and annotations to FDF.');
128
+
129
+ const doc_both = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);
130
+ doc_both.setPDFFileName('../form1_filled_with_annots.pdf');
131
+ await doc_both.save(outputPath + 'form1_filled_both.fdf');
132
+
133
+ // FDF to XFDF
134
+ // form fields
135
+ console.log('Export form field data from FDF to XFDF.');
136
+
137
+ await doc_fields.saveAsXFDF(outputPath + 'form1_filled_data.xfdf');
138
+
139
+ // annotations
140
+ console.log('Export annotations from FDF to XFDF.');
141
+
142
+ await doc_annots.saveAsXFDF(outputPath + 'form1_filled_annot.xfdf');
143
+
144
+ // both form fields and annotations
145
+ console.log('Export both form fields and annotations from FDF to XFDF.');
146
+
147
+ await doc_both.saveAsXFDF(outputPath + 'form1_filled_both.xfdf');
148
+
149
+ console.log('Done.');
150
+ } catch (err) {
151
+ console.log(err);
152
+ }
153
+
154
+ // Example 4) Merge/Extract XFDF into/from PDF
155
+ try {
156
+ // Merge XFDF from string
157
+ const in_doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'numbered.pdf');
158
+ in_doc.initSecurityHandler();
159
+
160
+ console.log('Merge XFDF string into PDF.');
161
+
162
+ const str = `<?xml version="1.0" encoding="UTF-8" ?><xfdf xmlns="http://ns.adobe.com/xfdf" xml:space="preserve"><square subject="Rectangle" page="0" name="cf4d2e58-e9c5-2a58-5b4d-9b4b1a330e45" title="user" creationdate="D:20120827112326-07'00'" date="D:20120827112326-07'00'" rect="227.7814207650273,597.6174863387978,437.07103825136608,705.0491803278688" color="#000000" interior-color="#FFFF00" flags="print" width="1"><popup flags="print,nozoom,norotate" open="no" page="0" rect="0,792,0,792" /></square></xfdf>`;
163
+
164
+ const fdoc = await PDFNet.FDFDoc.createFromXFDF(str);
165
+ in_doc.fdfMerge(fdoc);
166
+ await in_doc.save(outputPath + 'numbered_modified.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
167
+ console.log('Merge complete.');
168
+
169
+ // Extract XFDF as string
170
+ console.log('Extract XFDF as a string.');
171
+
172
+ const fdoc_new = await in_doc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);
173
+ const XFDF_str = await fdoc_new.saveAsXFDFAsString();
174
+ console.log('Extracted XFDF: ');
175
+ console.log(XFDF_str);
176
+ console.log('Extract complete.');
177
+ } catch (err) {
178
+ console.log(err);
179
+ }
180
+
181
+ // Example 5) Read FDF files directly
182
+ try {
183
+ const doc = await PDFNet.FDFDoc.createFromFilePath(outputPath + 'form1_filled_data.fdf');
184
+
185
+ for (const itr = await doc.getFieldIteratorBegin(); await itr.hasNext(); itr.next()) {
186
+ const field = await itr.current();
187
+ console.log('Field name: ' + await field.getName());
188
+ console.log('Field partial name: ' + await field.getPartialName());
189
+
190
+ console.log('------------------------------');
191
+ }
192
+
193
+ console.log('Done.');
194
+ } catch (err) {
195
+ console.log(err);
196
+ }
197
+
198
+ // Example 6) Direct generation of FDF.
199
+ try
200
+ {
201
+ const doc = await PDFNet.FDFDoc.create();
202
+ // Create new fields (i.e. key/value pairs).
203
+ doc.fieldCreateFromString('Company', PDFNet.Field.Type.e_text, 'PDFTron Systems');
204
+ doc.fieldCreateFromString('First Name', PDFNet.Field.Type.e_text, 'John');
205
+ doc.fieldCreateFromString('Last Name', PDFNet.Field.Type.e_text, 'Doe');
206
+
207
+ await doc.save(outputPath + 'sample_output.fdf');
208
+ console.log('Done. Results saved in sample_output.fdf');
209
+ } catch (err) {
210
+ console.log(err);
211
+ }
212
+ };
213
+
214
+ PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function (error) { console.log('Error: ' + JSON.stringify(error)); }).then(function () { return PDFNet.shutdown(); });
215
+ };
216
+ exports.runFDFTest();
217
+ })(exports);
218
+ // eslint-disable-next-line spaced-comment
219
219
  //# sourceURL=FDFTest.js