Inject the printer uri via the msg.topic
from your calling node (e.g. Timestamp node).
Printer uri should look like this: ipp://mycupsserver:632/printers/Brother_HL2030
Add a function to your flow and add the module @sealsystems/ipp
on the Setup
tab.
Then add the following code to the On Message
tab.
const printer = sealsystemsIpp.Printer(msg.topic);
const ippmsg = {
'operation-attributes-tag': {
'attributes-charset': 'utf-8',
'attributes-natural-language': 'en',
'printer-uri': msg.topic,
'which-jobs': 'pending',
'requested-attributes': [
'job-id',
'job-state',
'job-name',
]
}
}
printer.execute('Get-Jobs', ippmsg, function (err, res) {
msg.topic = 'pending-jobs';
msg.payload = 0;
if(err) {
msg.topic = 'error';
msg.payload = err;
} else {
if (Array.isArray(res['job-attributes-tag'])) {
msg.payload = res['job-attributes-tag'].length;
} else if (res['job-attributes-tag']) {
// single job is returned as object
msg.payload = 1;
}
}
node.send(msg);
});
return;
Payload contains the pending jobs count:
{ _msgid: "c00f96ee4ec4408c", payload: 1, topic: "pending-jobs" }
This can be modified to return any information about your printer and print jobs.
E.g. which-jobs
can be set to:
aborted
all
canceled
pending
pending-held
processing
processing-stopped
More examples for @sealsystems/ipp
can be found here:
https://github.com/sealsystems/node-ipp/tree/master/examples
https://github.com/sealsystems/node-ipp/blob/master/examples/Get-Jobs.js
https://ftp.pwg.org/pub/pwg/candidates/cs-ippjobext21-20230210-5100.7.pdf page 67
Inject:
![image](https://private-user-images.githubusercontent.com/432127/290644472-be2e95f4-b4f6-4aff-9a6a-46f6a0fed01c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMzE3MjIsIm5iZiI6MTcyMDAzMTQyMiwicGF0aCI6Ii80MzIxMjcvMjkwNjQ0NDcyLWJlMmU5NWY0LWI0ZjYtNGFmZi05YTZhLTQ2ZjZhMGZlZDAxYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxODMwMjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xYjA4ZTY4MWVkMzVlNDI0YjUyNTdhMTAzMWUzOGRlODQ4ZTZmMzFjNGIzNTA3ZDUzNGM3MmM5NDE0OWI5MWVjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.YsBaF_nPQ710MgUxlqA0I0SzVGxCtUTYtdFquaZF0Wg)
Function setup:
![image](https://private-user-images.githubusercontent.com/432127/290644606-1a463659-1fb1-4c19-8919-69f502a44627.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMzE3MjIsIm5iZiI6MTcyMDAzMTQyMiwicGF0aCI6Ii80MzIxMjcvMjkwNjQ0NjA2LTFhNDYzNjU5LTFmYjEtNGMxOS04OTE5LTY5ZjUwMmE0NDYyNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxODMwMjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02ZTMzNTBmNDc2NmJlNTU0ZDJmZDMyZTY0ZGE4ODg4ZGU2MTVhZmYwMTJlZWFlMTQ4ZjUwNjk1MzNiMTE2MGI3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.DR_CA4DCb5kKLHD1wzonQ4Tweofu6g61SVoAm6sJsEI)
Function code;
![image](https://private-user-images.githubusercontent.com/432127/290644637-c269b34c-9856-42ba-855b-5d2272ce6d1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMzE3MjIsIm5iZiI6MTcyMDAzMTQyMiwicGF0aCI6Ii80MzIxMjcvMjkwNjQ0NjM3LWMyNjliMzRjLTk4NTYtNDJiYS04NTViLTVkMjI3MmNlNmQxYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxODMwMjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01NWUzZGQzZmZjN2Q4YjVmYjljNDcwYmQ2YTZhNzAxYzIyYzk0MzI5YmNiNTRkNjQ1YjNkYTEyNTRkMDc2ZmQ3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.2gqijfRd4_RTq_w0zzvunABCDZ7tvTGhiqDC1OY66pc)