@pdftron/pdfnet-node-samples 9.2.0 → 9.3.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.
Files changed (140) hide show
  1. package/package.json +2 -2
  2. package/samples/AddImageTest/AddImageTest.js +115 -115
  3. package/samples/AdvancedImagingTest/AdvancedImagingTest.js +78 -64
  4. package/samples/AnnotationTest/AnnotationTest.js +641 -641
  5. package/samples/BookmarkTest/BookmarkTest.js +219 -219
  6. package/samples/CAD2PDFTest/CAD2PDFTest.js +4 -4
  7. package/samples/ContentReplacerTest/ContentReplacerTest.js +75 -75
  8. package/samples/ConvertTest/ConvertTest.js +5 -5
  9. package/samples/DigitalSignaturesTest/DigitalSignaturesTest.js +1 -1
  10. package/samples/ElementBuilderTest/ElementBuilderTest.js +513 -513
  11. package/samples/ElementEditTest/ElementEditTest.js +110 -110
  12. package/samples/ElementReaderAdvTest/ElementReaderAdvTest.js +305 -305
  13. package/samples/ElementReaderTest/ElementReaderTest.js +77 -77
  14. package/samples/EncTest/EncTest.js +175 -175
  15. package/samples/FDFTest/FDFTest.js +1 -1
  16. package/samples/HTML2PDFTest/HTML2PDFTest.js +53 -43
  17. package/samples/HighlightsTest/HighlightsTest.js +97 -0
  18. package/samples/ImageExtractTest/ImageExtractTest.js +1 -1
  19. package/samples/ImpositionTest/ImpositionTest.js +1 -1
  20. package/samples/InteractiveFormsTest/InteractiveFormsTest.js +1 -1
  21. package/samples/JBIG2Test/JBIG2Test.js +1 -1
  22. package/samples/LicenseKey/LicenseKey.js +11 -11
  23. package/samples/LogicalStructureTest/LogicalStructureTest.js +250 -250
  24. package/samples/OCRTest/OCRTest.js +19 -34
  25. package/samples/OfficeTemplateTest/OfficeTemplateTest.js +77 -0
  26. package/samples/OfficeToPDFTest/OfficeToPDFTest.js +1 -1
  27. package/samples/OptimizerTest/OptimizerTest.js +1 -1
  28. package/samples/PDF2HtmlTest/PDF2HtmlTest.js +123 -123
  29. package/samples/PDF2OfficeTest/PDF2OfficeTest.js +158 -158
  30. package/samples/PDFATest/PDFATest.js +85 -85
  31. package/samples/PDFDocMemoryTest/PDFDocMemoryTest.js +1 -1
  32. package/samples/PDFDrawTest/PDFDrawTest.js +305 -305
  33. package/samples/PDFLayersTest/PDFLayersTest.js +294 -294
  34. package/samples/PDFPackageTest/PDFPackageTest.js +1 -1
  35. package/samples/PDFPageTest/PDFPageTest.js +189 -189
  36. package/samples/PDFRedactTest/PDFRedactTest.js +74 -74
  37. package/samples/PageLabelsTest/PageLabelsTest.js +1 -1
  38. package/samples/PatternTest/PatternTest.js +1 -1
  39. package/samples/RectTest/RectTest.js +40 -40
  40. package/samples/SDFTest/SDFTest.js +88 -88
  41. package/samples/StamperTest/StamperTest.js +255 -255
  42. package/samples/TestFiles/Misc-Fixed.pfa +1166 -1166
  43. package/samples/TestFiles/SHA-2 Root USERTrust RSA CA Sectigo timestamping.crt +34 -34
  44. package/samples/TestFiles/form1_annots.xfdf +33 -33
  45. package/samples/TestFiles/form1_data.xfdf +139 -139
  46. package/samples/TestFiles/my_stream.txt +2310 -2310
  47. package/samples/TextExtractTest/TextExtractTest.js +286 -286
  48. package/samples/TextSearchTest/TextSearchTest.js +121 -121
  49. package/samples/U3DTest/U3DTest.js +1 -1
  50. package/samples/UndoRedoTest/UndoRedoTest.js +101 -101
  51. package/samples/UnicodeWriteTest/UnicodeWriteTest.js +173 -173
  52. package/samples/WebViewerConvertTest/WebViewerConvertTest.js +1 -1
  53. package/samples/runall.bat +6 -7
  54. package/samples/runall.sh +15 -14
  55. package/samples/AddImageTest/RunTest.bat +0 -2
  56. package/samples/AddImageTest/RunTest.sh +0 -2
  57. package/samples/AdvancedImagingTest/RunTest.bat +0 -2
  58. package/samples/AdvancedImagingTest/RunTest.sh +0 -2
  59. package/samples/AnnotationTest/RunTest.bat +0 -2
  60. package/samples/AnnotationTest/RunTest.sh +0 -2
  61. package/samples/BookmarkTest/RunTest.bat +0 -2
  62. package/samples/BookmarkTest/RunTest.sh +0 -2
  63. package/samples/CAD2PDFTest/RunTest.bat +0 -2
  64. package/samples/CAD2PDFTest/RunTest.sh +0 -2
  65. package/samples/ContentReplacerTest/RunTest.bat +0 -2
  66. package/samples/ContentReplacerTest/RunTest.sh +0 -2
  67. package/samples/ConvertTest/RunTest.bat +0 -2
  68. package/samples/ConvertTest/RunTest.sh +0 -2
  69. package/samples/DigitalSignaturesTest/RunTest.bat +0 -2
  70. package/samples/DigitalSignaturesTest/RunTest.sh +0 -2
  71. package/samples/ElementBuilderTest/RunTest.bat +0 -2
  72. package/samples/ElementBuilderTest/RunTest.sh +0 -2
  73. package/samples/ElementEditTest/RunTest.bat +0 -2
  74. package/samples/ElementEditTest/RunTest.sh +0 -2
  75. package/samples/ElementReaderAdvTest/RunTest.bat +0 -2
  76. package/samples/ElementReaderAdvTest/RunTest.sh +0 -2
  77. package/samples/ElementReaderTest/RunTest.bat +0 -2
  78. package/samples/ElementReaderTest/RunTest.sh +0 -2
  79. package/samples/EncTest/RunTest.bat +0 -2
  80. package/samples/EncTest/RunTest.sh +0 -2
  81. package/samples/FDFTest/RunTest.bat +0 -2
  82. package/samples/FDFTest/RunTest.sh +0 -2
  83. package/samples/HTML2PDFTest/RunTest.bat +0 -2
  84. package/samples/HTML2PDFTest/RunTest.sh +0 -2
  85. package/samples/ImageExtractTest/RunTest.bat +0 -2
  86. package/samples/ImageExtractTest/RunTest.sh +0 -2
  87. package/samples/ImpositionTest/RunTest.bat +0 -2
  88. package/samples/ImpositionTest/RunTest.sh +0 -2
  89. package/samples/InteractiveFormsTest/RunTest.bat +0 -2
  90. package/samples/InteractiveFormsTest/RunTest.sh +0 -2
  91. package/samples/JBIG2Test/RunTest.bat +0 -2
  92. package/samples/JBIG2Test/RunTest.sh +0 -2
  93. package/samples/LogicalStructureTest/RunTest.bat +0 -2
  94. package/samples/LogicalStructureTest/RunTest.sh +0 -2
  95. package/samples/OCRTest/RunTest.bat +0 -2
  96. package/samples/OCRTest/RunTest.sh +0 -2
  97. package/samples/OfficeToPDFTest/RunTest.bat +0 -2
  98. package/samples/OfficeToPDFTest/RunTest.sh +0 -2
  99. package/samples/OptimizerTest/RunTest.bat +0 -2
  100. package/samples/OptimizerTest/RunTest.sh +0 -2
  101. package/samples/PDF2HtmlTest/RunTest.bat +0 -2
  102. package/samples/PDF2HtmlTest/RunTest.sh +0 -2
  103. package/samples/PDF2OfficeTest/RunTest.bat +0 -2
  104. package/samples/PDF2OfficeTest/RunTest.sh +0 -2
  105. package/samples/PDFATest/RunTest.bat +0 -2
  106. package/samples/PDFATest/RunTest.sh +0 -2
  107. package/samples/PDFDocMemoryTest/RunTest.bat +0 -2
  108. package/samples/PDFDocMemoryTest/RunTest.sh +0 -2
  109. package/samples/PDFDrawTest/RunTest.bat +0 -2
  110. package/samples/PDFDrawTest/RunTest.sh +0 -2
  111. package/samples/PDFLayersTest/RunTest.bat +0 -2
  112. package/samples/PDFLayersTest/RunTest.sh +0 -2
  113. package/samples/PDFPackageTest/RunTest.bat +0 -2
  114. package/samples/PDFPackageTest/RunTest.sh +0 -2
  115. package/samples/PDFPageTest/RunTest.bat +0 -2
  116. package/samples/PDFPageTest/RunTest.sh +0 -2
  117. package/samples/PDFRedactTest/RunTest.bat +0 -2
  118. package/samples/PDFRedactTest/RunTest.sh +0 -2
  119. package/samples/PageLabelsTest/RunTest.bat +0 -2
  120. package/samples/PageLabelsTest/RunTest.sh +0 -2
  121. package/samples/PatternTest/RunTest.bat +0 -2
  122. package/samples/PatternTest/RunTest.sh +0 -2
  123. package/samples/RectTest/RunTest.bat +0 -2
  124. package/samples/RectTest/RunTest.sh +0 -2
  125. package/samples/SDFTest/RunTest.bat +0 -2
  126. package/samples/SDFTest/RunTest.sh +0 -2
  127. package/samples/StamperTest/RunTest.bat +0 -2
  128. package/samples/StamperTest/RunTest.sh +0 -2
  129. package/samples/TextExtractTest/RunTest.bat +0 -2
  130. package/samples/TextExtractTest/RunTest.sh +0 -2
  131. package/samples/TextSearchTest/RunTest.bat +0 -2
  132. package/samples/TextSearchTest/RunTest.sh +0 -2
  133. package/samples/U3DTest/RunTest.bat +0 -2
  134. package/samples/U3DTest/RunTest.sh +0 -2
  135. package/samples/UndoRedoTest/RunTest.bat +0 -2
  136. package/samples/UndoRedoTest/RunTest.sh +0 -2
  137. package/samples/UnicodeWriteTest/RunTest.bat +0 -2
  138. package/samples/UnicodeWriteTest/RunTest.sh +0 -2
  139. package/samples/WebViewerConvertTest/RunTest.bat +0 -2
  140. package/samples/WebViewerConvertTest/RunTest.sh +0 -2
