PDF 批量打印
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_5a90548c/pdf-batch-print-tool。
技能介绍
问题:批量打印 PDF 为什么仍然很烦
在 Windows 上打印单个 PDF 很简单,一旦涉及批量处理就变得琐碎:逐个打开文件、切换打印机、设置份数和页码范围、调整双面和纸张方向……任何一个环节出错,整批文件就得重来。脚本化打印工具虽然存在,但要么需要手动编写命令行参数,要么缺少对打印机枚举、纸张尺寸和缩放策略的精细控制。
工作方式:对话驱动,后端是 SumatraPDF
本技能的核心思路是把打印决策交给 AI,让用户只需在对话中描述需求,例如「用 A4 纸双面打印这些发票,3 份」。技能内部通过 pdf_batch_print.py 脚本自动完成以下步骤:
- 使用
list_printers()/default_printer()检测可用打印机(四层兜底:PowerShell → win32print → winspool ctypes → SumatraPDF) - 通过
pypdf检查 PDF 页面尺寸,判断是否需要缩放 - 调用
ensure_sumatra()确保 SumatraPDF 后端就位(三层兜底下载) - 组装 CLI 命令并执行,支持
--files、--folder、--printer、--copies、--pages、--duplex、--orient、--paper、--fit、--merge等参数
适用边界与注意点
- 打印后端固定为 SumatraPDF,未安装时脚本会明确警告而非静默退化到「只打开不打印」
- 纸张名称映射依赖打印机驱动,部分驱动需精确纸张名如
paper="A3 297 x 420 mm" - 首次运行需联网下载 SumatraPDF 便携版(约 5.5MB),离线环境需手动指定本机已装版本
- GUI 模式需要 Python 3.12 且带 tkinter;纯打印(CLI 模式)不需要任何 pip 包
使用场景
- 月底报销季,财务需要把发票文件夹里所有 PDF 一次打印 3 份,不想逐个打开操作
- 行政要把合同目录下的多个 PDF 合并成一个文件后再打印,避免分多次送印
- 用户需要只打印 PDF 的第 1-3 页和第 5 页到指定打印机,用于核对内容
- 员工希望打印前先预览效果,确认纸张和缩放设置后再实际输出
适合人员
- 经常批量打印 PDF 票据的财务人员,希望一句话完成多份输出
- 处理大量合同的行政或法务,需要按文件夹批量合并并打印文档
- 习惯用自然语言下达打印指令的办公用户,不想手写命令行参数
- 需要在 Windows 上精确控制双面、纸张和页码范围的打印操作者