[App Sharing] 【更新1.1.1】deepin25批量打印pdf的小工具--天才程序员
Tofloor
poster avatar
拉特兰轮椅漂移冠军
deepin
2026-05-09 17:15
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搓的,更新为1.1.1版本
batch-print-pdf_1.1.1_all.zip

Reply Favorite View the author
All Replies
avatar
vIann
deepin
2026-05-09 17:22
#1

applaud applaud

Reply View the author
avatar
应用商店小鱿鱼
Moderator
2026-05-09 17:22
#2

agree

Reply View the author
avatar
商店运营-小七
Moderator
2026-05-09 17:22
#3

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

Reply View the author
avatar
紫人组
deepin
2026-05-09 17:23
#4

还是太全面了like

Reply View the author
avatar
拉特兰轮椅漂移冠军
deepin
2026-05-09 17:51
#5
商店运营-小七

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

怎么上架商店

Reply View the author
avatar
lon
deepin
2026-05-10 11:21
#6

这是个针对性的优化工具,财务人员肯定喜欢

Reply View the author
avatar
晚秋(lateautumn)
Moderator
2026-05-10 19:17
#7
商店运营-小七

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

agree

太需要了,龙架构电脑也能用吗?

Reply View the author
avatar
uos沧海一粟
deepin
2026-05-12 17:11
#8

请问考虑到双面打印需要添加空白页的问题没有?

Reply View the author
avatar
拉特兰轮椅漂移冠军
deepin
2026-05-13 10:20
#9
uos沧海一粟

请问考虑到双面打印需要添加空白页的问题没有?

是什么场景?我计划添加指定页面添加空白页功能

Reply View the author
avatar
uos沧海一粟
deepin
2026-05-13 10:27
#10
拉特兰轮椅漂移冠军

是什么场景?我计划添加指定页面添加空白页功能

你这个软件工作原理是合并所有pdf页面再打印。如果前面的文件总页数是奇数,那么在双面打印情况下,后面的文件第一页就会被打印在背面。

Reply View the author
avatar
187******22
deepin
2026-05-13 13:16
#11

太强了

Reply View the author
avatar
拉特兰轮椅漂移冠军
deepin
2026-05-13 17:05
#12
uos沧海一粟

你这个软件工作原理是合并所有pdf页面再打印。如果前面的文件总页数是奇数,那么在双面打印情况下,后面的文件第一页就会被打印在背面。

理解了,跟计划的指定页添加空白页功能是符合的

Reply View the author
avatar
uos沧海一粟
deepin
2026-05-13 17:52
#13

建议你设单面打印和双面打印两个模式,双面打印就默认奇数页的pdf添加空白页,确保双面打印不出问题。

Reply View the author
avatar
拉特兰轮椅漂移冠军
deepin
2026-05-18 17:23
#14

batch-print-pdf_1.1.1_all.zip

先呈上新版本的包

batch-print-pdf v1.1.1 更新(基于 1.1.0)

deepin 25 批量打印 PDF 小工具

一句话

新增双面打印、手动插空白页、按份指定方向;移除拼版(实际用不上);
修复横竖混排打印被裁切的 bug。


新增

--duplex 双面打印自动补空白页

合并多份 PDF 双面打印时,如果某份是奇数页,下一份首页会粘到上一份末页的反面。
开启 --duplex 后会在每份奇数页文件之后自动补 1 张空白页,保证每份从纸的正面开始。

--insert-blank-after N 手动插空白页

在合并后的全局第 N 页之后插 1 张空白页,可重复或逗号分隔:

batch-print-pdf --insert-blank-after 5,12 *.pdf

N=0 在最前面插,N=总页数 追加到末尾。空白页尺寸自动跟随相邻页。

--content-orient FILE:portrait|landscape 逐份指定内容朝向

每份 PDF 单独指定内容朝向,自动跟全局纸张方向比对,不一致时旋转 90°:

