Linux系统上同时打印到物理打印机并生成PDF副本方法研究

          在 Linux 系统上,想要同时打印到物理打印机并生成 PDF 副本,可以使用 CUPS(通用 Unix 打印系统)虚拟 PDF 打印机 结合的方式。以下是几种可行的方案:


方法 1:使用 CUPS 设置多个打印机(物理+PDF)

          CUPS(Common Unix Printing System)是 Linux 默认的打印服务,支持同时向多个打印机发送任务。

步骤

  1. 安装 CUPS(如果未安装)
    在大多数 Linux 发行版上,CUPS 默认已安装。如果没有,可以用以下命令安装:

    sudo apt update && sudo apt install cups cups-pdf 

    或(RedHat 系):

    sudo yum install cups cups-pdf 
  2. 启用 CUPS 并设置开机启动

    sudo systemctl enable cups sudo systemctl start cups 
  3. 添加虚拟 PDF 打印机

    lpadmin -p PDFPrinter -E -v cups-pdf:/ -m generic.ppd 
  4. 添加物理打印机(假设打印机名为 HP_LaserJet):

    lpadmin -p HP_LaserJet -E -v ipp://192.168.1.100/ipp -m everywhere 
  5. 创建 CUPS 打印类

    • CUPS 支持打印类(Printer Class),它允许一个打印任务被同时发送到多个打印机。
    lpadmin -p MultiPrint -E -o printer-is-shared=true -v cups-pdf:/ -v ipp://192.168.1.100/ipp 
  6. 设置默认打印机为“MultiPrint”

    lpoptions -d MultiPrint 
  7. 打印测试

    lp /path/to/testfile.pdf 

效果

  • 文档会被同时发送到HP_LaserJet 物理打印机PDF 虚拟打印机
  • 生成的 PDF 默认存放在 /var/spool/cups-pdf/USERNAME/ 目录下。

方法 2:使用 lpr 命令同时打印

        你可以使用 lpr 命令同时将文件发送到多个打印机:

lpr -P HP_LaserJet file.pdf 
lpr -P PDFPrinter file.pdf 

可以把它写入 Shell 脚本,使其自动执行:

#!/bin/bash 
FILE="/path/to/document.pdf" 
lpr -P HP_LaserJet "$FILE" 
lpr -P PDFPrinter "$FILE" 

然后赋予执行权限并运行:

chmod +x print_to_multiple.sh 
./print_to_multiple.sh 

适用场景

  • 适用于需要批量打印并生成 PDF 副本的情况。

方法 3:使用 CUPS-PDF + lp 命令

        CUPS 提供了一个 CUPS-PDF 过滤器,可以自动生成 PDF 文件并打印。

  1. 安装 CUPS-PDF
    sudo apt install cups-pdf 
  2. 启动 CUPS 服务
    sudo systemctl start cups 
  3. 检查是否已添加 CUPS-PDF
    lpstat -p 
    如果 CUPS-PDF 不存在,可以手动添加:
    lpadmin -p PDFPrinter -E -v cups-pdf:/ -m generic.ppd 
  4. 同时打印到多个目标
    lp -d HP_LaserJet /path/to/document.pdf 
    lp -d PDFPrinter /path/to/document.pdf 

默认 PDF 存放路径

  • Ubuntu/Debian: ~/PDF/
  • RedHat 系: /var/spool/cups-pdf/$USER/

方法 4:使用 pdftopdf + lp 自动备份

        如果你已经有 PDF 文件,并且希望在打印时自动生成副本,可以手动复制文件:

FILE="/path/to/document.pdf" 
cp "$FILE" "/path/to/backup/" 
lp -d HP_LaserJet "$FILE" 

适用场景

  • 适用于简单备份,无需虚拟打印机。

方法 5:使用 systemd 监视 /var/spool/cups 自动备份

         如果你的打印机自动将任务缓存到 /var/spool/cups,可以用 systemd 监听文件夹并自动备份 PDF:

  1. 创建 systemd 监听脚本
    sudo nano /etc/systemd/system/printbackup.service 
  2. 写入以下内容
    [Unit] 
    Description=Monitor CUPS Print Queue and Save Copies 
    After=cups.service [Service] 
    ExecStart=/bin/bash -c 'cp /var/spool/cups/d* /path/to/backup/' 
    Restart=always [Install] 
    WantedBy=multi-user.target 
  3. 启用并启动服务
    sudo systemctl enable printbackup 
    sudo systemctl start printbackup 

效果

  • 每当有打印任务时,/var/spool/cups 目录中的打印任务会被复制到 /path/to/backup/,作为 PDF 副本保存。

总结

方法适用情况自动化程度
CUPS 打印类多台打印机(包括 PDF)✅ 完全自动
lpr 手动打印适用于小型任务❌ 需手动
CUPS-PDF + lp适用于有 PDF 需求的用户✅ 自动化
手动复制 PDF适用于文件备份❌ 需手动
systemd 监控打印队列适用于后台自动备份✅ 完全自动

如果你希望完全自动化,推荐:

  1. 使用 CUPS 打印类(方法 1)
  2. 使用 systemd 自动监听(方法 5)

