[App Sharing] 让天才程序员帮忙写了个deepin25批量打印pdf的小工具,欢迎试用
Tofloor
poster avatar
拉特兰轮椅漂移冠军
deepin
15 hours ago
Author
# deepin 25 批量打印 PDF 操作手册(SOP)

> 工具:`batch-print-pdf`(已打成 deb 包:`batch-print-pdf_1.1.0_all.deb`)
> 适用:Deepin 25 / dde-file-manager
> 解决问题:
> 1. dde-file-manager 不支持多选 PDF 后右键直接打印
> 2. 发票类小页面打印 A4 有大量白边 — v1.1.0 自动等比缩放铺满 A4

一、安装(首次使用)

把 deb 包拷到 Deepin 机器后执行:

sudo apt install ./batch-print-pdf_1.1.0_all.deb

apt 会自动解决依赖:

  • 核心:poppler-utils / python3-gi / gir1.2-gtk-3.0 / gir1.2-poppler-0.18 / cups-client / python3-pypdf
  • 推荐:ghostscript(合并备选)、texlive-extra-utils(2-up / 4-up 多张拼一页)

验证安装:

which batch-print-pdf
# 应输出:/usr/bin/batch-print-pdf

ls /usr/share/applications/batch-print-pdf.desktop
# 应存在

如果"打开方式"菜单里看不到"批量打印 PDF",重启文件管理器:

killall dde-file-manager

二、日常使用流程

操作步骤

  1. 打开文件管理器,进入存放 PDF 的目录
  2. 多选 PDF 文件
    • 鼠标拖框框选 / Ctrl+点击 单个加选 / Shift+点击 范围选
  3. 右键打开方式 → 选 "批量打印 PDF"
    • 第一次使用如果不在主菜单里,点 "其他应用程序",从列表里找
    • 可勾选 "设为默认" 之后更方便(但这样会让"双击 PDF"也走打印工具,不推荐——只在打印工具里勾选 + 然后取消默认)
  4. 工具自动把所选 PDF 合并成一份临时 PDF
  5. 弹出 GTK 打印对话框(只弹一次):
    • 选择打印机(默认会列出 CUPS 里所有可用打印机)
    • 选择份数页面范围双面 / 单面纸张大小
    • 必要时点"高级"调整缩放、装订方向、页边距
  6. "打印" 提交到打印队列,工具退出,临时文件自动清理

取消操作

  • 在打印对话框点 "取消" → 工具退出,不发任何任务
  • 如果已经送进打印队列要撤回:
    lpstat       # 看任务 ID
    cancel   # 取消指定任务
    cancel -a    # 取消当前打印机所有任务
    

三、命令行使用

适合脚本调用 / 批处理 / 远程 SSH 场景:

# 多文件(默认每张铺满 A4 横版,适合发票)
batch-print-pdf /path/to/1.pdf /path/to/2.pdf /path/to/3.pdf

