@pdftron/pdfnet-node-samples 10.7.0 → 10.8.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/package.json +21 -20
- package/readme.md +12 -12
- package/samples/AddImageTest/AddImageTest.js +115 -115
- package/samples/AdvancedImagingTest/AdvancedImagingTest.js +78 -78
- package/samples/AnnotationTest/AnnotationTest.js +641 -641
- package/samples/BookmarkTest/BookmarkTest.js +219 -219
- package/samples/CAD2PDFTest/CAD2PDFTest.js +79 -79
- package/samples/ContentReplacerTest/ContentReplacerTest.js +75 -75
- package/samples/ConvertPrintTest/ConvertPrintTest.js +153 -153
- package/samples/ConvertTest/ConvertTest.js +203 -203
- package/samples/DataExtractionTest/DataExtractionTest.js +214 -214
- package/samples/DigitalSignaturesTest/DigitalSignaturesTest.js +526 -526
- package/samples/DocumentCreationTest/DocumentCreationTest.js +409 -409
- package/samples/ElementBuilderTest/ElementBuilderTest.js +513 -513
- package/samples/ElementEditTest/ElementEditTest.js +110 -110
- package/samples/ElementReaderAdvTest/ElementReaderAdvTest.js +305 -305
- package/samples/ElementReaderTest/ElementReaderTest.js +77 -77
- package/samples/EncTest/EncTest.js +175 -175
- package/samples/FDFTest/FDFTest.js +218 -218
- package/samples/HTML2PDFTest/HTML2PDFTest.js +164 -164
- package/samples/HighlightsTest/HighlightsTest.js +97 -97
- package/samples/ImageExtractTest/ImageExtractTest.js +129 -129
- package/samples/ImpositionTest/ImpositionTest.js +86 -86
- package/samples/InteractiveFormsTest/InteractiveFormsTest.js +381 -381
- package/samples/JBIG2Test/JBIG2Test.js +88 -88
- package/samples/LicenseKey/LicenseKey.js +11 -11
- package/samples/LogicalStructureTest/LogicalStructureTest.js +250 -250
- package/samples/OCRTest/OCRTest.js +235 -235
- package/samples/OfficeTemplateTest/OfficeTemplateTest.js +79 -79
- package/samples/OfficeToPDFTest/OfficeToPDFTest.js +125 -125
- package/samples/OptimizerTest/OptimizerTest.js +191 -191
- package/samples/PDF2HtmlTest/PDF2HtmlTest.js +123 -123
- package/samples/PDF2OfficeTest/PDF2OfficeTest.js +158 -158
- package/samples/PDFATest/PDFATest.js +85 -85
- package/samples/PDFDocMemoryTest/PDFDocMemoryTest.js +84 -84
- package/samples/PDFDrawTest/PDFDrawTest.js +305 -305
- package/samples/PDFLayersTest/PDFLayersTest.js +294 -294
- package/samples/PDFPackageTest/PDFPackageTest.js +111 -111
- package/samples/PDFPageTest/PDFPageTest.js +189 -189
- package/samples/PDFRedactTest/PDFRedactTest.js +74 -74
- package/samples/PageLabelsTest/PageLabelsTest.js +138 -138
- package/samples/PatternTest/PatternTest.js +226 -226
- package/samples/RectTest/RectTest.js +40 -40
- package/samples/SDFTest/SDFTest.js +87 -87
- package/samples/StamperTest/StamperTest.js +255 -255
- package/samples/TestFiles/Misc-Fixed.pfa +1166 -1166
- package/samples/TestFiles/SHA-2 Root USERTrust RSA CA Sectigo timestamping.crt +34 -34
- package/samples/TestFiles/form1_annots.xfdf +33 -33
- package/samples/TestFiles/form1_data.xfdf +139 -139
- package/samples/TestFiles/my_stream.txt +2310 -2310
- package/samples/TestFiles/tiger.svg +378 -378
- package/samples/TextExtractTest/TextExtractTest.js +286 -286
- package/samples/TextSearchTest/TextSearchTest.js +121 -121
- package/samples/U3DTest/U3DTest.js +104 -104
- package/samples/UndoRedoTest/UndoRedoTest.js +101 -101
- package/samples/UnicodeWriteTest/UnicodeWriteTest.js +173 -173
- package/samples/WebViewerConvertTest/WebViewerConvertTest.js +135 -135
- package/samples/runall.bat +12 -12
- package/samples/runall.sh +15 -15
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
//---------------------------------------------------------------------------------------
|
|
2
|
-
// Copyright (c) 2001-2024 by Apryse Software Inc. All Rights Reserved.
|
|
3
|
-
// Consult legal.txt regarding legal and license information.
|
|
4
|
-
//---------------------------------------------------------------------------------------
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// This sample project illustrates how to recompress bi-tonal images in an
|
|
8
|
-
// existing PDF document using JBIG2 compression. The sample is not intended
|
|
9
|
-
// to be a generic PDF optimization tool.
|
|
10
|
-
//
|
|
11
|
-
// You can download the entire document using the following link:
|
|
12
|
-
// http://www.pdftron.com/net/samplecode/data/US061222892.pdf
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
const { PDFNet } = require('@pdftron/pdfnet-node');
|
|
16
|
-
const PDFTronLicense = require('../LicenseKey/LicenseKey');
|
|
17
|
-
|
|
18
|
-
((exports) => {
|
|
19
|
-
'use strict';
|
|
20
|
-
|
|
21
|
-
exports.runJBIG2Test = () => {
|
|
22
|
-
const main = async () => {
|
|
23
|
-
try {
|
|
24
|
-
const pdf_doc = await PDFNet.PDFDoc.createFromFilePath('../TestFiles/US061222892-a.pdf');
|
|
25
|
-
pdf_doc.initSecurityHandler();
|
|
26
|
-
|
|
27
|
-
const cos_doc = await pdf_doc.getSDFDoc();
|
|
28
|
-
const num_objs = await cos_doc.xRefSize();
|
|
29
|
-
for (let i = 1; i < num_objs; ++i) {
|
|
30
|
-
const obj = await cos_doc.getObj(i);
|
|
31
|
-
if (obj && !(await obj.isFree()) && await obj.isStream()) {
|
|
32
|
-
// Process only images
|
|
33
|
-
let itr = await obj.find('Subtype');
|
|
34
|
-
if (!(await itr.hasNext()) || await (await itr.value()).getName() !== 'Image')
|
|
35
|
-
continue;
|
|
36
|
-
const input_image = await PDFNet.Image.createFromObj(obj);
|
|
37
|
-
// Process only gray-scale images
|
|
38
|
-
if (await input_image.getComponentNum() != 1)
|
|
39
|
-
continue;
|
|
40
|
-
if (await input_image.getBitsPerComponent() != 1) // Recompress only 1 BPC images
|
|
41
|
-
continue;
|
|
42
|
-
|
|
43
|
-
// Skip images that are already compressed using JBIG2
|
|
44
|
-
itr = await obj.find('Filter');
|
|
45
|
-
if (await itr.hasNext()) {
|
|
46
|
-
const value = await itr.value();
|
|
47
|
-
if (await value.isName() && await value.getName() === 'JBIG2Decode') continue;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const filter = await obj.getDecodedStream();
|
|
51
|
-
const reader = await PDFNet.FilterReader.create(filter);
|
|
52
|
-
|
|
53
|
-
const hint_set = await PDFNet.ObjSet.create();
|
|
54
|
-
const hint = await hint_set.createArray();
|
|
55
|
-
|
|
56
|
-
hint.pushBackName('JBIG2');
|
|
57
|
-
hint.pushBackName('Lossless');
|
|
58
|
-
|
|
59
|
-
const new_image = await PDFNet.Image.createFromStream(cos_doc, reader, await input_image.getImageWidth(),
|
|
60
|
-
await input_image.getImageHeight(), 1, await PDFNet.ColorSpace.createDeviceGray(), hint);
|
|
61
|
-
|
|
62
|
-
const new_img_obj = await new_image.getSDFObj();
|
|
63
|
-
itr = await obj.find('Decode');
|
|
64
|
-
if (await itr.hasNext())
|
|
65
|
-
new_img_obj.put('Decode', await itr.value());
|
|
66
|
-
itr = await obj.find('ImageMask');
|
|
67
|
-
if (await itr.hasNext())
|
|
68
|
-
new_img_obj.put('ImageMask', await itr.value());
|
|
69
|
-
itr = await obj.find('Mask');
|
|
70
|
-
if (await itr.hasNext())
|
|
71
|
-
new_img_obj.put('Mask', await itr.value());
|
|
72
|
-
|
|
73
|
-
await cos_doc.swap(i, await new_img_obj.getObjNum());
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
pdf_doc.save('../TestFiles/Output/US061222892_JBIG2.pdf', PDFNet.SDFDoc.SaveOptions.e_remove_unused);
|
|
78
|
-
} catch (err) {
|
|
79
|
-
console.log(err);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function(error) {
|
|
83
|
-
console.log('Error: ' + JSON.stringify(error));
|
|
84
|
-
}).then(function(){ return PDFNet.shutdown(); });
|
|
85
|
-
};
|
|
86
|
-
exports.runJBIG2Test();
|
|
87
|
-
})(exports);
|
|
88
|
-
// eslint-disable-next-line spaced-comment
|
|
1
|
+
//---------------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2001-2024 by Apryse Software Inc. All Rights Reserved.
|
|
3
|
+
// Consult legal.txt regarding legal and license information.
|
|
4
|
+
//---------------------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// This sample project illustrates how to recompress bi-tonal images in an
|
|
8
|
+
// existing PDF document using JBIG2 compression. The sample is not intended
|
|
9
|
+
// to be a generic PDF optimization tool.
|
|
10
|
+
//
|
|
11
|
+
// You can download the entire document using the following link:
|
|
12
|
+
// http://www.pdftron.com/net/samplecode/data/US061222892.pdf
|
|
13
|
+
//
|
|
14
|
+
|
|
15
|
+
const { PDFNet } = require('@pdftron/pdfnet-node');
|
|
16
|
+
const PDFTronLicense = require('../LicenseKey/LicenseKey');
|
|
17
|
+
|
|
18
|
+
((exports) => {
|
|
19
|
+
'use strict';
|
|
20
|
+
|
|
21
|
+
exports.runJBIG2Test = () => {
|
|
22
|
+
const main = async () => {
|
|
23
|
+
try {
|
|
24
|
+
const pdf_doc = await PDFNet.PDFDoc.createFromFilePath('../TestFiles/US061222892-a.pdf');
|
|
25
|
+
pdf_doc.initSecurityHandler();
|
|
26
|
+
|
|
27
|
+
const cos_doc = await pdf_doc.getSDFDoc();
|
|
28
|
+
const num_objs = await cos_doc.xRefSize();
|
|
29
|
+
for (let i = 1; i < num_objs; ++i) {
|
|
30
|
+
const obj = await cos_doc.getObj(i);
|
|
31
|
+
if (obj && !(await obj.isFree()) && await obj.isStream()) {
|
|
32
|
+
// Process only images
|
|
33
|
+
let itr = await obj.find('Subtype');
|
|
34
|
+
if (!(await itr.hasNext()) || await (await itr.value()).getName() !== 'Image')
|
|
35
|
+
continue;
|
|
36
|
+
const input_image = await PDFNet.Image.createFromObj(obj);
|
|
37
|
+
// Process only gray-scale images
|
|
38
|
+
if (await input_image.getComponentNum() != 1)
|
|
39
|
+
continue;
|
|
40
|
+
if (await input_image.getBitsPerComponent() != 1) // Recompress only 1 BPC images
|
|
41
|
+
continue;
|
|
42
|
+
|
|
43
|
+
// Skip images that are already compressed using JBIG2
|
|
44
|
+
itr = await obj.find('Filter');
|
|
45
|
+
if (await itr.hasNext()) {
|
|
46
|
+
const value = await itr.value();
|
|
47
|
+
if (await value.isName() && await value.getName() === 'JBIG2Decode') continue;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const filter = await obj.getDecodedStream();
|
|
51
|
+
const reader = await PDFNet.FilterReader.create(filter);
|
|
52
|
+
|
|
53
|
+
const hint_set = await PDFNet.ObjSet.create();
|
|
54
|
+
const hint = await hint_set.createArray();
|
|
55
|
+
|
|
56
|
+
hint.pushBackName('JBIG2');
|
|
57
|
+
hint.pushBackName('Lossless');
|
|
58
|
+
|
|
59
|
+
const new_image = await PDFNet.Image.createFromStream(cos_doc, reader, await input_image.getImageWidth(),
|
|
60
|
+
await input_image.getImageHeight(), 1, await PDFNet.ColorSpace.createDeviceGray(), hint);
|
|
61
|
+
|
|
62
|
+
const new_img_obj = await new_image.getSDFObj();
|
|
63
|
+
itr = await obj.find('Decode');
|
|
64
|
+
if (await itr.hasNext())
|
|
65
|
+
new_img_obj.put('Decode', await itr.value());
|
|
66
|
+
itr = await obj.find('ImageMask');
|
|
67
|
+
if (await itr.hasNext())
|
|
68
|
+
new_img_obj.put('ImageMask', await itr.value());
|
|
69
|
+
itr = await obj.find('Mask');
|
|
70
|
+
if (await itr.hasNext())
|
|
71
|
+
new_img_obj.put('Mask', await itr.value());
|
|
72
|
+
|
|
73
|
+
await cos_doc.swap(i, await new_img_obj.getObjNum());
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
pdf_doc.save('../TestFiles/Output/US061222892_JBIG2.pdf', PDFNet.SDFDoc.SaveOptions.e_remove_unused);
|
|
78
|
+
} catch (err) {
|
|
79
|
+
console.log(err);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
PDFNet.runWithCleanup(main, PDFTronLicense.Key).catch(function(error) {
|
|
83
|
+
console.log('Error: ' + JSON.stringify(error));
|
|
84
|
+
}).then(function(){ return PDFNet.shutdown(); });
|
|
85
|
+
};
|
|
86
|
+
exports.runJBIG2Test();
|
|
87
|
+
})(exports);
|
|
88
|
+
// eslint-disable-next-line spaced-comment
|
|
89
89
|
//# sourceURL=JBIG2Test.js
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//---------------------------------------------------------------------------------------
|
|
2
|
-
// Copyright (c) 2001-2023 by Apryse Software Inc. All Rights Reserved.
|
|
3
|
-
// Consult legal.txt regarding legal and license information.
|
|
4
|
-
//---------------------------------------------------------------------------------------
|
|
5
|
-
|
|
6
|
-
//"Enter your key here. If you don't have it, please go to https://www.pdftron.com/pws/get-key to obtain a demo license or https://www.pdftron.com/form/contact-sales to obtain a production key.
|
|
7
|
-
const LicenseKey = 'YOUR_PDFTRON_LICENSE_KEY';
|
|
8
|
-
if(LicenseKey == 'YOUR_PDFTRON_LICENSE_KEY'){
|
|
9
|
-
throw ('Please enter your license key by replacing \'YOUR_PDFTRON_LICENSE_KEY\' that is assigned to the LicenseKey variable in Samples/LicenseKey/LicenseKey.js. If you do not have a license key, please go to https://www.pdftron.com/pws/get-key to obtain a demo license or https://www.pdftron.com/form/contact-sales to obtain a production key.');
|
|
10
|
-
}
|
|
11
|
-
exports.Key = LicenseKey;
|
|
1
|
+
//---------------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) 2001-2023 by Apryse Software Inc. All Rights Reserved.
|
|
3
|
+
// Consult legal.txt regarding legal and license information.
|
|
4
|
+
//---------------------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
//"Enter your key here. If you don't have it, please go to https://www.pdftron.com/pws/get-key to obtain a demo license or https://www.pdftron.com/form/contact-sales to obtain a production key.
|
|
7
|
+
const LicenseKey = 'YOUR_PDFTRON_LICENSE_KEY';
|
|
8
|
+
if(LicenseKey == 'YOUR_PDFTRON_LICENSE_KEY'){
|
|
9
|
+
throw ('Please enter your license key by replacing \'YOUR_PDFTRON_LICENSE_KEY\' that is assigned to the LicenseKey variable in Samples/LicenseKey/LicenseKey.js. If you do not have a license key, please go to https://www.pdftron.com/pws/get-key to obtain a demo license or https://www.pdftron.com/form/contact-sales to obtain a production key.');
|
|
10
|
+
}
|
|
11
|
+
exports.Key = LicenseKey;
|