告别手动调整!用 PowerShell 脚本实现发票 A4 纸批量 75% 缩放打印
告别手动调整!用 PowerShell 脚本实现发票 A4 纸批量 75% 缩放打印
每到报销季,财务朋友和行政小伙伴们最头疼的是什么?除了堆积如山的票据,恐怕就是那一堆格式各异的电子发票打印任务了。
通常我们遇到的麻烦是:发票直接打印要么太大浪费纸张,要么太小贴单据不方便。很多教程建议调整打印机设置,但每换一台电脑都要重新设置一遍,简直是重复劳动的噩梦。
最近发现了一个极其高效的“懒人”方案,通过一个简单的 PowerShell 脚本,配合轻量级阅读器 SumatraPDF,就能实现发票的批量处理,自动以 A4 纸 75% 的大小进行排版打印。不仅排版整齐,而且完全自动化,解放双手。
为什么选这个组合?
发票批量排版打印效果:借助 PowerShell 脚本,发票被精准缩放到 A4 纸 75% 大小,整齐划一。
在介绍方案之前,先聊聊为什么推荐这个路子,而不是直接用 Word 或 Excel 拼版:
- 轻量高效:SumatraPDF 是一款以速度快、体积小著称的 PDF 阅读器,它支持命令行操作,这为我们写脚本自动化提供了绝佳接口。
- PowerShell 的原生优势:作为 Windows 系统的标配,PowerShell 处理文件批量操作(如遍历文件夹中的所有 PDF)非常方便,不需要安装额外的编程环境。
- 精准缩放:脚本的核心在于调用打印接口时强制指定缩放比例,确保每张发票都乖乖变成 75% 大小,整齐划一,非常适合后续装订或粘贴。
准备工作:工具就位
工欲善其事,必先利其器。在运行脚本之前,你需要准备好两样东西。
1. 下载 SumatraPDF
我们需要用到 SumatraPDF 的 executable 文件(.exe)。可以去官网下载最新版,为了演示稳定,本方案基于 SumatraPDF-3.6.1-64.exe 进行测试。
- 下载后建议将其放在一个固定路径的文件夹中,比如
D:\Tools\SumatraPDF,方便脚本调用。
2. 准备发票文件
将所有需要打印的电子发票(PDF 格式)放在同一个文件夹内。不要混杂其他文件,以免脚本误操作(虽然脚本通常会过滤后缀,但保持文件夹整洁是个好习惯)。
核心实操:编写与运行脚本
下面是这次自动化操作的主角——PowerShell 脚本。这段代码的逻辑其实很简单:扫描指定目录 -> 找到 PDF 文件 -> 调用 SumatraPDF 的打印命令 -> 设置缩放比例为 75%。
脚本代码思路解析
虽然源代码是压缩包形式,但其核心逻辑我们可以复现并理解一下。本质上我们需要构建一个类似于以下的命令行指令(伪代码逻辑):
# 定义 SumatraPDF 的路径
$sumatraPath = "D:\你的路径\SumatraPDF-3.6.1-64.exe"
# 获取当前目录下所有 PDF 文件
$pdfFiles = Get-ChildItem -Path ".\" -Filter "*.pdf"
# 遍历每个文件进行打印
foreach ($file in $pdfFiles) {
# 核心打印命令:
# -print-to-default : 打印到默认打印机
# -print-settings "fit" : 适应纸张设置,配合缩放参数使用
# 这里具体实现缩放需要调用特定的 print-settings 参数,如 "shrink=0.75"
$arguments = "-print-to-default `"$($file.FullName)`" -print-settings `"shrink=0.75`""
Start-Process -FilePath $sumatraPath -ArgumentList $arguments -NoNewWindow -Wait
}
注意:上述代码供逻辑参考,实际使用中请下载作者提供的完整脚本包,因为针对不同打印机驱动,参数细节可能有所不同。
如何使用
- 将下载好的脚本解压。
- 修改路径:用记事本或 VS Code 打开脚本文件,找到指定 SumatraPDF 路径的那一行(通常是第八行左右),将其修改为你电脑上实际的存放路径。
- 执行:将脚本文件放入存有发票 PDF 的文件夹中。右键点击脚本,选择“使用 PowerShell 运行”。
搞定!此时你应该能听到打印机开始工作的声音了。一张张排版完美、大小统一的发票就会吐出来。
常见问题与排查
在使用自动化脚本时,难免会遇到小插曲,这里有几个常见问题的解决思路:
1. 打印出来是空白页或者大小不对?
原因:通常是打印机驱动不支持特定的命令行参数,或者缩放参数写法有误。
解决:尝试手动打开 SumatraPDF,点击打印,在打印界面中确认“缩放”选项是否调整为 75%。如果手动可以,检查脚本中的参数拼写是否正确。某些老旧打印机可能不支持无界面打印,需要调整 Start-Process 的参数。
2. 提示“找不到文件”?
原因:路径中包含中文字符,或者路径分隔符写错。
解决:尽量将 SumatraPDF 和发票文件都存放在全英文、无空格的路径下,例如 C:\PrintJobs\Invoices。这能避免大部分编码问题。
3. 运行脚本报错“无法加载,因为在此系统上禁止运行脚本”?
原因:PowerShell 的执行策略限制。
解决:需要临时更改执行策略。以管理员身份打开 PowerShell,输入 Set-ExecutionPolicy RemoteSigned,选择 Y 确认即可。
总结
这个方案的魅力在于“一次编写,多次复用”。特别是对于每个月都需要处理大量发票的财务人员,或者是需要帮助客户打印票据的技术服务商,这不仅仅是一个脚本,更是一种将繁杂流程标准化的思维。
当然,AI 生成的代码虽然方便,但在使用前务必自行检测安全性,毕竟代码是要在本地机器上运行的。希望这个小小的技巧能帮大家从繁琐的复印机操作中解放出来!
如果你有更好的批量打印工具或脚本,也欢迎在评论区分享交流!
评论已关闭