自动打印文档
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_72eed3e6/auto-print。
技能介绍
解决什么问题
批量打印文件夹里的文档听起来简单,实际操作却很折腾:PDF 和 Word 混在一起,只能逐个打开、选打印机、设单双面,费时还容易漏打。更麻烦的是双面设置——单页文档双面打印浪费纸张,多页文档双面才合理,但逐份判断页数再调整设置非常繁琐。这个技能解决的是混合格式文档的批量打印,并按页数自动决定单面还是双面。
工作原理
核心是一段 PowerShell 脚本 AutoPrint.ps1,流程如下:
- 文件扫描:遍历目标文件夹,匹配
.pdf、.docx、.doc三种格式 - 页数检测:解析 PDF 二进制结构获取页数;Word 文档通过 WPS/Word 的 COM 接口调用
ComputeStatistics(2)统计页数 - 单双面决策:1 页 → 单面;2 页及以上 → 双面(长边装订)
- 打印机控制:通过 Win32
DEVMODEAPI 在每次打印前直接修改驱动设置;若装了 SumatraPDF,优先用其 CLI 做更精确的 PDF 双面控制 - 办公软件探测:按
KWPS.Application→WPS.Application→Word.Application顺序尝试,WPS Office 优先
脚本提供两个可选参数:FolderPath(扫描目录,默认脚本所在目录)和 PrinterName(目标打印机,默认 SHARP SF-S271RC PCL6)。配套的 启动打印.bat 负责设置执行策略并暂停等待,双击即可运行。
适用边界与注意点
- 仅限 Windows + PowerShell 5.1+;处理
.docx/.doc需 WPS Office 或 Microsoft Word,纯 PDF 场景则不强制 - 双面控制依赖打印机驱动支持 duplex,部分老旧或低端打印机可能无效
- PDF 双面不生效时建议安装 SumatraPDF 并把
SumatraPDF.exe放在脚本同目录;否则回退到系统默认 PDF 阅读器,行为可能不一致 - 所有字符串均为英文,以规避 PowerShell 的 UTF-8/GBK 编码冲突,自定义时需注意
- 改默认打印机编辑
AutoPrint.ps1第 32 行,新增文件类型编辑第 373 行,并需自行补充页数统计与打印函数 - 无需管理员权限,除非打印机驱动本身要求提权
使用场景
- 行政每月需把同一文件夹内的几十份 PDF 合同一次性打印装订,手动逐份设置单双面太费时
- 团队要把混合存放的 .docx 方案稿和 .pdf 附件统一送印,希望按页数自动选单面或双面
- 财务有一整目录的历史凭证 PDF 和 Word 文件需要按顺序归档打印,担心漏打或重复打印
- 打印机默认是双面,单页的临时通知也得双面印造成浪费,希望脚本按页数自动切换单面
适合人员
- 每天要处理大量合同、公文的行政文员,诉求是一次点运行就能把整目录文档打完,不用再逐份点开设置
- 负责归档扫描件与编辑稿的资料管理员,诉求是按文件夹批量送印且不漏打,打印结果与文件顺序一致
- 用 PowerShell 写内部自动化脚本的运维工程师,诉求是有一份可直接改参数、改默认打印机的参考实现
- 在 WPS Office 环境下办公、打印机支持双面的公司职员,诉求是脚本能自动识别 WPS 并正确设置双面