如果只是偶尔打印,可以用:

  • lpr 命令手动打印(方法 2)
  • CUPS-PDF 生成 PDF(方法 3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20234.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【stm32】DAC实验(stm32f4hal库)

一、DAC简介 1、DAC 数字到模拟转换器(DAC)是一种电子设备,用于将数字信号转换为模拟信号。它通常用于将数字数据转换为模拟信号,以便在模拟电路中进行处理。DAC在许多领域都有广泛的应用,如音频设备、通信系统、仪器…

云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色

一、Ansible-playbook实战 1.Ansible-playbook安装软件 bash #编写yml [rootansible ansible]# cat wget.yml - hosts: backup tasks: - name: Install wget yum: name: wget state: present #检查playbook的语法 [rootansible ansible]…

前端工程化的具体实现细节

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Chapter 3 Differential Voltage Current amplifiers

Chapter 3 Differential Voltage & Current amplifiers 这一章介绍差分电压和电流放大器. Current mirrors 我们首先分析电流镜Current Mirror. 由一个diode-connected MOSCS放大MOS组成, diode-MOS将电流转换成电压, 再由CS MOS转换成电流. 考虑沟道调制效应, M1和M2的…

确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…

[笔记.AI]大模型的蒸馏、剪枝、量化 | 模型压缩 | 作用与意义

上周简单整理了《deepseek-r1的不同版本(满血版、蒸馏版、量化)》,这次继续完善对其的认知——补充“剪枝”,并进一步整理蒸馏、剪枝、量化的作用与意义。 以下摘自与DeepSeek-R1在线联网版的对话 蒸馏、剪枝、量化是当前主流的三…

Java 反射机制深度解析:类信息的来源、declared 的区别、赋值操作及暴力反射

在 Java 开发中,反射机制是一个强大且灵活的工具,它允许程序在运行时动态地获取类的信息、创建对象、调用方法和访问字段等。本文将结合代码示例和图示,深入探讨以下四个问题: 类信息来自哪里? 获取类信息时加不加 de…

Transformer 模型介绍(四)——编码器 Encoder 和解码器 Decoder

上篇中讲完了自注意力机制 Self-Attention 和多头注意力机制 Multi-Head Attention,这是 Transformer 核心组成部分之一,在此基础上,进一步展开讲一下编码器-解码器结构(Encoder-Decoder Architecture) Transformer 模…

电脑系统损坏,备份文件

一、工具准备 1.U盘:8G以上就够用,注意会格式化U盘,提前备份U盘内容 2.电脑:下载Windows系统并进行启动盘制作 二、Windows启动盘制作 1.微软官网下载启动盘制作工具微软官网下载启动盘制作工具https://www.microsoft.com/zh-c…

Linux下Ollama下载安装速度过慢的解决方法

问题描述:在Linux下使用默认安装指令安装Ollama,下载安装速度过慢,进度条进度缓慢,一直处于Downloading Linux amd64 bundle中,具体如下图所示: 其中,默认的Ollama Linux端安装指令如下&#xf…

uniapp中@input输入事件在修改值只有第一次有效的问题解决

在uniapp中使用输入框,要求输入不超过7个字,所以需要监听输入事件,当每次输入文字的时候,就把输入的值截断,取前7个值。但是在input事件中,重新赋值的值发生了变化,但是页面上的还是没有变&…

DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

VMware按照的MacOS升级后无法联网

背景 3年前公司使用Flutter开发了一款app,现在app有微小改动需要重新发布到AppStore 问题 问题是原来的Vmware搭建的开发环境发布App失败了 提示:App需要使用xcode15IOS 17 SDK重新构建,这样的话MacOS至少需要升级到13.5 Xcode - 支持 - Ap…

Day01 【苍穹外卖】环境搭建与前后端联调

一、环境搭建 1.JDK安装与IDEA安装: JDK安装与IDEA安装:【JAVA基础】01、JAVA环境配置----JDK与 IDEA集成开发环境的安装(2025最新版本)_配置jdk-CSDN博客 注意,这里要下载JDK1.8版本的,不然会报错&…

STM32 HAL库USART串口中断编程:环形缓冲区防止数据丢失

HAL_UART_Receive接收最容易丢数据了,可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,STM32 HAL库USART串口中断编程:演示数据丢失,需要在此基础优化一下. 本文介绍STM32F103 HAL库USART串口中断,利用环形缓冲区来防…

Vulnhub:DC-1靶机渗透

渗透过程 一,信息收集 1,探测目标IP地址 探测目标IP地址,探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover,这里使用arp-scan arp-scan -l确定了DC-1主机的IP地址为 192.168.126.1452,探测…

MySQL 之存储引擎(MySQL Storage Engine)

MySQL 之存储引擎 常见存储引擎及其特点 ‌InnoDB‌: ‌特点‌:支持事务处理、行级锁定、外键约束,使用聚簇索引,适合高并发读写和事务处理的场景‌。‌适用场景‌:需要高可靠性、高并发读写和事务处理的场景‌。 ‌M…

EasyX安装及使用

安装链接:EasyX Graphics Library for C 安装完成包含头文件graphics.h即可使用 RGB合成颜色(红色部分,绿色部分,蓝色部分) 每种颜色的值都是(0~255) 坐标默认的原点在窗口的左上角&#xf…

20.【线性代数】——坐标系中,平行四边形面积=矩阵的行列式

三 坐标系中,平行四边形面积矩阵的行列式 定理验证 定理 在坐标系中,由向量(a,b)和向量(c,d)组成平行四边形的面积 矩阵 [ a b c d ] \begin{bmatrix} a&b\\ c&d \end{bmatrix} [ac​bd​]的行列式,即&#x…

Grafana——Rocky9安装Grafana相关步骤记录

安装Grafana 安装 直接进下面这个页面,可以看到这边可以选择版本以及操作系统 并且如果是Linux平台的,下面会给出不同平台的命令,直接复制粘贴执行一下就可以了! 验证 运行命令 ## 运行service systemctl start grafana-server## 自启…