batch-print-pdf --content-orient b.pdf:landscape *.pdf

GUI 选项对话框

右键调用时(无任何命令行参数)自动弹一个 GTK 对话框,可视化配置:

┌─ 批量打印 PDF — 选项 ──────────────────────────┐
│ 3 个 PDF, 共 6 页                              │
│ ──────────────────────────────────────────    │
│ 打印机纸张方向                                 │
│   ◉ A4 横纸  ○ A4 竖纸  ○ 不重排版            │
│                                                │
│ 文件 (按打印顺序)                              │
│ ┌──────────────────────────────────────────┐ │
│ │ ↑ ↓  invoice_a.pdf   3p, 原:竖   [竖▼]  │ │
│ │ ↑ ↓  scan_b.pdf      1p, 原:横   [横▼]  │ │
│ │ ↑ ↓  contract_c.pdf  2p, 原:竖   [竖▼]  │ │
│ └──────────────────────────────────────────┘ │
│ ──────────────────────────────────────────    │
│ ☐ 双面打印自动补空白页 (--duplex)              │
│ 手动插空白页 (可选) [____________]            │
│            [取消]    [继续 → 打印]            │
└────────────────────────────────────────────────┘

文件列表显示每份的页数 + 自动探测的源方向,↑↓ 调顺序
每份独立的内容朝向下拉。解决了"不知道哪份在前、不知道方向"的问题。

上次的纸张方向 / 双面选择保存在 ~/.config/batch-print-pdf/last.json,下次默认勾上。

--no-options-dialog

强制跳过 GUI 对话框(脚本场景用)。

双面 + 横竖混排警告

GUI 检测到内容朝向跟纸张方向不一致 + 勾了双面时弹红字提示,避免双面翻面后内容上下颠倒。


修复

横竖混排打印被裁切(重要 bug)

1.1.0 是先合并 PDF 再统一缩放,合并后各页 mediabox 尺寸不一(既有 595×842 又有 842×595),
打印机按首页尺寸送纸,后面不一样的页就被裁掉一半。

1.1.1 重写流水线:先逐份缩放到统一 A4 → 再合并
最终所有页都是同一种 A4,打印机不会再裁。


移除

--nup 1/2/4 拼版功能 —— 实际场景几乎用不上,
连带 texlive-extra-utils 200MB+ 依赖一并移除,包更轻。


兼容性

命令行行为对 1.1.0 用户完全兼容
传过任意 --fit/--duplex/--content-orient 等参数会自动跳过 GUI 对话框,
旧脚本不需要改动。例外:用过 --nup 的脚本要去掉这个参数。


安装

# 从 1.1.0 升级
sudo apt install ./batch-print-pdf_1.1.1_all.deb

# 重启文件管理器使右键菜单刷新
killall dde-file-manager

验证:

md5sum /usr/bin/batch-print-pdf
# 应为: 491ecb5671192372b860d865c2b17072

已知限制

  • 双面翻转方向(长边/短边)由系统打印对话框决定,本工具改不了。横竖混排建议拆任务打
  • --fit none 下各份尺寸不一时打印机仍可能裁切,请用 --fit a4-portrait--fit a4-landscape

Reply View the author
avatar
uos沧海一粟
deepin
2026-05-18 21:26
#15
拉特兰轮椅漂移冠军

batch-print-pdf_1.1.1_all.zip

先呈上新版本的包

batch-print-pdf v1.1.1 更新(基于 1.1.0)

deepin 25 批量打印 PDF 小工具

一句话

新增双面打印、手动插空白页、按份指定方向;移除拼版(实际用不上);
修复横竖混排打印被裁切的 bug。


新增

--duplex 双面打印自动补空白页

合并多份 PDF 双面打印时,如果某份是奇数页,下一份首页会粘到上一份末页的反面。
开启 --duplex 后会在每份奇数页文件之后自动补 1 张空白页,保证每份从纸的正面开始。

