主页 > 手机  > 

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

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

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


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

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

步骤

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

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

或(RedHat 系):

sudo yum install cups cups-pdf

启用 CUPS 并设置开机启动

sudo systemctl enable cups sudo systemctl start cups

添加虚拟 PDF 打印机

lpadmin -p PDFPrinter -E -v cups-pdf:/ -m generic.ppd

添加物理打印机(假设打印机名为 HP_LaserJet):

lpadmin -p HP_LaserJet -E -v ipp://192.168.1.100/ipp -m everywhere

创建 CUPS 打印类

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

设置默认打印机为“MultiPrint”

lpoptions -d MultiPrint

打印测试

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 文件并打印。

安装 CUPS-PDF sudo apt install cups-pdf 启动 CUPS 服务 sudo systemctl start cups 检查是否已添加 CUPS-PDF lpstat -p 如果 CUPS-PDF 不存在,可以手动添加: lpadmin -p PDFPrinter -E -v cups-pdf:/ -m generic.ppd 同时打印到多个目标 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:

创建 systemd 监听脚本 sudo nano /etc/systemd/system/printbackup.service 写入以下内容 [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 启用并启动服务 sudo systemctl enable printbackup sudo systemctl start printbackup

效果:

每当有打印任务时,/var/spool/cups 目录中的打印任务会被复制到 /path/to/backup/,作为 PDF 副本保存。
总结 方法适用情况自动化程度CUPS 打印类多台打印机(包括 PDF)✅ 完全自动lpr 手动打印适用于小型任务❌ 需手动CUPS-PDF + lp适用于有 PDF 需求的用户✅ 自动化手动复制 PDF适用于文件备份❌ 需手动systemd 监控打印队列适用于后台自动备份✅ 完全自动

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

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

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

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

Linux系统上同时打印到物理打印机并生成PDF副本方法研究由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux系统上同时打印到物理打印机并生成PDF副本方法研究