/home-print-web

使用 IPP 协议,无需打印机驱动,通过 Web 页面调用家里打印机打印文件

Primary LanguageTypeScript

Web-Print System

通过 Web 页面调用家里打印机打印文件,本机无需打印机驱动(使用 IPP 协议),同时支持手机内使用。如下图:

image

原理:

Web-Print System -> CUPS -> Printer。

  • Web-Print System 使用 IPP 协议和 CUPS 通信。
  • CUPS 使用 USB 9100 端口和 打印机 通信。

当前使用 Docker 部署到 openwrt 路由器中。

如果IPP打印机可以通过外网访问,可以不用和打印机在同一个网络。

基于 Nuxt

  • CSS 基于tailwindcss
  • JSON 存储基于node-json-db
  • IPP 协议基于 IPP NPM包。
  • CUPS 不支持 word/excel 打印,使用CloudConver服务进行转换后在打印。
  • 打印成功或失败,使用 message-pusher 通知到自己手机。
  • 默认 Nitro 不包含日志输出到文件,因此使用 winston 包处理日志。目的是程序出现任何异常,需要通知到用户(自己手机)。
  • 上传文件保存至物理文件夹,基于formidable
  • Toast 提示使用vue-toast-notification

docker-compose 部署方式

新建 docker-compose.yaml 文件,内容如下:

version: '3.9'
services:
  home-print-web:
    image: xbf321/home-print-web:latest
    container_name: home-print-web
    restart: unless-stopped
    ports:
      - 7020:7020
    environment:
      # 登录用户名和密码默认都是 test
      - AUTH_USER_NAME=test
      - AUTH_USER_PASSWORD=test
      - MESSAGE_PUSHER_SERVER_TOKEN=token
      # CloudConvert 访问 token ,用于把 word 格式转换为 pdf 格式
      - CLOUDCONVERT_ACCESS_TOKEN=token

安装

docker-compose up -d

重新安装,执行:

# 停止容器
docker-compose down
# 获取最新 image
docker-compose pull xbf321/home-print-web
# 启动
docker-compose up -d

开发

npm i
npm run dev
open http://localhost:7020/

Docker 其他操作

# 构建 image
docker build --no-cache -t xbf321/home-print-web .

# 发布到 hub.docker.io
docker push xbf321/home-print-web:latest

# 创建容器
# 后台运行
docker run -d -p 7020:7020 -e CLOUDCONVERT_ACCESS_TOKEN=token -e AUTH_USER_NAME=aaa -e AUTH_USER_PASSWORD=aaa -e MESSAGE_PUSHER_SERVER_TOKEN=token  --name home-print-web xbf321/home-print-web:latest
# 临时运行
docker run -it --name home-print-web xbf321/home-print-web /bin/bash
# 进入容器内部
docker exec -it home-print-web /bin/bash