Linux通过Nodejs的IPP库实现自动定时打印

家用喷墨打印机长时间不用,会出现喷头堵塞,做一个自动打印脚本,防止长时间不打印,打印机坏掉的情况。

环境:
系统:群晖 6.4
虚机:Docker ->Centos 7.8

步骤:

  1. 安装Docker,拉取Centos系统,设置最高权限运行(非常重要!!!),因为要使用定时任务【Crontab】,这里篇幅太大,请自行解决。
  2. 进入虚机ssh,安装Nodejs
#1、如果已经安装了可以跳过该步:
yum install -y wget
#2、下载Nodejs:
cd /home
wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
#3、解压
xz -d node-v12.18.3-linux-x64.tar.xz
tar -xf node-v12.18.3-linux-x64.tar
#4、链接
ln -s ~/node-v12.18.3-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v12.18.3-linux-x64/bin/npm /usr/bin/npm
#5、测试
node -v
npm

3.编写执行脚本
初始化环境

#1、创建项目目录
mkdir autoprint
cd autoprint
#2、下载需要打印的图片
wget http://pdfkit.org/docs/img/15.png
#3、下载需要的组件
npm install fs
npm install ipp
#4、创建运行脚本
vi main.js

写入执行代码

var ipp = require("ipp");
var fs = require("fs");
//加载本地图片
let data = fs.readFileSync("/home/autoprint/15.png");
//配置打印机参数,我这里使用的是L4169爱普生打印机,可以通过具体通过浏览器查询打印机信息
var file = {"operation-attributes-tag":{"requesting-user-name": "User","job-name": "Print Job","document-format": "image/jpeg" //这个是最主要的,要查询是否支持,文档将最后附上查询代码},data: data};
//打印机IPP地址
var printer = ipp.Printer("http://192.168.30.240:631/ipp/print");
//执行打印 Print-Job:打印任务
/*
这里附上我的打印机支持的任务类型'operations-supported': [ 'Print-Job', 'Validate-Job', 'Create-Job', 'Send-Document', 'Cancel-Job', 'Get-Job-Attributes', 'Get-Jobs', 'Get-Printer-Attributes', 'Close-Job', 'Identify-Printer' ], */
printer.execute("Print-Job", file, function (err, res) {console.log("Printed: " + res.statusCode);
});//保存,退出

设置执行权限

chmod 755 main.js

测试脚本

node main.js

如果一切顺利,你将看到打印机动作了,然后就喷出了几棵树的图片

  1. 安装定时任务,编写定时任务命令
yum install crontabs
systemctl enable crond
systemctl start crond
#请勿使用 crontab -e 在docker环境下不起作用
vi /etc/crontab

编写定时任务

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# 每隔5天的早上10点30执行
30 10 * */5 * root sh node /home/autoprint/main.js
  1. 完成
  2. 附上打印机参数查询代码
var ipp = require("ipp");
var id = 0x0123;//made up reqid
var printer = ipp.Printer("http://192.168.30.240:631/ipp/print");
printer.execute("Get-Printer-Attributes", null, function(err, res){console.log(res);
});

Linux通过Nodejs的IPP库实现自动定时打印相关推荐

  1. nginx nodejs环境配置_在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目...

    发现一台服务器部署管理多个nodejs服务,可以采用二级域名weekly.mwcxs.top,也可以采用固定后缀www.mwcxs.top/weekly的方式,本文先从固定后缀的方式部署管理多个nod ...

  2. IPP库的安装以及源码分析方法

    目录 第一部分 IPP环境搭建(基于win10的WSL) 1.1 WSL的几种安装方法 1.1.1 开启wsl支持 1.1.2 (可选)使用Windows store直接安装 (1)下载 (2)安装 ...

  3. Linux下的静态链接库和动态链接库编程

    Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...

  4. linux系统下的“静态库和动态库”专题之二:库的创建和使用

    接上文[linux系统下的"静态库和动态库"专题之一:库的概念和规则]所述,我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种. – 静态库在程序编译 ...

  5. Qt 配置使用IPP库

    Inter IPP库的简介与配置 1.Inter IPP库简介 IPP"Intel Integrated Performance Primitives" ( Intel IPP ) ...

  6. Intel的ipp库(Integrated Performance Primitives)

    IPP库包含了许多底层优化的函数.如果已经安装了IPP库,opencv在运行时也会自动调用.NVIDIA公司针对GPU开发了的GPU加速的图像.视频.信号处理库NPP(NVIDIA Performan ...

  7. linux定时任务nodejs,让Nodejs来管理定时任务later

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  8. Intel IPP库使用入门

    version 1.0 2008-11-11 说明:本文基于IPP v5.3 update 3 for Windows* on IA-32,参考的文档采用安装包安装的文档: 文档"userg ...

  9. Qt Creator配置Intel IPP库并实现信号带通滤波

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.环境参数 二.添加步骤 1.安装IPP2018 2.配置环境变量 3.引入lib文件 三. 测试 输出结果 ...

最新文章

  1. AI框架精要:设计思想
  2. LPMS_IMU在TX2上使用
  3. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串
  4. git设置和取消代理
  5. 软件能力[置顶] 程序员如何成为设计师,软件公司如何成为苹果?
  6. 32位机器下面各类型的取值范围(sizeof值)
  7. SQ小组KTV点歌系统简介
  8. c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
  9. 【笔试记录】2021/3/13美团
  10. 神奇的 SQL 之团结的力量 → JOIN
  11. mysql链接压测_MySQL压测工具mysqlslap的介绍与使用
  12. 计算机国家实验教学示范中心,教育部、财政部关于批准2007年国家级实验教学示范中心建设单位的通知...
  13. python字符串find方法(二分钟读懂)
  14. iOS 10 消息推送
  15. 数据字典在mysql中怎么做_如何编写数据字典
  16. 服务器画图plots不显示,Rstudio的Plots不显示图形
  17. java sof栈泄露_java虚拟机(四)--内存溢出、内存泄漏、SOF
  18. 开发基于地图的火车站点查询系统
  19. python之arp欺骗
  20. MySQL 使用 B+ 树的研究

热门文章

  1. CREAL CEO:AR/VR动态变焦有哪几种解决方案?
  2. CMMI V2.0培训纪实
  3. Python内置函数、匿名函数
  4. git pull时提示错误:warning: ignoring broken ref refs/remotes/origin/HEAD的解决办法
  5. 用tecplot作平均速度流线图
  6. C语言编程编制职工档案管理程序,C语言课程设计--职工档案及简明信息生成.doc...
  7. Invalid Component definition:header
  8. 《钻石王牌》:热血青春·棒球1号位
  9. 警务通、停车场收费终端集成手机拍照车牌识别SDK,通过手机就可实现快速便捷的出入口系统管理...
  10. BigDecimal