@@ -1,122 +1,122 @@
1
- //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
3
- // Consult legal.txt regarding legal and license information.
4
- //---------------------------------------------------------------------------------------
5
-
6
-
7
- const { PDFNet } = require('@pdftron/pdfnet-node');
8
- const PDFTronLicense = require('../LicenseKey/LicenseKey');
9
-
10
- ((exports) => {
11
-
12
- exports.runTextSearchTest = () => {
13
-
14
- const main = async() => {
15
- // Relative path to the folder containing test files.
16
- const inputURL = '../TestFiles/';
17
- const inputFilename = 'credit card numbers.pdf'; // addimage.pdf, newsletter.pdf
18
-
19
- try {
20
- const doc = await PDFNet.PDFDoc.createFromFilePath(inputURL + inputFilename);
21
- doc.initSecurityHandler();
22
-
23
- const txtSearch = await PDFNet.TextSearch.create();
24
- let mode = PDFNet.TextSearch.Mode.e_whole_word + PDFNet.TextSearch.Mode.e_page_stop; // Uses both whole word and page stop
25
- let pattern = 'joHn sMiTh';
26
-
27
- txtSearch.begin(doc, pattern, mode); // searches for the "pattern" in the document while following the inputted modes.
28
-
29
- let step = 0;
30
-
31
- // call Run() iteratively to find all matching instances of the word 'joHn sMiTh'
32
- /* eslint-disable-next-line no-constant-condition */
33
- while (true) {
34
- const result = await txtSearch.run();
35
- let hlts;
36
- if (result.code === PDFNet.TextSearch.ResultCode.e_found) {
37
- if (step === 0) { // Step 0: found "John Smith"
38
- // note that, here, 'ambient_str' and 'highlights' are not written to,
39
- // as 'e_ambient_string' and 'e_highlight' are not set.
40
- console.log(result.out_str + "'s credit card number is: ");
41
-
42
- // now switch to using regular expressions to find John's credit card number
43
- mode = await txtSearch.getMode();
44
- mode += PDFNet.TextSearch.Mode.e_reg_expression + PDFNet.TextSearch.Mode.e_highlight;
45
- txtSearch.setMode(mode);
46
- pattern = '\\d{4}-\\d{4}-\\d{4}-\\d{4}'; // or "(\\d{4}-){3}\\d{4}"
47
- txtSearch.setPattern(pattern);
48
-
49
- ++step;
50
- } else if (step === 1) {
51
- // step 1: found John's credit card number
52
- console.log(' ' + result.out_str);
53
- // note that, here, 'hlts' is written to, as 'e_highlight' has been set.
54
- // output the highlight info of the credit card number.
55
- hlts = result.highlights;
56
- hlts.begin(doc);
57
- while ((await hlts.hasNext())) {
58
- const highlightPageNum = await hlts.getCurrentPageNumber();
59
- console.log('The current highlight is from page: ' + highlightPageNum);
60
- await hlts.next();
61
- }
62
- // see if there is an AMEX card number
63
- pattern = '\\d{4}-\\d{6}-\\d{5}';
64
- txtSearch.setPattern(pattern);
65
-
66
- ++step;
67
- } else if (step === 2) {
68
- // found an AMEX card number
69
- console.log('\nThere is an AMEX card number:\n ' + result.out_str);
70
-
71
- // change mode to find the owner of the credit card; supposedly, the owner's
72
- // name proceeds the number
73
- mode = await txtSearch.getMode();
74
- mode += PDFNet.TextSearch.Mode.e_search_up;
75
- txtSearch.setMode(mode);
76
- pattern = '[A-z]++ [A-z]++';
77
- txtSearch.setPattern(pattern);
78
-
79
- ++step;
80
- } else if (step === 3) {
81
- // found the owner's name of the AMEX card
82
- console.log("Is the owner's name:\n " + result.out_str + '?');
83
-
84
- // add a link annotation based on the location of the found instance
85
- hlts = result.highlights;
86
- await hlts.begin(doc); // is await needed?
87
- while ((await hlts.hasNext())) {
88
- const curPage = await doc.getPage((await hlts.getCurrentPageNumber()));
89
- const quadArr = await hlts.getCurrentQuads();
90
- for (let i = 0; i < quadArr.length; ++i) {
91
- const currQuad = quadArr[i];
92
- const x1 = Math.min(Math.min(Math.min(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
93
- const x2 = Math.max(Math.max(Math.max(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
94
- const y1 = Math.min(Math.min(Math.min(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
95
- const y2 = Math.max(Math.max(Math.max(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
96
-
97
- const hyperLink = await PDFNet.LinkAnnot.create(doc, (await PDFNet.Rect.init(x1, y1, x2, y2)));
98
- await hyperLink.setAction((await PDFNet.Action.createURI(doc, 'http://www.pdftron.com')));
99
- await curPage.annotPushBack(hyperLink);
100
- }
101
- hlts.next();
102
- }
103
- await doc.save('../TestFiles/Output/credit card numbers_linked.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
104
- break;
105
- }
106
- } else if (result.code === PDFNet.TextSearch.ResultCode.e_page) {
107
- // you can update your UI here, if needed
108
- console.log('page end');
109
- } else if (result.code === PDFNet.TextSearch.ResultCode.e_done) {
110
- break;
111
- }
112
- }
113
- } catch (err) {
114
- console.log(err);
115
- }
116
- };
117
- PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function(error){console.log('Error: ' + JSON.stringify(error));}).then(function(){return PDFNet.shutdown();});
118
- };
119
- exports.runTextSearchTest();
120
- })(exports);
121
- // eslint-disable-next-line spaced-comment
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
+ const { PDFNet } = require('@pdftron/pdfnet-node');
8
+ const PDFTronLicense = require('../LicenseKey/LicenseKey');
9
+
10
+ ((exports) => {
11
+
12
+ exports.runTextSearchTest = () => {
13
+
14
+ const main = async() => {
15
+ // Relative path to the folder containing test files.
16
+ const inputURL = '../TestFiles/';
17
+ const inputFilename = 'credit card numbers.pdf'; // addimage.pdf, newsletter.pdf
18
+
19
+ try {
20
+ const doc = await PDFNet.PDFDoc.createFromFilePath(inputURL + inputFilename);
21
+ doc.initSecurityHandler();
22
+
23
+ const txtSearch = await PDFNet.TextSearch.create();
24
+ let mode = PDFNet.TextSearch.Mode.e_whole_word + PDFNet.TextSearch.Mode.e_page_stop; // Uses both whole word and page stop
25
+ let pattern = 'joHn sMiTh';
26
+
27
+ txtSearch.begin(doc, pattern, mode); // searches for the "pattern" in the document while following the inputted modes.
28
+
29
+ let step = 0;
30
+
31
+ // call Run() iteratively to find all matching instances of the word 'joHn sMiTh'
32
+ /* eslint-disable-next-line no-constant-condition */
33
+ while (true) {
34
+ const result = await txtSearch.run();
35
+ let hlts;
36
+ if (result.code === PDFNet.TextSearch.ResultCode.e_found) {
37
+ if (step === 0) { // Step 0: found "John Smith"
38
+ // note that, here, 'ambient_str' and 'highlights' are not written to,
39
+ // as 'e_ambient_string' and 'e_highlight' are not set.
40
+ console.log(result.out_str + "'s credit card number is: ");
41
+
42
+ // now switch to using regular expressions to find John's credit card number
43
+ mode = await txtSearch.getMode();
44
+ mode += PDFNet.TextSearch.Mode.e_reg_expression + PDFNet.TextSearch.Mode.e_highlight;
45
+ txtSearch.setMode(mode);
46
+ pattern = '\\d{4}-\\d{4}-\\d{4}-\\d{4}'; // or "(\\d{4}-){3}\\d{4}"
47
+ txtSearch.setPattern(pattern);
48
+
49
+ ++step;
50
+ } else if (step === 1) {
51
+ // step 1: found John's credit card number
52
+ console.log(' ' + result.out_str);
53
+ // note that, here, 'hlts' is written to, as 'e_highlight' has been set.
54
+ // output the highlight info of the credit card number.
55
+ hlts = result.highlights;
56
+ hlts.begin(doc);
57
+ while ((await hlts.hasNext())) {
58
+ const highlightPageNum = await hlts.getCurrentPageNumber();
59
+ console.log('The current highlight is from page: ' + highlightPageNum);
60
+ await hlts.next();
61
+ }
62
+ // see if there is an AMEX card number
63
+ pattern = '\\d{4}-\\d{6}-\\d{5}';
64
+ txtSearch.setPattern(pattern);
65
+
66
+ ++step;
67
+ } else if (step === 2) {
68
+ // found an AMEX card number
69
+ console.log('\nThere is an AMEX card number:\n ' + result.out_str);
70
+
71
+ // change mode to find the owner of the credit card; supposedly, the owner's
72
+ // name proceeds the number
73
+ mode = await txtSearch.getMode();
74
+ mode += PDFNet.TextSearch.Mode.e_search_up;
75
+ txtSearch.setMode(mode);
76
+ pattern = '[A-z]++ [A-z]++';
77
+ txtSearch.setPattern(pattern);
78
+
79
+ ++step;
80
+ } else if (step === 3) {
81
+ // found the owner's name of the AMEX card
82
+ console.log("Is the owner's name:\n " + result.out_str + '?');
83
+
84
+ // add a link annotation based on the location of the found instance
85
+ hlts = result.highlights;
86
+ await hlts.begin(doc); // is await needed?
87
+ while ((await hlts.hasNext())) {
88
+ const curPage = await doc.getPage((await hlts.getCurrentPageNumber()));
89
+ const quadArr = await hlts.getCurrentQuads();
90
+ for (let i = 0; i < quadArr.length; ++i) {
91
+ const currQuad = quadArr[i];
92
+ const x1 = Math.min(Math.min(Math.min(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
93
+ const x2 = Math.max(Math.max(Math.max(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
94
+ const y1 = Math.min(Math.min(Math.min(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
95
+ const y2 = Math.max(Math.max(Math.max(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
96
+
97
+ const hyperLink = await PDFNet.LinkAnnot.create(doc, (await PDFNet.Rect.init(x1, y1, x2, y2)));
98
+ await hyperLink.setAction((await PDFNet.Action.createURI(doc, 'http://www.pdftron.com')));
99
+ await curPage.annotPushBack(hyperLink);
100
+ }
101
+ hlts.next();
102
+ }
103
+ await doc.save('../TestFiles/Output/credit card numbers_linked.pdf', PDFNet.SDFDoc.SaveOptions.e_linearized);
104
+ break;
105
+ }
106
+ } else if (result.code === PDFNet.TextSearch.ResultCode.e_page) {
107
+ // you can update your UI here, if needed
108
+ console.log('page end');
109
+ } else if (result.code === PDFNet.TextSearch.ResultCode.e_done) {
110
+ break;
111
+ }
112
+ }
113
+ } catch (err) {
114
+ console.log(err);
115
+ }
116
+ };
117
+ PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function(error){console.log('Error: ' + JSON.stringify(error));}).then(function(){return PDFNet.shutdown();});
118
+ };
119
+ exports.runTextSearchTest();
120
+ })(exports);
121
+ // eslint-disable-next-line spaced-comment
122
122
  //# sourceURL=TextSearchTest.js
@@ -1,5 +1,5 @@
1
1
  //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
2
+ // Copyright (c) 2001-2022 by PDFTron Systems Inc. All Rights Reserved.
3
3
  // Consult legal.txt regarding legal and license information.
4
4
  //---------------------------------------------------------------------------------------
5
5
 
@@ -1,101 +1,101 @@
1
- //---------------------------------------------------------------------------------------
2
- // Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
3
- // Consult legal.txt regarding legal and license information.
4
- //---------------------------------------------------------------------------------------
5
-
6
- //---------------------------------------------------------------------------------------
7
- // The following sample illustrates how to use the UndoRedo API.
8
- //---------------------------------------------------------------------------------------
9
- const { PDFNet } = require('@pdftron/pdfnet-node');
10
- const PDFTronLicense = require('../LicenseKey/LicenseKey');
11
-
12
- ((exports) => {
13
-
14
- exports.runUndoRedoTest = () => {
15
-
16
- const main = async () => {
17
- try {
18
- // Relative path to the folder containing test files.
19
- const inputPath = '../TestFiles/';
20
- const outputPath = inputPath + 'Output/';
21
-
22
- // Open the PDF document.
23
- const doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'newsletter.pdf');
24
-
25
- const undo_manager = await doc.getUndoManager();
26
-
27
- // Take a snapshot to which we can undo after making changes.
28
- const snap0 = await undo_manager.takeSnapshot();
29
-
30
- const snap0_state = await snap0.currentState();
31
-
32
- const page = await doc.pageCreate(); // Start a new page
33
-
34
- const bld = await PDFNet.ElementBuilder.create(); // Used to build new Element objects
35
- const writer = await PDFNet.ElementWriter.create(); // Used to write Elements to the page
36
- writer.beginOnPage(page); // Begin writing to this page
37
-
38
- // ----------------------------------------------------------
39
- // Add JPEG image to the file
40
- const img = await PDFNet.Image.createFromFile(doc, inputPath + 'peppers.jpg');
41
- const element = await bld.createImageFromMatrix(img, await PDFNet.Matrix2D.create(200, 0, 0, 250, 50, 500));
42
- writer.writePlacedElement(element);
43
-
44
- await writer.end(); // Finish writing to the page
45
- await doc.pagePushFront(page);
46
-
47
- // Take a snapshot after making changes, so that we can redo later (after undoing first).
48
- const snap1 = await undo_manager.takeSnapshot();
49
-
50
- if (await (await snap1.previousState()).equals(snap0_state)) {
51
- console.log('snap1 previous state equals snap0_state; previous state is correct');
52
- }
53
-
54
- const snap1_state = await snap1.currentState();
55
-
56
- await doc.save(outputPath + 'addimage.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
57
-
58
- if (await undo_manager.canUndo()) {
59
- const undo_snap = await undo_manager.undo();
60
-
61
- await doc.save(outputPath + 'addimage_undone.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
62
-
63
- const undo_snap_state = await undo_snap.currentState();
64
-
65
- if (await undo_snap_state.equals(snap0_state)) {
66
- console.log('undo_snap_state equals snap0_state; undo was successful');
67
- }
68
-
69
- if (await undo_manager.canRedo()) {
70
- const redo_snap = await undo_manager.redo();
71
-
72
- await doc.save(outputPath + 'addimage_redone.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
73
-
74
- if (await (await redo_snap.previousState()).equals(undo_snap_state)) {
75
- console.log('redo_snap previous state equals undo_snap_state; previous state is correct');
76
- }
77
-
78
- const redo_snap_state = await redo_snap.currentState();
79
-
80
- if (await redo_snap_state.equals(snap1_state)) {
81
- console.log('Snap1 and redo_snap are equal; redo was successful');
82
- }
83
- }
84
- else {
85
- console.log('Problem encountered - cannot redo.');
86
- }
87
- }
88
- else {
89
- console.log('Problem encountered - cannot undo.');
90
- }
91
- } catch (err) {
92
- console.log(err.stack);
93
- }
94
- };
95
-
96
- PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function (error) { console.log('Error: ' + JSON.stringify(error)); }).then(function () { return PDFNet.shutdown(); });
97
- };
98
- exports.runUndoRedoTest();
99
- })(exports);
100
- // eslint-disable-next-line spaced-comment
101
- //# sourceURL=UndoRedoTest.js
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
+ // The following sample illustrates how to use the UndoRedo API.
8
+ //---------------------------------------------------------------------------------------
9
+ const { PDFNet } = require('@pdftron/pdfnet-node');
10
+ const PDFTronLicense = require('../LicenseKey/LicenseKey');
11
+
12
+ ((exports) => {
13
+
14
+ exports.runUndoRedoTest = () => {
15
+
16
+ const main = async () => {
17
+ try {
18
+ // Relative path to the folder containing test files.
19
+ const inputPath = '../TestFiles/';
20
+ const outputPath = inputPath + 'Output/';
21
+
22
+ // Open the PDF document.
23
+ const doc = await PDFNet.PDFDoc.createFromFilePath(inputPath + 'newsletter.pdf');
24
+
25
+ const undo_manager = await doc.getUndoManager();
26
+
27
+ // Take a snapshot to which we can undo after making changes.
28
+ const snap0 = await undo_manager.takeSnapshot();
29
+
30
+ const snap0_state = await snap0.currentState();
31
+
32
+ const page = await doc.pageCreate(); // Start a new page
33
+
34
+ const bld = await PDFNet.ElementBuilder.create(); // Used to build new Element objects
35
+ const writer = await PDFNet.ElementWriter.create(); // Used to write Elements to the page
36
+ writer.beginOnPage(page); // Begin writing to this page
37
+
38
+ // ----------------------------------------------------------
39
+ // Add JPEG image to the file
40
+ const img = await PDFNet.Image.createFromFile(doc, inputPath + 'peppers.jpg');
41
+ const element = await bld.createImageFromMatrix(img, await PDFNet.Matrix2D.create(200, 0, 0, 250, 50, 500));
42
+ writer.writePlacedElement(element);
43
+
44
+ await writer.end(); // Finish writing to the page
45
+ await doc.pagePushFront(page);
46
+
47
+ // Take a snapshot after making changes, so that we can redo later (after undoing first).
48
+ const snap1 = await undo_manager.takeSnapshot();
49
+
50
+ if (await (await snap1.previousState()).equals(snap0_state)) {
51
+ console.log('snap1 previous state equals snap0_state; previous state is correct');
52
+ }
53
+
54
+ const snap1_state = await snap1.currentState();
55
+
56
+ await doc.save(outputPath + 'addimage.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
57
+
58
+ if (await undo_manager.canUndo()) {
59
+ const undo_snap = await undo_manager.undo();
60
+
61
+ await doc.save(outputPath + 'addimage_undone.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
62
+
63
+ const undo_snap_state = await undo_snap.currentState();
64
+
65
+ if (await undo_snap_state.equals(snap0_state)) {
66
+ console.log('undo_snap_state equals snap0_state; undo was successful');
67
+ }
68
+
69
+ if (await undo_manager.canRedo()) {
70
+ const redo_snap = await undo_manager.redo();
71
+
72
+ await doc.save(outputPath + 'addimage_redone.pdf', PDFNet.SDFDoc.SaveOptions.e_incremental);
73
+
74
+ if (await (await redo_snap.previousState()).equals(undo_snap_state)) {
75
+ console.log('redo_snap previous state equals undo_snap_state; previous state is correct');
76
+ }
77
+
78
+ const redo_snap_state = await redo_snap.currentState();
79
+
80
+ if (await redo_snap_state.equals(snap1_state)) {
81
+ console.log('Snap1 and redo_snap are equal; redo was successful');
82
+ }
83
+ }
84
+ else {
85
+ console.log('Problem encountered - cannot redo.');
86
+ }
87
+ }
88
+ else {
89
+ console.log('Problem encountered - cannot undo.');
90
+ }
91
+ } catch (err) {
92
+ console.log(err.stack);
93
+ }
94
+ };
95
+
96
+ PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function (error) { console.log('Error: ' + JSON.stringify(error)); }).then(function () { return PDFNet.shutdown(); });
97
+ };
98
+ exports.runUndoRedoTest();
99
+ })(exports);
100
+ // eslint-disable-next-line spaced-comment
101
+ //# sourceURL=UndoRedoTest.js