# 配合 shell 通配
batch-print-pdf ~/Documents/合同/*.pdf

# find 出来的一批
find ~/Downloads -name "发票_*.pdf" -print0 | xargs -0 batch-print-pdf

3.1 A4 自适应选项(v1.1.0+)

默认行为:每张原始 PDF 页等比缩放 + 居中铺满 A4 横版。非常适合发票、小票、购物票据这类小尺寸 PDF——之前印在 A4 上只有左上角巴掌大、现在可以铺满整张纸。

选项 说明 适用场景
--fit a4-landscape 默认,每张页→A4 横版铺满 发票、横版票据
--fit a4-portrait 每张页→A4 竖版铺满 竖版文档
--fit none 不重排版,保持原尺寸 PDF 本身就是 A4
--nup 1 默认,一张 A4 一张发票 单据要足够大
--nup 2 左右拼:A4 横版 = 2 张发票 报销凭证常用
--nup 4 2×2 拼:A4 横版 = 4 张发票 大批量省纸

示例:

# 10 张发票每张独占 A4 横版(默认)
batch-print-pdf ~/发票/*.pdf

# 10 张发票,每两张共用 1 张 A4 横版(省 5 张纸)
batch-print-pdf --nup 2 ~/发票/*.pdf

# 竖版报告不做缩放,原始布局打印
batch-print-pdf --fit none ~/报告/*.pdf

特性

  • 自动旋转:竖版发票放到 A4 横版上会自动转 90° 铺满
  • 等比缩放保留比例(避免变形)
  • 多余部分居中留白

3.2 无对话框直打(默认打印机)

目前 batch-print-pdf 一定会弹对话框。如果你要脚本化无人值守打印:

TMP=$(mktemp --suffix=.pdf)
pdfunite file1.pdf file2.pdf file3.pdf "$TMP" && lp "$TMP" && rm "$TMP"

四、常见问题排查

1. 右键菜单看不到"批量打印 PDF"

# 验证 .desktop 文件存在
ls /usr/share/applications/batch-print-pdf.desktop

# 验证 MIME 关联
grep batch-print-pdf /usr/share/applications/mimeinfo.cache
# 应能看到 application/pdf= 的行里包含 batch-print-pdf.desktop

# 强制刷新桌面数据库
sudo update-desktop-database /usr/share/applications

# 重启文件管理器
killall dde-file-manager

2. 点了菜单没反应

终端里手动跑一次看错误信息:

batch-print-pdf ~/Downloads/test.pdf

常见报错:

  • ImportError: gi → 缺 python3-gisudo apt install python3-gi
  • ValueError: Namespace Poppler not available → 缺 gir1.2-poppler-0.18sudo apt install gir1.2-poppler-0.18
  • pdfunite: command not found → 缺 poppler-utilssudo apt install poppler-utils
  • 无法在没有 X11 $DISPLAY 的情况下... → 在 SSH 会话里跑了,需要在图形会话里跑

3. 打印对话框出来了但看不到打印机

CUPS 没起 / 没装打印机:

# 启动 CUPS
sudo systemctl start cups
sudo systemctl enable cups

# 看打印机
lpstat -p

# 没有的话装一个:
# - 控制中心 → 打印机 → 添加
# - 或浏览器开 http://localhost:631 用 CUPS 网页加

4. 打印出来的 PDF 顺序不对

pdfunite 按你传给它的参数顺序合并。文件管理器选中后传给应用的顺序由 dde-file-manager 决定(一般按文件名字母序)。如果想强制顺序:

  • 在文件名前加数字前缀:01-合同.pdf02-附件.pdf03-发票.pdf
  • 或命令行手动指定顺序:batch-print-pdf 03.pdf 01.pdf 02.pdf

5. 选了几十个 PDF 卡住

  • 合并大量大体积 PDF 时 pdfunite 需要时间——耐心等
  • 如果合并时间过长(超过 30 秒),考虑分批打印(一次 10 个左右)
  • 可以提前观察资源:top -p $(pgrep pdfunite)

6. 加了非 PDF 文件混在一起

工具会自动跳过非 PDF 文件(按扩展名判断),并在终端打印警告(GUI 调用时看不到警告)。所以不影响——不在 PDF 列表里的会被忽略。


五、卸载

sudo apt purge batch-print-pdf

如果还想干净清理依赖(其他东西没用到的话):

sudo apt autoremove

六、升级 / 重装

新版本 deb 拷过去:

sudo apt install ./batch-print-pdf_<新版本>_all.deb

apt 会自动覆盖旧版本,配置和已注册的 MIME 关联都保留。


七、文件位置速查

文件 路径 说明
主脚本 /usr/bin/batch-print-pdf Python3 + GTK
桌面入口 /usr/share/applications/batch-print-pdf.desktop 注册到 PDF MIME
README /usr/share/doc/batch-print-pdf/README 简短英文说明
临时合并文件 /tmp/batchprint-XXXXXX/merged.pdf 用完自动删

包很小,已经放在下方,纯是因为自己报销挨个打印太麻烦让ai搓的

batch-print-pdf_1.1.0_all.zip

Reply Favorite View the author
All Replies
avatar
vIann
deepin
15 hours ago
#1

applaud applaud

Reply View the author
avatar
应用商店小鱿鱼
Moderator
15 hours ago
#2

agree

Reply View the author
avatar
商店运营-小七
Moderator
15 hours ago
#3

刚需啊~~~~跪求上架商店!!!!

Reply View the author
avatar
紫人组
deepin
15 hours ago
#4

还是太全面了like

Reply View the author
avatar
拉特兰轮椅漂移冠军
deepin
14 hours ago
#5
商店运营-小七

刚需啊~~~~跪求上架商店!!!!

怎么上架商店

Reply View the author