There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

tofubl OP , (edited )

One deep dive into the IPP protocol, printer drivers, and specific supported formats (“what the hell is an octet-stream?!”) later, I have something functional.

I’m not a JS guy, so I don’t know if it’s a very node-y way to do it. But except for the pages coming out a little scaled this works:

Edit to briefly explain what this does: The mail node ingests unread emails and passes them forward to a function node that checks for pdf attachments. Those are passed forward one by one to a function node that takes care of converting the pdf to pcl (my printer supposedly knows how to handle pdf 1.7 but doesn’t, so I had to resort to this) and passes it to the IPP node as a data buffer .

spoiler[ { “id”: “86082bed0ed29155”, “type”: “IPPrint”, “z”: “08cc7c15668f2f65”, “name”: “Print to Network”, “IP”: “10.10.0.19:631/ipp/print”, “JOB_name”: “default_job_name”, “authuser”: “”, “authpassword”: “”, “authcheck”: “”, “x”: 780, “y”: 120, “wires”: [ [ “b1a8b92ede8a78a5” ] ] }, { “id”: “b1a8b92ede8a78a5”, “type”: “debug”, “z”: “08cc7c15668f2f65”, “name”: “debug 1”, “active”: true, “tosidebar”: true, “console”: false, “tostatus”: false, “complete”: “true”, “targetType”: “full”, “statusVal”: “”, “statusType”: “auto”, “x”: 960, “y”: 120, “wires”: [] }, { “id”: “1fb7fc3843af8e05”, “type”: “function”, “z”: “08cc7c15668f2f65”, “name”: “Convert PDF to PCL”, “func”: “const baseOptions = {n width: 2480,n height: 3508,n density: 300,n preserveAspectRatio: true,n format: ‘PCL’n};nn// prepare conversion functionnconst convert = await pdf2pic.fromBuffer(msg.payload, baseOptions);n// set additional conversion optionsnconvert.setGMn// bulk convert the whole input buffer to a pcl output buffernconvert.bulk(-1, {responseType: “buffer”}).then((outputs)=>{n // pass each page on to the printern outputs.forEach((output, index) => {n msg.payload = output.buffer;n if(msg.topic){n let jobname = msg.topicn }n msg.JOBName = (msg.topic ? msg.topic : “Mailjob”).concat(” “, index+1, ”/“, outputs.length);n msg.docFormat = “application/octet-stream”;n node.send(msg);n });n});n”, “outputs”: 1, “timeout”: 0, “noerr”: 0, “initialize”: “”, “finalize”: “”, “libs”: [ { “var”: “pdf2pic”, “module”: “pdf2pic” } ], “x”: 560, “y”: 120, “wires”: [ [ “86082bed0ed29155” ] ] }, { “id”: “224317e794da3cb5”, “type”: “e-mail in”, “z”: “08cc7c15668f2f65”, “name”: “Mail ingest”, “protocol”: “IMAP”, “server”: “test.mail.com”, “useSSL”: false, “autotls”: “always”, “port”: “143”, “authtype”: “BASIC”, “saslformat”: true, “token”: “oauth2Response.access_token”, “box”: “INBOX”, “disposition”: “Read”, “criteria”: “UNSEEN”, “repeat”: “300”, “fetch”: “auto”, “inputs”: 0, “x”: 160, “y”: 80, “wires”: [ [ “2fedaa18c9394b89” ] ] }, { “id”: “2fedaa18c9394b89”, “type”: “function”, “z”: “08cc7c15668f2f65”, “name”: “PDF Filter”, “func”: “if(msg.attachments.length > 0){n msg.attachments.forEach(function(attachment) {n if(attachment.contentType == “application/pdf”){n var newmsg = {};n newmsg.topic = msg.topic;n newmsg.filename = attachment.filename;n newmsg.payload = attachment.content;n node.send(newmsg);n }n });n}”, “outputs”: 1, “timeout”: 0, “noerr”: 0, “initialize”: “”, “finalize”: “”, “libs”: [], “x”: 360, “y”: 80, “wires”: [ [ “1fb7fc3843af8e05” ] ] }, { “id”: “3d8f7ad8e6b56d46”, “type”: “inject”, “z”: “08cc7c15668f2f65”, “name”: “Test print”, “props”: [ { “p”: “payload” }, { “p”: “topic”, “vt”: “str” } ], “repeat”: “”, “crontab”: “”, “once”: false, “onceDelay”: 0.1, “topic”: “”, “payload”: “”, “payloadType”: “date”, “x”: 160, “y”: 160, “wires”: [ [ “683ed6fe7c10540d” ] ] }, { “id”: “683ed6fe7c10540d”, “type”: “file in”, “z”: “08cc7c15668f2f65”, “name”: “”, “filename”: “/data/2517.pdf”, “filenameType”: “str”, “format”: “”, “chunk”: false, “sendError”: false, “encoding”: “none”, “allProps”: false, “x”: 340, “y”: 160, “wires”: [ [ “1fb7fc3843af8e05” ] ] } ]

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines