you could pull data from web-socket send to serial.. example below, you can only have one WS so use the one already there or use link node, select your config for serial node "printer".i dont know anything about that printer but other ones use cups drivers ect for setup.this flow will continually send data you will need to setup a switch somehow to send once maybe a button on dashboard.
you could get all the data directly from the web socket "ws://localhost:3000/signalk/v1/stream" it might be more than you need or you could parse out what you want.as in example for lat.
Code:
[{"id":"9b02acf9.c5cea","type":"websocket in","z":"c0812b05.2e9308","name":"ws","server":"ae07cdf2.445f1","client":"","x":50,"y":100,"wires":[["fbd5273f.9a1e28"]]},{"id":"fbd5273f.9a1e28","type":"jsonpath","z":"c0812b05.2e9308","expression":"$.updates..values[*]","split":false,"name":"Signal K delta values","x":220,"y":100,"wires":[["18af8a77.9fec86"]]},{"id":"18af8a77.9fec86","type":"function","z":"c0812b05.2e9308","name":"merge values","func":"var paths={};\nvar arrayLength = msg.payload.length;\nfor (var i = 0; i < arrayLength; i++) {\n paths[msg.payload[i].path]=msg.payload[i].value;\n}\nmsg.payload = paths;\nreturn msg;","outputs":1,"noerr":0,"x":420,"y":100,"wires":[["16f4fff3.e963e"]]},{"id":"16f4fff3.e963e","type":"function","z":"c0812b05.2e9308","name":"navigation.position.latitude","func":"var signalk_key=\"navigation.position\";\n\nif(msg.payload.hasOwnProperty(signalk_key)){\n msg.payload=msg.payload[signalk_key][\"latitude\"];\n return msg;\n}","outputs":1,"noerr":0,"x":640,"y":100,"wires":[["f0dbe5bf.c3e018"]]},{"id":"f0dbe5bf.c3e018","type":"serial out","z":"c0812b05.2e9308","x":830,"y":100,"wires":[]},{"id":"ae07cdf2.445f1","type":"websocket-listener","z":"","path":"ws://localhost:3000/signalk/v1/stream","wholemsg":"false"}]