node-hp-scan-to 1.4.2 → 1.5.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/README.md +75 -23
- package/dist/Destination.js +2 -2
- package/dist/Destination.js.map +1 -1
- package/dist/EventTable.js +1 -1
- package/dist/EventTable.js.map +1 -1
- package/dist/HPApi.d.ts +1 -0
- package/dist/HPApi.js +7 -4
- package/dist/HPApi.js.map +1 -1
- package/dist/Job.js +2 -2
- package/dist/Job.js.map +1 -1
- package/dist/JpegUtil.d.ts +1 -0
- package/dist/PaperlessCOnfig.d.ts +7 -0
- package/dist/PaperlessCOnfig.js +3 -0
- package/dist/PaperlessCOnfig.js.map +1 -0
- package/dist/PaperlessConfig.d.ts +7 -0
- package/dist/PaperlessConfig.js +3 -0
- package/dist/PaperlessConfig.js.map +1 -0
- package/dist/ScanCaps.js +12 -2
- package/dist/ScanCaps.js.map +1 -1
- package/dist/ScanContent.d.ts +0 -1
- package/dist/ScanContent.js +0 -24
- package/dist/ScanContent.js.map +1 -1
- package/dist/ScanJobSettings.js +2 -2
- package/dist/ScanJobSettings.js.map +1 -1
- package/dist/ScanStatus.d.ts +1 -1
- package/dist/ScanStatus.js.map +1 -1
- package/dist/WalkupScanDestinations.js +1 -1
- package/dist/WalkupScanDestinations.js.map +1 -1
- package/dist/WalkupScanToCompDestinations.js +1 -1
- package/dist/WalkupScanToCompDestinations.js.map +1 -1
- package/dist/commitInfo.json +3 -0
- package/dist/healthcheck.d.ts +1 -0
- package/dist/healthcheck.js +24 -0
- package/dist/healthcheck.js.map +1 -0
- package/dist/index.js +109 -19
- package/dist/index.js.map +1 -1
- package/dist/listening.js +2 -2
- package/dist/listening.js.map +1 -1
- package/dist/paperless/PaperlessConfig.d.ts +7 -0
- package/dist/paperless/PaperlessConfig.js +3 -0
- package/dist/paperless/PaperlessConfig.js.map +1 -0
- package/dist/paperless/paperless.d.ts +7 -0
- package/dist/paperless/paperless.js +83 -0
- package/dist/paperless/paperless.js.map +1 -0
- package/dist/paperless.d.ts +7 -0
- package/dist/paperless.js +83 -0
- package/dist/paperless.js.map +1 -0
- package/dist/pdfProcessing.d.ts +4 -0
- package/dist/pdfProcessing.js +52 -0
- package/dist/pdfProcessing.js.map +1 -0
- package/dist/postProcessing.d.ts +3 -0
- package/dist/postProcessing.js +44 -0
- package/dist/postProcessing.js.map +1 -0
- package/dist/scanProcessing.d.ts +7 -1
- package/dist/scanProcessing.js +23 -49
- package/dist/scanProcessing.js.map +1 -1
- package/dist/test/PathHelper.test.js +2 -2
- package/dist/test/PathHelper.test.js.map +1 -1
- package/dist/test/ScanCaps.test.js +20 -0
- package/dist/test/ScanCaps.test.js.map +1 -1
- package/dist/test/scanProcessing.test.js +1 -0
- package/dist/test/scanProcessing.test.js.map +1 -1
- package/dist/test-bonjour.d.ts +1 -0
- package/dist/test-bonjour.js +20 -0
- package/dist/test-bonjour.js.map +1 -0
- package/package.json +14 -11
- package/src/Destination.ts +2 -2
- package/src/EventTable.ts +1 -1
- package/src/HPApi.ts +9 -6
- package/src/Job.ts +2 -2
- package/src/ScanCaps.ts +18 -8
- package/src/ScanContent.ts +0 -22
- package/src/ScanJobSettings.ts +2 -2
- package/src/ScanStatus.ts +1 -1
- package/src/WalkupScanDestinations.ts +1 -1
- package/src/WalkupScanToCompDestinations.ts +1 -1
- package/src/commitInfo.json +3 -0
- package/src/healthcheck.ts +17 -0
- package/src/index.ts +135 -24
- package/src/listening.ts +2 -2
- package/src/paperless/PaperlessConfig.ts +7 -0
- package/src/paperless/paperless.ts +122 -0
- package/src/pdfProcessing.ts +67 -0
- package/src/postProcessing.ts +91 -0
- package/src/scanProcessing.ts +50 -92
package/README.md
CHANGED
|
@@ -9,39 +9,57 @@
|
|
|
9
9
|
[](https://www.codefactor.io/repository/github/manuc66/node-hp-scan-to)
|
|
10
10
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fmanuc66%2Fnode-hp-scan-to?ref=badge_shield)
|
|
11
11
|
|
|
12
|
+
# node-hp-scan-to
|
|
13
|
+
|
|
12
14
|
The `node-hp-scan-to` is a Node.js application that replicates the functionality of the "Scan to Computer" from HP. For this purpose, the original HP Windows application's interaction with the device has been [reverse engineered](protocol_doc/HP%20Officejet%206500%20E710n-z.md)
|
|
13
15
|
|
|
14
|
-
Its primary purpose is to enable users to scan documents directly from an HP device and seamlessly transfer them to a computer. Unlike the original program, this program is designed to be compatible with Linux (including Docker), and is expected to work on Windows and macOS, making it accessible to a wider range of users and usages.
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
Its primary purpose is to enable users to scan documents directly from an HP device and seamlessly transfer them to a computer. Unlike the original program, this program is designed to be compatible with Linux (including Docker), and is expected to work on Windows and macOS, making it accessible to a wider range of users and usages.
|
|
17
|
+
|
|
18
|
+
## Supported devices
|
|
19
|
+
It has been developed and tested with the following HP All-in-One Printers:
|
|
20
|
+
- HP DeskJet 3520
|
|
21
|
+
- HP OfficeJet 6500A Plus
|
|
17
22
|
- HP Smart Tank Plus 570 series
|
|
18
23
|
|
|
19
24
|
Additionally, it has been reported to work on several other HP printer models.
|
|
20
|
-
- HP
|
|
21
|
-
- HP
|
|
22
|
-
- HP
|
|
23
|
-
- HP
|
|
24
|
-
- HP
|
|
25
|
-
- HP
|
|
25
|
+
- HP DeskJet 3050 All-in-One - J610a
|
|
26
|
+
- HP DeskJet 3775 All-in-One
|
|
27
|
+
- HP DeskJet 4670 All-in-One
|
|
28
|
+
- HP DeskJet 5525
|
|
29
|
+
- HP OfficeJet 3830
|
|
30
|
+
- HP OfficeJet 5230
|
|
31
|
+
- HP OfficeJet 5740
|
|
32
|
+
- HP OfficeJet 6700 Premium
|
|
33
|
+
- HP OfficeJet 6950
|
|
34
|
+
- HP OfficeJet 8010 series
|
|
35
|
+
- HP OfficeJet 8012
|
|
36
|
+
- HP OfficeJet Pro 7720 Wide Format All-in-One
|
|
26
37
|
- HP OfficeJet Pro 8025e
|
|
38
|
+
- HP OfficeJet Pro 9012e
|
|
39
|
+
- HP PageWide 377dw MFP
|
|
27
40
|
|
|
28
41
|
There are good chances it also works on your HP All-in-One Printer.
|
|
29
42
|
|
|
30
43
|
Please note that the `node-hp-scan-to` project is not endorsed by nor affiliated with HP. The reverse engineering of the original HP Windows application's interaction with the device has been done independently.
|
|
31
44
|
|
|
32
|
-
## Supported features
|
|
45
|
+
## Supported device features
|
|
33
46
|
- ✔️ JPG scan output
|
|
34
47
|
- ✔️ PDF document scan output
|
|
35
48
|
- ✔️ Scan from automatic document feeder
|
|
36
49
|
- ✔️ Dual side with automatic document feeder
|
|
37
50
|
- ✔️ Multi page from platen
|
|
38
51
|
- ✔️ Automatic IP address discovery
|
|
52
|
+
|
|
53
|
+
## Provided features
|
|
39
54
|
- ✔️ Prebuilt Docker images (multi arch)
|
|
40
55
|
- ✔️ Command line support (Cross platform)
|
|
41
56
|
- ✔️ Customizable file names
|
|
42
57
|
- ✔️ Customizable resolution
|
|
43
58
|
- ✔️ Customizable label on the device
|
|
44
59
|
- ✔️ Multi platform: Linux, Windows and most probably macOS
|
|
60
|
+
- ✔️ Folder target or paperless-ngx api upload
|
|
61
|
+
- ✔️ Clear all registered target
|
|
62
|
+
- ✔️ Automatic scan when automatic document feeder is getting loaded
|
|
45
63
|
|
|
46
64
|
## Usage
|
|
47
65
|
|
|
@@ -49,23 +67,36 @@ Please note that the `node-hp-scan-to` project is not endorsed by nor affiliated
|
|
|
49
67
|
`npx node-hp-scan-to`
|
|
50
68
|
|
|
51
69
|
- `-ip` or `--address` followed by the ip address of the printer, i.e. `-ip 192.168.0.5`. This overrides `-p`.
|
|
70
|
+
- `--device-up-polling-interval` is the polling interval in milliseconds to detect if the device is up or not
|
|
52
71
|
- `-l` or `--label` The label to display on the printer (default is the hostname).
|
|
53
72
|
- `-n` or `--name` followed by the printer name, it probably contains spaces, so it needs to be quoted, i.e. `-name "Officejet 6500 E710n-z"`
|
|
54
73
|
- `-d` or `--directory` followed by the directory path where the scanned documents should be saved, i.e. `-d ~/Documents/Scans`. Defaults to `/tmp/scan-to-pc<random value>` when not set.
|
|
55
74
|
- `-t` or `--temp-directory` Temp directory used for processing. Defaults to `/tmp/scan-to-pc<random value>` when not set.
|
|
56
75
|
- `-p` or `--pattern` followed by the pattern for the filename without file extension, i.e. `"scan"_dd.mm.yyyy_hh:MM:ss` to name the scanned file `scan_19.04.2021_17:26:47`. Date and time patterns are replaced by the current date and time, text that should not be replaced need to be inside quotes. Documentation for the pattern can be found [here](https://www.npmjs.com/package/dateformat) in the section `Mask options`. Defaults to `scan<increasing number>_page<page number>` when not set.
|
|
57
76
|
- `-r` or `--resolution` Resolution in DPI of the scans (defaults is 200).
|
|
77
|
+
- `-w` or `--width` followed by an integer, the with in pixel of the scans (default: 2481)
|
|
78
|
+
- `-h` or `--height` followed by an integer, the height in pixel of the scans (default: 3507)
|
|
79
|
+
- `-s` or `--paperless-post-document-url` followed by the paperless post document url (example: https://domain.tld/api/documents/post_document/)
|
|
80
|
+
- `k` or `--paperless-token` followed by te paperless-ngx api token
|
|
58
81
|
- `-D, --debug"` enables debug logs.
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
83
|
+
#### `listen command`
|
|
84
|
+
This is the default mode, it will listen the device for new job and trigger based on the selection on the device.
|
|
85
|
+
|
|
86
|
+
Do run `npx node-hp-scan-to listen --help` to get command line usage help
|
|
87
|
+
|
|
88
|
+
#### `adf-autoscan`
|
|
89
|
+
This will trigger a scan job as soon as the adf is loaded with paper
|
|
90
|
+
|
|
91
|
+
Do run `npx node-hp-scan-to adf-autoscan --help` to get command line usage help
|
|
92
|
+
|
|
93
|
+
You can also set the environment `MAIN_COMMAND` to `adf-autoscan` with docker
|
|
94
|
+
|
|
95
|
+
#### `clear-registrations`
|
|
96
|
+
This will clear all registered target on the device (useful for trial and error and debugging)
|
|
97
|
+
Do run `npx node-hp-scan-to clear-registrations --help` to get command line usage help
|
|
98
|
+
|
|
99
|
+
You can also set the environment `MAIN_COMMAND` to `clear-registrations` with docker
|
|
69
100
|
|
|
70
101
|
### Run with docker
|
|
71
102
|
|
|
@@ -89,6 +120,8 @@ Exhaustive list of supported environment variables and their meaning, or corresp
|
|
|
89
120
|
- `DIR`: command-line flag `-d`/`--directory`
|
|
90
121
|
- `TEMP_DIR`: command-line flag `-t`/`--temp-directory`
|
|
91
122
|
- `RESOLUTION`: command-line flag `-r`/`--resolution`
|
|
123
|
+
- `PAPERLESS_POST_DOCUMENT_URL`: the paperless post document url (if provided with token, a pdf is uploaded to paperless-ngx) for example: `PAPERLESS_POST_DOCUMENT_URL= "http://<paperless-host>:<port>/api/documents/post_document/"`
|
|
124
|
+
- `PAPERLESS_TOKEN`: the paperless api token for example: `PAPERLESS_TOKEN= "xxxxxxxxxxxx..."`
|
|
92
125
|
- `CMDLINE`: additional command-line flags that will be put at the end of the command.
|
|
93
126
|
|
|
94
127
|
__To enable debug logs set the environment variable `CMDLINE` to `-D`.__
|
|
@@ -132,7 +165,7 @@ Apply the following manifest (the PersistentVolumeClaim must also be deployed be
|
|
|
132
165
|
```yml
|
|
133
166
|
apiVersion: apps/v1
|
|
134
167
|
kind: Deployment
|
|
135
|
-
|
|
168
|
+
name: hp-scan-to
|
|
136
169
|
spec:
|
|
137
170
|
replicas: 1
|
|
138
171
|
selector:
|
|
@@ -177,16 +210,35 @@ spec:
|
|
|
177
210
|
claimName: incoming-scans
|
|
178
211
|
```
|
|
179
212
|
|
|
180
|
-
|
|
213
|
+
### How to run from the code
|
|
214
|
+
If you wish to test it by cloning this repository:
|
|
215
|
+
```sh
|
|
216
|
+
git clone ...
|
|
217
|
+
cd node-hp-scan-to
|
|
218
|
+
yarn install -d
|
|
219
|
+
yarn build
|
|
220
|
+
# now start the program with the ip or name of the desired printer
|
|
221
|
+
node dist/index.js -ip 192.168.1.4 # or -n "Officejet 6500 E710n-z"
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
#### Debugging
|
|
181
225
|
I'm using Visual Studio Code to debug this application, so instead of running ts-node just enter `code .` and press F5 to start debugging.
|
|
182
226
|
You may want to set your printers ip or name in `.vscode/launch.json`.
|
|
183
227
|
|
|
184
|
-
|
|
185
228
|
## 💖 Support this project
|
|
186
|
-
|
|
229
|
+
|
|
230
|
+
Thank you so much to everyone who has already supported this project! Your generosity is greatly appreciated and it motivates me to keep improving and maintaining this project.
|
|
231
|
+
|
|
232
|
+
If this project has helped you save money or time, or simply made your life easier, you can support me by buying me a cup of coffee:
|
|
187
233
|
|
|
188
234
|
- [](https://www.paypal.me/manuc66)
|
|
189
235
|
- Bitcoin — You can send me bitcoins at this address: `33gxVjey6g4Beha26fSQZLFfWWndT1oY3F`
|
|
190
236
|
|
|
237
|
+
Thank you for your support!
|
|
238
|
+
|
|
239
|
+
## 🙏 Special Thanks
|
|
240
|
+
|
|
241
|
+
A special thank you to [JetBrains](https://www.jetbrains.com/) for supporting this project with a free license for their amazing development tools. Their support helps make this project possible.
|
|
242
|
+
|
|
191
243
|
## License
|
|
192
244
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fmanuc66%2Fnode-hp-scan-to?ref=badge_large)
|
package/dist/Destination.js
CHANGED
|
@@ -54,8 +54,8 @@ class Destination {
|
|
|
54
54
|
parsed.WalkupScanDestination.Hostname[0]._ = this.hostname;
|
|
55
55
|
parsed.WalkupScanDestination.Name[0]._ = this.name;
|
|
56
56
|
parsed.WalkupScanDestination.LinkType[0] = this.linkType;
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
const builder = new xml2js_1.Builder();
|
|
58
|
+
const xml = builder.buildObject(parsed);
|
|
59
59
|
if (this.toComp) {
|
|
60
60
|
return xml.replace(/WalkupScan/g, "WalkupScanToComp");
|
|
61
61
|
}
|
package/dist/Destination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Destination.js","sourceRoot":"","sources":["../src/Destination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,mCAAyC;AACzC,2CAA6B;AAE7B,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAU5B,MAAqB,WAAW;IAM9B,YAAY,IAAY,EAAE,QAAgB,EAAE,MAAe;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,cAAc,GAAW,0CAA0C,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,cAAc;gBACZ,wJAAwJ;oBACxJ,yGAAyG,CAAC;SAC7G;aAAM;YACL,cAAc;gBACZ,0JAA0J;oBAC1J,qHAAqH,CAAC;SACzH;QAED,cAAc;YACZ,iGAAiG;gBACjG,mFAAmF;gBACnF,kCAAkC;gBAClC,0BAA0B,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,MAAM,CAAC,WAAW,CACnB,CAAC,cAAc,CAAC,CAAC;QAElB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzD,
|
|
1
|
+
{"version":3,"file":"Destination.js","sourceRoot":"","sources":["../src/Destination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,mCAAyC;AACzC,2CAA6B;AAE7B,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAU5B,MAAqB,WAAW;IAM9B,YAAY,IAAY,EAAE,QAAgB,EAAE,MAAe;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,cAAc,GAAW,0CAA0C,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,cAAc;gBACZ,wJAAwJ;oBACxJ,yGAAyG,CAAC;SAC7G;aAAM;YACL,cAAc;gBACZ,0JAA0J;oBAC1J,qHAAqH,CAAC;SACzH;QAED,cAAc;YACZ,iGAAiG;gBACjG,mFAAmF;gBACnF,kCAAkC;gBAClC,0BAA0B,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,MAAM,CAAC,WAAW,CACnB,CAAC,cAAc,CAAC,CAAC;QAElB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzD,MAAM,OAAO,GAAG,IAAI,gBAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;SACvD;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;CACF;AA/CD,8BA+CC","sourcesContent":["\"use strict\";\n\nimport { Parser, Builder } from \"xml2js\";\nimport * as util from \"util\";\n\nconst parser = new Parser();\n\ntype WalkupScanDestinationData = {\n WalkupScanDestination: {\n Hostname: { _: string }[];\n Name: { _: string }[];\n LinkType: string[];\n };\n};\n\nexport default class Destination {\n private readonly name: string;\n private readonly hostname: string;\n private readonly linkType: string;\n private readonly toComp: boolean;\n\n constructor(name: string, hostname: string, toComp: boolean) {\n this.name = name;\n this.hostname = hostname;\n this.linkType = \"Network\";\n this.toComp = toComp;\n }\n\n async toXML() {\n let rawDestination: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n if (this.toComp) {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28 WalkupScan.xsd\">\\n';\n } else {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \\n' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21 WalkupScanDestinations.xsd\">\\n';\n }\n\n rawDestination +=\n '\\t<Hostname xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/2009/04/06\"></Hostname>\\n' +\n '\\t<Name xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\"></Name>\\n' +\n \"\\t<LinkType>Network</LinkType>\\n\" +\n \"</WalkupScanDestination>\";\n\n const parsed = await util.promisify<string, WalkupScanDestinationData>(\n parser.parseString,\n )(rawDestination);\n\n parsed.WalkupScanDestination.Hostname[0]._ = this.hostname;\n parsed.WalkupScanDestination.Name[0]._ = this.name;\n parsed.WalkupScanDestination.LinkType[0] = this.linkType;\n\n const builder = new Builder();\n const xml = builder.buildObject(parsed);\n if (this.toComp) {\n return xml.replace(/WalkupScan/g, \"WalkupScanToComp\");\n } else {\n return xml;\n }\n }\n}\n"]}
|
package/dist/EventTable.js
CHANGED
|
@@ -20,7 +20,7 @@ class EventTable {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
get events() {
|
|
23
|
-
|
|
23
|
+
const eventTable = this.data["ev:EventTable"];
|
|
24
24
|
if (eventTable != null && eventTable["ev:Event"] != null) {
|
|
25
25
|
return eventTable["ev:Event"].map((x) => new Event_1.default(x));
|
|
26
26
|
}
|
package/dist/EventTable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventTable.js","sourceRoot":"","sources":["../src/EventTable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,oDAA2C;AAC3C,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAa1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,OAAe,EACf,YAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,
|
|
1
|
+
{"version":3,"file":"EventTable.js","sourceRoot":"","sources":["../src/EventTable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,oDAA2C;AAC3C,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAa1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,OAAe,EACf,YAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;YACxD,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,eAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,6BAyBC","sourcesContent":["\"use strict\";\n\nimport Event, { EventData } from \"./Event\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, EventTableData>(parser.parseString);\n\nexport interface EtagEventTable {\n etag: string;\n eventTable: EventTable;\n}\n\nexport interface EventTableData {\n \"ev:EventTable\"?: {\n \"ev:Event\"?: EventData[];\n };\n}\n\nexport default class EventTable {\n private readonly data: EventTableData;\n constructor(data: EventTableData) {\n this.data = data;\n }\n\n static async createEtagEventTable(\n content: string,\n etagReceived: string,\n ): Promise<EtagEventTable> {\n const parsed = await parseString(content);\n return {\n etag: etagReceived,\n eventTable: new EventTable(parsed),\n };\n }\n\n get events() {\n const eventTable = this.data[\"ev:EventTable\"];\n if (eventTable != null && eventTable[\"ev:Event\"] != null) {\n return eventTable[\"ev:Event\"].map((x) => new Event(x));\n } else {\n return [];\n }\n }\n}\n"]}
|
package/dist/HPApi.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import ScanCaps from "./ScanCaps";
|
|
|
18
18
|
export default class HPApi {
|
|
19
19
|
static setDeviceIP(ip: string): void;
|
|
20
20
|
static setDebug(dbg: boolean): void;
|
|
21
|
+
static isDebug(): boolean;
|
|
21
22
|
private static logDebug;
|
|
22
23
|
private static callAxios;
|
|
23
24
|
static isAlive(timeout?: number | null): Promise<boolean>;
|
package/dist/HPApi.js
CHANGED
|
@@ -57,6 +57,9 @@ class HPApi {
|
|
|
57
57
|
static setDebug(dbg) {
|
|
58
58
|
debug = dbg;
|
|
59
59
|
}
|
|
60
|
+
static isDebug() {
|
|
61
|
+
return debug;
|
|
62
|
+
}
|
|
60
63
|
static logDebug(callId, isRequest, msg) {
|
|
61
64
|
if (debug) {
|
|
62
65
|
const id = String(callId).padStart(4, "0");
|
|
@@ -254,7 +257,7 @@ class HPApi {
|
|
|
254
257
|
static async removeDestination(walkupScanDestination) {
|
|
255
258
|
let path;
|
|
256
259
|
if (walkupScanDestination.resourceURI.startsWith("http")) {
|
|
257
|
-
|
|
260
|
+
const urlInfo = new url_1.URL(walkupScanDestination.resourceURI);
|
|
258
261
|
if (urlInfo.pathname === null) {
|
|
259
262
|
throw new Error(`invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`);
|
|
260
263
|
}
|
|
@@ -314,8 +317,8 @@ class HPApi {
|
|
|
314
317
|
}
|
|
315
318
|
static async getEvents(etag = "", decisecondTimeout = 0) {
|
|
316
319
|
var _a;
|
|
317
|
-
|
|
318
|
-
|
|
320
|
+
const url = this.appendTimeout("/EventMgmt/EventTable", decisecondTimeout);
|
|
321
|
+
const headers = this.placeETagHeader(etag, {});
|
|
319
322
|
let response;
|
|
320
323
|
try {
|
|
321
324
|
response = await HPApi.callAxios({
|
|
@@ -392,7 +395,7 @@ class HPApi {
|
|
|
392
395
|
throw response;
|
|
393
396
|
}
|
|
394
397
|
else {
|
|
395
|
-
|
|
398
|
+
const content = response.data;
|
|
396
399
|
return ScanStatus_1.default.createScanStatus(content);
|
|
397
400
|
}
|
|
398
401
|
}
|
package/dist/HPApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HPApi.js","sourceRoot":"","sources":["../src/HPApi.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\n\nimport { promisify } from \"util\";\nimport fs from \"fs\";\nimport axios, {\n AxiosError,\n AxiosRequestConfig,\n AxiosResponse,\n RawAxiosRequestHeaders,\n} from \"axios\";\nimport { URL } from \"url\";\nimport * as stream from \"stream\";\nimport { Stream } from \"stream\";\nimport EventTable, { EtagEventTable } from \"./EventTable\";\nimport Job from \"./Job\";\nimport ScanStatus from \"./ScanStatus\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport WalkupScanDestinations from \"./WalkupScanDestinations\";\nimport WalkupScanToCompDestinations from \"./WalkupScanToCompDestinations\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport Destination from \"./Destination\";\nimport WalkupScanToCompEvent from \"./WalkupScanToCompEvent\";\nimport DiscoveryTree from \"./DiscoveryTree\";\nimport WalkupScanToCompManifest from \"./WalkupScanToCompManifest\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport WalkupScanManifest from \"./WalkupScanManifest\";\nimport ScanJobManifest from \"./ScanJobManifest\";\nimport ScanCaps from \"./ScanCaps\";\nimport { delay } from \"./delay\";\nimport * as net from \"net\";\n\nlet printerIP = \"192.168.1.11\";\nlet debug = false;\nlet callCount = 0;\n\nexport default class HPApi {\n static setDeviceIP(ip: string): void {\n printerIP = ip;\n }\n\n static setDebug(dbg: boolean): void {\n debug = dbg;\n }\n\n private static logDebug(\n callId: number,\n isRequest: boolean,\n msg: object | string,\n ): void {\n if (debug) {\n const id = String(callId).padStart(4, \"0\");\n const content = typeof msg === \"string\" ? msg : JSON.stringify(msg);\n console.log(id + (isRequest ? \" -> \" : \" <- \") + content);\n }\n }\n\n private static async callAxios(\n request: AxiosRequestConfig,\n ): Promise<AxiosResponse<string>> {\n callCount++;\n if (request.timeout === 0) {\n request.timeout = 100_000;\n }\n HPApi.logDebug(callCount, true, request);\n try {\n const response = await axios(request);\n HPApi.logDebug(callCount, false, {\n status: response.status,\n data: response.data,\n headers: response.headers,\n statusText: response.statusText,\n });\n return response;\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (axiosError.isAxiosError) {\n HPApi.logDebug(callCount, false, {\n status: axiosError.response?.status,\n data: axiosError.response?.data,\n headers: axiosError.response?.headers,\n statusText: axiosError.response?.statusText,\n });\n }\n throw error;\n }\n }\n\n static async isAlive(timeout: number | null = null): Promise<boolean> {\n const definedTimeout = timeout || 10000; // default of 10 seconds\n return new Promise((resolve) => {\n const socket = net.createConnection(80, printerIP, () => {\n clearTimeout(timer);\n resolve(true);\n socket.end();\n });\n const timer = setTimeout(() => {\n resolve(false);\n socket.end();\n }, definedTimeout);\n socket.on(\"error\", () => {\n clearTimeout(timer);\n resolve(false);\n });\n });\n }\n\n static async waitDeviceUp(deviceUpPollingInterval: number): Promise<void> {\n let first = true;\n while (!(await HPApi.isAlive())) {\n if (first) {\n console.log(\n `Device ip: ${printerIP} is down! [${new Date().toISOString()}]`,\n );\n }\n first = false;\n await delay(deviceUpPollingInterval);\n }\n if (!first) {\n console.log(\n `Device ip: ${printerIP} is up again! [${new Date().toISOString()}]`,\n );\n }\n }\n\n static async getDiscoveryTree(): Promise<DiscoveryTree> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/DevMgmt/DiscoveryTree.xml\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return DiscoveryTree.createDiscoveryTree(response.data);\n }\n }\n\n static async getWalkupScanDestinations(\n uri: string = \"/WalkupScan/WalkupScanDestinations\",\n ): Promise<WalkupScanDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanDestinations.createWalkupScanDestinations(response.data);\n }\n }\n\n static async getWalkupScanToCompDestinations(): Promise<WalkupScanToCompDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScanToComp/WalkupScanToCompDestinations\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompDestinations.createWalkupScanToCompDestinations(\n response.data,\n );\n }\n }\n\n static async getWalkupScanManifest(uri: string): Promise<WalkupScanManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanManifest.createWalkupScanManifest(response.data);\n }\n }\n static async getWalkupScanToCompManifest(\n uri: string,\n ): Promise<WalkupScanToCompManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompManifest.createWalkupScanToCompManifest(\n response.data,\n );\n }\n }\n\n static async getScanJobManifest(uri: string): Promise<ScanJobManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanJobManifest.createScanJobManifest(response.data);\n }\n }\n\n static async getScanCaps(uri: string): Promise<ScanCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanCaps.createScanCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompCaps(\n uri: string,\n ): Promise<WalkupScanToCompCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompCaps.createWalkupScanToCompCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompEvent(\n compEventURI: string,\n ): Promise<WalkupScanToCompEvent> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: compEventURI,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n return WalkupScanToCompEvent.createWalkupScanToCompEvent(response.data);\n }\n }\n\n static async removeDestination(\n walkupScanDestination: WalkupScanDestination | WalkupScanToCompDestination,\n ): Promise<boolean> {\n let path: string;\n\n if (walkupScanDestination.resourceURI.startsWith(\"http\")) {\n let urlInfo = new URL(walkupScanDestination.resourceURI);\n if (urlInfo.pathname === null) {\n throw new Error(\n `invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`,\n );\n }\n path = urlInfo.pathname;\n } else {\n path = walkupScanDestination.resourceURI;\n }\n\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: path,\n method: \"DELETE\",\n responseType: \"text\",\n });\n if (response.status === 204 || response.status == 200) {\n return true;\n } else {\n throw response;\n }\n }\n\n static async registerWalkupScanDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScan/WalkupScanDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n static async registerWalkupScanToCompDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScanToComp/WalkupScanToCompDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n\n static async getEvents(\n etag = \"\",\n decisecondTimeout = 0,\n ): Promise<EtagEventTable> {\n let url = this.appendTimeout(\"/EventMgmt/EventTable\", decisecondTimeout);\n\n let headers = this.placeETagHeader(etag, {});\n\n let response: AxiosResponse<string>;\n try {\n response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"GET\",\n responseType: \"text\",\n headers: headers,\n timeout: decisecondTimeout * 100 * 1.1,\n });\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (!axiosError.isAxiosError) throw error;\n\n if (axiosError.response?.status === 304) {\n return {\n etag: etag,\n eventTable: new EventTable({}),\n };\n }\n throw error;\n }\n\n const etagReceived = response.headers[\"etag\"];\n if (etagReceived == null) {\n throw response;\n }\n\n const content = response.data;\n return EventTable.createEtagEventTable(content, etagReceived);\n }\n\n static placeETagHeader(\n etag: string,\n headers: RawAxiosRequestHeaders,\n ): RawAxiosRequestHeaders {\n if (etag !== \"\") {\n headers[\"If-None-Match\"] = etag;\n }\n return headers;\n }\n\n static appendTimeout(url: string, timeout: number | null = null): string {\n if (timeout == null) {\n timeout = 1200;\n }\n if (timeout > 0) {\n url += \"?timeout=\" + timeout;\n }\n return url;\n }\n\n static async getDestination(\n destinationURL: string,\n ): Promise<WalkupScanDestination | WalkupScanToCompDestination> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: destinationURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n if (destinationURL.includes(\"WalkupScanToComp\")) {\n return WalkupScanToCompDestination.createWalkupScanToCompDestination(\n content,\n );\n } else {\n return WalkupScanDestination.createWalkupScanDestination(content);\n }\n }\n }\n\n static async getScanStatus(): Promise<ScanStatus> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/Scan/Status\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n let content = response.data;\n return ScanStatus.createScanStatus(content);\n }\n }\n\n static delay(t: number): Promise<void> {\n return new Promise(function (resolve) {\n setTimeout(resolve, t);\n });\n }\n\n static async postJob(job: ScanJobSettings): Promise<string> {\n await HPApi.delay(500);\n const xml = await job.toXML();\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}:8080`,\n url: \"/Scan/Jobs\",\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return response.headers.location;\n } else {\n throw response;\n }\n }\n\n /**\n * @param jobURL\n * @return {Promise<Job|*>}\n */\n static async getJob(jobURL: string) {\n const response = await HPApi.callAxios({\n url: jobURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n return Job.createJob(content);\n }\n }\n\n static async downloadPage(\n binaryURL: string,\n destination: string,\n ): Promise<string> {\n const { data }: AxiosResponse<Stream> = await axios.request<Stream>({\n baseURL: `http://${printerIP}:8080`,\n url: binaryURL,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n const destinationFileStream = fs.createWriteStream(destination);\n data.pipe(destinationFileStream);\n\n await promisify(stream.finished)(destinationFileStream);\n\n return destination;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HPApi.js","sourceRoot":"","sources":["../src/HPApi.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\n\nimport { promisify } from \"util\";\nimport fs from \"fs\";\nimport axios, {\n AxiosError,\n AxiosRequestConfig,\n AxiosResponse,\n RawAxiosRequestHeaders,\n} from \"axios\";\nimport { URL } from \"url\";\nimport * as stream from \"stream\";\nimport { Stream } from \"stream\";\nimport EventTable, { EtagEventTable } from \"./EventTable\";\nimport Job from \"./Job\";\nimport ScanStatus from \"./ScanStatus\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport WalkupScanDestinations from \"./WalkupScanDestinations\";\nimport WalkupScanToCompDestinations from \"./WalkupScanToCompDestinations\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport Destination from \"./Destination\";\nimport WalkupScanToCompEvent from \"./WalkupScanToCompEvent\";\nimport DiscoveryTree from \"./DiscoveryTree\";\nimport WalkupScanToCompManifest from \"./WalkupScanToCompManifest\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport WalkupScanManifest from \"./WalkupScanManifest\";\nimport ScanJobManifest from \"./ScanJobManifest\";\nimport ScanCaps from \"./ScanCaps\";\nimport { delay } from \"./delay\";\nimport * as net from \"net\";\n\nlet printerIP = \"192.168.1.11\";\nlet debug = false;\nlet callCount = 0;\n\nexport default class HPApi {\n static setDeviceIP(ip: string): void {\n printerIP = ip;\n }\n\n static setDebug(dbg: boolean): void {\n debug = dbg;\n }\n static isDebug(): boolean {\n return debug;\n }\n\n private static logDebug(\n callId: number,\n isRequest: boolean,\n msg: object | string,\n ): void {\n if (debug) {\n const id = String(callId).padStart(4, \"0\");\n const content = typeof msg === \"string\" ? msg : JSON.stringify(msg);\n console.log(id + (isRequest ? \" -> \" : \" <- \") + content);\n }\n }\n\n private static async callAxios(\n request: AxiosRequestConfig,\n ): Promise<AxiosResponse<string>> {\n callCount++;\n if (request.timeout === 0) {\n request.timeout = 100_000;\n }\n HPApi.logDebug(callCount, true, request);\n try {\n const response = await axios(request);\n HPApi.logDebug(callCount, false, {\n status: response.status,\n data: response.data,\n headers: response.headers,\n statusText: response.statusText,\n });\n return response;\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (axiosError.isAxiosError) {\n HPApi.logDebug(callCount, false, {\n status: axiosError.response?.status,\n data: axiosError.response?.data,\n headers: axiosError.response?.headers,\n statusText: axiosError.response?.statusText,\n });\n }\n throw error;\n }\n }\n\n static async isAlive(timeout: number | null = null): Promise<boolean> {\n const definedTimeout = timeout || 10000; // default of 10 seconds\n return new Promise((resolve) => {\n const socket = net.createConnection(80, printerIP, () => {\n clearTimeout(timer);\n resolve(true);\n socket.end();\n });\n const timer = setTimeout(() => {\n resolve(false);\n socket.end();\n }, definedTimeout);\n socket.on(\"error\", () => {\n clearTimeout(timer);\n resolve(false);\n });\n });\n }\n\n static async waitDeviceUp(deviceUpPollingInterval: number): Promise<void> {\n let first = true;\n while (!(await HPApi.isAlive())) {\n if (first) {\n console.log(\n `Device ip: ${printerIP} is down! [${new Date().toISOString()}]`,\n );\n }\n first = false;\n await delay(deviceUpPollingInterval);\n }\n if (!first) {\n console.log(\n `Device ip: ${printerIP} is up again! [${new Date().toISOString()}]`,\n );\n }\n }\n\n static async getDiscoveryTree(): Promise<DiscoveryTree> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/DevMgmt/DiscoveryTree.xml\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return DiscoveryTree.createDiscoveryTree(response.data);\n }\n }\n\n static async getWalkupScanDestinations(\n uri: string = \"/WalkupScan/WalkupScanDestinations\",\n ): Promise<WalkupScanDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanDestinations.createWalkupScanDestinations(response.data);\n }\n }\n\n static async getWalkupScanToCompDestinations(): Promise<WalkupScanToCompDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScanToComp/WalkupScanToCompDestinations\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompDestinations.createWalkupScanToCompDestinations(\n response.data,\n );\n }\n }\n\n static async getWalkupScanManifest(uri: string): Promise<WalkupScanManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanManifest.createWalkupScanManifest(response.data);\n }\n }\n static async getWalkupScanToCompManifest(\n uri: string,\n ): Promise<WalkupScanToCompManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompManifest.createWalkupScanToCompManifest(\n response.data,\n );\n }\n }\n\n static async getScanJobManifest(uri: string): Promise<ScanJobManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanJobManifest.createScanJobManifest(response.data);\n }\n }\n\n static async getScanCaps(uri: string): Promise<ScanCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanCaps.createScanCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompCaps(\n uri: string,\n ): Promise<WalkupScanToCompCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompCaps.createWalkupScanToCompCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompEvent(\n compEventURI: string,\n ): Promise<WalkupScanToCompEvent> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: compEventURI,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n return WalkupScanToCompEvent.createWalkupScanToCompEvent(response.data);\n }\n }\n\n static async removeDestination(\n walkupScanDestination: WalkupScanDestination | WalkupScanToCompDestination,\n ): Promise<boolean> {\n let path: string;\n\n if (walkupScanDestination.resourceURI.startsWith(\"http\")) {\n const urlInfo = new URL(walkupScanDestination.resourceURI);\n if (urlInfo.pathname === null) {\n throw new Error(\n `invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`,\n );\n }\n path = urlInfo.pathname;\n } else {\n path = walkupScanDestination.resourceURI;\n }\n\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: path,\n method: \"DELETE\",\n responseType: \"text\",\n });\n if (response.status === 204 || response.status == 200) {\n return true;\n } else {\n throw response;\n }\n }\n\n static async registerWalkupScanDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScan/WalkupScanDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n static async registerWalkupScanToCompDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScanToComp/WalkupScanToCompDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n\n static async getEvents(\n etag: string = \"\",\n decisecondTimeout: number = 0,\n ): Promise<EtagEventTable> {\n const url = this.appendTimeout(\"/EventMgmt/EventTable\", decisecondTimeout);\n\n const headers = this.placeETagHeader(etag, {});\n\n let response: AxiosResponse<string>;\n try {\n response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"GET\",\n responseType: \"text\",\n headers: headers,\n timeout: decisecondTimeout * 100 * 1.1,\n });\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (!axiosError.isAxiosError) throw error;\n\n if (axiosError.response?.status === 304) {\n return {\n etag: etag,\n eventTable: new EventTable({}),\n };\n }\n throw error;\n }\n\n const etagReceived = response.headers[\"etag\"];\n if (etagReceived == null) {\n throw response;\n }\n\n const content = response.data;\n return EventTable.createEtagEventTable(content, etagReceived);\n }\n\n static placeETagHeader(\n etag: string,\n headers: RawAxiosRequestHeaders,\n ): RawAxiosRequestHeaders {\n if (etag !== \"\") {\n headers[\"If-None-Match\"] = etag;\n }\n return headers;\n }\n\n static appendTimeout(url: string, timeout: number | null = null): string {\n if (timeout == null) {\n timeout = 1200;\n }\n if (timeout > 0) {\n url += \"?timeout=\" + timeout;\n }\n return url;\n }\n\n static async getDestination(\n destinationURL: string,\n ): Promise<WalkupScanDestination | WalkupScanToCompDestination> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: destinationURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n if (destinationURL.includes(\"WalkupScanToComp\")) {\n return WalkupScanToCompDestination.createWalkupScanToCompDestination(\n content,\n );\n } else {\n return WalkupScanDestination.createWalkupScanDestination(content);\n }\n }\n }\n\n static async getScanStatus(): Promise<ScanStatus> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/Scan/Status\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n return ScanStatus.createScanStatus(content);\n }\n }\n\n static delay(t: number): Promise<void> {\n return new Promise(function (resolve) {\n setTimeout(resolve, t);\n });\n }\n\n static async postJob(job: ScanJobSettings): Promise<string> {\n await HPApi.delay(500);\n const xml = await job.toXML();\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}:8080`,\n url: \"/Scan/Jobs\",\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return response.headers.location;\n } else {\n throw response;\n }\n }\n\n /**\n * @param jobURL\n * @return {Promise<Job|*>}\n */\n static async getJob(jobURL: string) {\n const response = await HPApi.callAxios({\n url: jobURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n return Job.createJob(content);\n }\n }\n\n static async downloadPage(\n binaryURL: string,\n destination: string,\n ): Promise<string> {\n const { data }: AxiosResponse<Stream> = await axios.request<Stream>({\n baseURL: `http://${printerIP}:8080`,\n url: binaryURL,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n const destinationFileStream = fs.createWriteStream(destination);\n data.pipe(destinationFileStream);\n\n await promisify(stream.finished)(destinationFileStream);\n\n return destination;\n }\n}\n"]}
|
package/dist/Job.js
CHANGED
|
@@ -13,7 +13,7 @@ class Job {
|
|
|
13
13
|
return new Job(parsed);
|
|
14
14
|
}
|
|
15
15
|
get currentPageNumber() {
|
|
16
|
-
|
|
16
|
+
const preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
17
17
|
if (preScanPage) {
|
|
18
18
|
return preScanPage[0].PageNumber[0];
|
|
19
19
|
}
|
|
@@ -31,7 +31,7 @@ class Job {
|
|
|
31
31
|
return this.data["j:Job"]["j:JobState"][0];
|
|
32
32
|
}
|
|
33
33
|
get pageState() {
|
|
34
|
-
|
|
34
|
+
const preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
35
35
|
if (preScanPage) {
|
|
36
36
|
return preScanPage[0].PageState[0];
|
|
37
37
|
}
|
package/dist/Job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAkB,MAAM,CAAC,WAAW,CAAC,CAAC;AA4BnE,MAAqB,GAAG;IAEtB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAe;QACpC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,iBAAiB;QACnB,
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, JobData>(parser.parseString);\n\nexport interface JobData {\n \"j:Job\": {\n ScanJob: {\n PreScanPage?: {\n PageState: string[];\n BinaryURL: string[];\n PageNumber: string[];\n BufferInfo: {\n ImageWidth: string[];\n ImageHeight: string[];\n ScanSettings: {\n InputSource: string[];\n ContentType: string[];\n XResolution: string[];\n YResolution: string[];\n }[];\n }[];\n }[];\n PostScanPage?: {\n PageNumber: string[];\n }[];\n }[];\n \"j:JobState\": string[];\n };\n}\n\nexport default class Job {\n private readonly data: JobData;\n constructor(data: JobData) {\n this.data = data;\n }\n\n static async createJob(content: string): Promise<Job> {\n const parsed = await parseString(content);\n return new Job(parsed);\n }\n\n get currentPageNumber(): string | null {\n const preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageNumber[0];\n } else {\n return null;\n }\n }\n\n get totalPageNumber(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PostScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PostScanPage[0].PageNumber[0],\n 10,\n );\n }\n return null;\n }\n\n get jobState():\n | \"Completed\"\n | \"Processing\"\n | \"ReadyToUpload\"\n | \"Canceled\"\n | string {\n return this.data[\"j:Job\"][\"j:JobState\"][0];\n }\n\n get pageState(): string | null {\n const preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageState[0];\n } else {\n return null;\n }\n }\n\n get binaryURL(): string | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BinaryURL[0];\n }\n return null;\n }\n\n get imageWidth(): number | null {\n if (\n !Object.prototype.hasOwnProperty.call(\n this.data[\"j:Job\"].ScanJob[0],\n \"PreScanPage\",\n )\n ) {\n return null;\n }\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ImageWidth[0] ?? \"\",\n );\n }\n get imageHeight(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BufferInfo[0]\n .ImageHeight[0],\n );\n }\n return null;\n }\n get xResolution(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.XResolution[0] ?? \"\",\n );\n }\n return null;\n }\n get yResolution(): number | null {\n if (\n Object.prototype.hasOwnProperty.call(\n this.data[\"j:Job\"].ScanJob[0],\n \"PreScanPage\",\n )\n ) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.YResolution[0] ?? \"\",\n );\n }\n return null;\n }\n}\n"]}
|
package/dist/JpegUtil.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaperlessCOnfig.js","sourceRoot":"","sources":["../src/PaperlessCOnfig.ts"],"names":[],"mappings":"","sourcesContent":["export type PaperlessConfig = {\n postDocumentUrl: string;\n authToken: string;\n keepFiles: boolean;\n groupMultiPageScanIntoAPdf: boolean;\n alwaysSendAsPdfFile: boolean;\n};"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaperlessConfig.js","sourceRoot":"","sources":["../src/PaperlessConfig.ts"],"names":[],"mappings":"","sourcesContent":["export type PaperlessConfig = {\n postDocumentUrl: string;\n authToken: string;\n keepFiles: boolean;\n groupMultiPageScanIntoAPdf: boolean;\n alwaysSendAsPdfFile: boolean;\n};"]}
|
package/dist/ScanCaps.js
CHANGED
|
@@ -13,10 +13,20 @@ class ScanCaps {
|
|
|
13
13
|
return new ScanCaps(parsed);
|
|
14
14
|
}
|
|
15
15
|
get platenMaxWidth() {
|
|
16
|
-
|
|
16
|
+
if (Object.prototype.hasOwnProperty.call(this.data["ScanCaps"], "Platen")) {
|
|
17
|
+
return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxWidth"][0], 10);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
17
22
|
}
|
|
18
23
|
get platenMaxHeight() {
|
|
19
|
-
|
|
24
|
+
if (Object.prototype.hasOwnProperty.call(this.data["ScanCaps"], "Platen")) {
|
|
25
|
+
return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxHeight"][0], 10);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
20
30
|
}
|
|
21
31
|
get adfMaxWidth() {
|
|
22
32
|
if (Object.prototype.hasOwnProperty.call(this.data["ScanCaps"], "Adf")) {
|
package/dist/ScanCaps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScanCaps.js","sourceRoot":"","sources":["../src/ScanCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAuB,MAAM,CAAC,WAAW,CAAC,CAAC;AAmBxE,MAAqB,QAAQ;IAG3B,YAAY,IAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,EAAE,CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"ScanCaps.js","sourceRoot":"","sources":["../src/ScanCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAuB,MAAM,CAAC,WAAW,CAAC,CAAC;AAmBxE,MAAqB,QAAQ;IAG3B,YAAY,IAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,EAAE;YACzE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,EAAE;YACzE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CACtD,WAAW,CACZ,CAAC,CAAC,CAAC,EACJ,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAI,WAAW;QACb,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE;YACtE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACpE,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAI,YAAY;QACd,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE;YACtE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACrE,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CACF;AAzDD,2BAyDC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanCapsData>(parser.parseString);\n\nexport interface ScanCapsData {\n ScanCaps: {\n Platen: {\n InputSourceCaps: {\n MaxWidth: string[];\n MaxHeight: string[];\n }[];\n }[];\n Adf: {\n InputSourceCaps: {\n MaxWidth: string[];\n MaxHeight: string[];\n }[];\n }[];\n };\n}\n\nexport default class ScanCaps {\n private readonly data: ScanCapsData;\n\n constructor(data: ScanCapsData) {\n this.data = data;\n }\n\n static async createScanCaps(content: string): Promise<ScanCaps> {\n const parsed = await parseString(content);\n return new ScanCaps(parsed);\n }\n\n get platenMaxWidth(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Platen\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Platen\"][0][\"InputSourceCaps\"][0][\"MaxWidth\"][0],\n 10,\n );\n } else {\n return null;\n }\n }\n\n get platenMaxHeight(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Platen\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Platen\"][0][\"InputSourceCaps\"][0][\n \"MaxHeight\"\n ][0],\n 10,\n );\n } else {\n return null;\n }\n }\n\n get adfMaxWidth(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Adf\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Adf\"][0][\"InputSourceCaps\"][0][\"MaxWidth\"][0],\n 10,\n );\n } else {\n return null;\n }\n }\n\n get adfMaxHeight(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Adf\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Adf\"][0][\"InputSourceCaps\"][0][\"MaxHeight\"][0],\n 10,\n );\n } else {\n return null;\n }\n }\n}\n"]}
|
package/dist/ScanContent.d.ts
CHANGED
package/dist/ScanContent.js
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createPdfFrom = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
-
const jspdf_1 = require("jspdf");
|
|
9
|
-
async function createPdfFrom(scanContent, destination) {
|
|
10
|
-
let doc = null;
|
|
11
|
-
for (const element of scanContent.elements) {
|
|
12
|
-
const widthInInches = element.width / element.xResolution;
|
|
13
|
-
const heightInInches = element.height / element.yResolution;
|
|
14
|
-
const format = [widthInInches, heightInInches];
|
|
15
|
-
if (doc == null) {
|
|
16
|
-
doc = new jspdf_1.jsPDF({ unit: "in", floatPrecision: 3, format });
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
doc.addPage(format);
|
|
20
|
-
}
|
|
21
|
-
const imageByteBuffer = await promises_1.default.readFile(element.path);
|
|
22
|
-
doc.addImage(imageByteBuffer, "JPEG", 0, 0, widthInInches, heightInInches);
|
|
23
|
-
}
|
|
24
|
-
doc === null || doc === void 0 ? void 0 : doc.save(destination);
|
|
25
|
-
}
|
|
26
|
-
exports.createPdfFrom = createPdfFrom;
|
|
27
3
|
//# sourceMappingURL=ScanContent.js.map
|
package/dist/ScanContent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScanContent.js","sourceRoot":"","sources":["../src/ScanContent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScanContent.js","sourceRoot":"","sources":["../src/ScanContent.ts"],"names":[],"mappings":"","sourcesContent":["import fs from \"fs/promises\";\n\nimport { jsPDF } from \"jspdf\";\n\nexport interface ScanContent {\n elements: ScanPage[];\n}\nexport interface ScanPage {\n path: string;\n pageNumber: number;\n width: number;\n height: number;\n xResolution: number;\n yResolution: number;\n}\n"]}
|
package/dist/ScanJobSettings.js
CHANGED
|
@@ -16,7 +16,7 @@ class ScanJobSettings {
|
|
|
16
16
|
this.isDuplex = isDuplex;
|
|
17
17
|
}
|
|
18
18
|
async toXML() {
|
|
19
|
-
|
|
19
|
+
const rawJob = '<?xml version="1.0" encoding="UTF-8"?>\n' +
|
|
20
20
|
'<ScanSettings xmlns="http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19 Scan Schema - 0.26.xsd">\n' +
|
|
21
21
|
"\t<XResolution>200</XResolution>\n" +
|
|
22
22
|
"\t<YResolution>200</YResolution>\n" +
|
|
@@ -56,7 +56,7 @@ class ScanJobSettings {
|
|
|
56
56
|
parsed.ScanSettings["AdfOptions"] = [{ AdfOption: ["Duplex"] }];
|
|
57
57
|
}
|
|
58
58
|
parsed.ScanSettings.ContentType[0] = this.contentType;
|
|
59
|
-
|
|
59
|
+
const builder = new xml2js_1.default.Builder({
|
|
60
60
|
xmldec: { version: "1.0", encoding: "UTF-8", standalone: false },
|
|
61
61
|
renderOpts: { pretty: true, indent: "\t", newline: "\n" },
|
|
62
62
|
});
|