--insert-blank-after N 手动插空白页

在合并后的全局第 N 页之后插 1 张空白页,可重复或逗号分隔:

batch-print-pdf --insert-blank-after 5,12 *.pdf

N=0 在最前面插,N=总页数 追加到末尾。空白页尺寸自动跟随相邻页。

--content-orient FILE:portrait|landscape 逐份指定内容朝向

每份 PDF 单独指定内容朝向,自动跟全局纸张方向比对,不一致时旋转 90°:

batch-print-pdf --content-orient b.pdf:landscape *.pdf

GUI 选项对话框

右键调用时(无任何命令行参数)自动弹一个 GTK 对话框,可视化配置:

┌─ 批量打印 PDF — 选项 ──────────────────────────┐
│ 3 个 PDF, 共 6 页                              │
│ ──────────────────────────────────────────    │
│ 打印机纸张方向                                 │
│   ◉ A4 横纸  ○ A4 竖纸  ○ 不重排版            │
│                                                │
│ 文件 (按打印顺序)                              │
│ ┌──────────────────────────────────────────┐ │
│ │ ↑ ↓  invoice_a.pdf   3p, 原:竖   [竖▼]  │ │
│ │ ↑ ↓  scan_b.pdf      1p, 原:横   [横▼]  │ │
│ │ ↑ ↓  contract_c.pdf  2p, 原:竖   [竖▼]  │ │
│ └──────────────────────────────────────────┘ │
│ ──────────────────────────────────────────    │
│ ☐ 双面打印自动补空白页 (--duplex)              │
│ 手动插空白页 (可选) [____________]            │
│            [取消]    [继续 → 打印]            │
└────────────────────────────────────────────────┘

文件列表显示每份的页数 + 自动探测的源方向,↑↓ 调顺序
每份独立的内容朝向下拉。解决了"不知道哪份在前、不知道方向"的问题。

上次的纸张方向 / 双面选择保存在 ~/.config/batch-print-pdf/last.json,下次默认勾上。

--no-options-dialog

强制跳过 GUI 对话框(脚本场景用)。

双面 + 横竖混排警告

GUI 检测到内容朝向跟纸张方向不一致 + 勾了双面时弹红字提示,避免双面翻面后内容上下颠倒。


修复

横竖混排打印被裁切(重要 bug)

1.1.0 是先合并 PDF 再统一缩放,合并后各页 mediabox 尺寸不一(既有 595×842 又有 842×595),
打印机按首页尺寸送纸,后面不一样的页就被裁掉一半。

1.1.1 重写流水线:先逐份缩放到统一 A4 → 再合并
最终所有页都是同一种 A4,打印机不会再裁。


移除

--nup 1/2/4 拼版功能 —— 实际场景几乎用不上,
连带 texlive-extra-utils 200MB+ 依赖一并移除,包更轻。


兼容性

命令行行为对 1.1.0 用户完全兼容
传过任意 --fit/--duplex/--content-orient 等参数会自动跳过 GUI 对话框,
旧脚本不需要改动。例外:用过 --nup 的脚本要去掉这个参数。


安装

# 从 1.1.0 升级
sudo apt install ./batch-print-pdf_1.1.1_all.deb

# 重启文件管理器使右键菜单刷新
killall dde-file-manager

验证:

md5sum /usr/bin/batch-print-pdf
# 应为: 491ecb5671192372b860d865c2b17072

已知限制

  • 双面翻转方向(长边/短边)由系统打印对话框决定,本工具改不了。横竖混排建议拆任务打
  • --fit none 下各份尺寸不一时打印机仍可能裁切,请用 --fit a4-portrait--fit a4-landscape

👍

Reply View the author
avatar
我要验牌
deepin
2026-05-21 15:00
#16
拉特兰轮椅漂移冠军

怎么上架商店

打包成deb或者玲珑就可以上架

https://bbs.deepin.org/post/298207

Reply View the author