告别手动调整!用 PowerShell 脚本实现发票 A4 纸批量 75% 缩放打印

每到报销季,财务朋友和行政小伙伴们最头疼的是什么?除了堆积如山的票据,恐怕就是那一堆格式各异的电子发票打印任务了。

通常我们遇到的麻烦是:发票直接打印要么太大浪费纸张,要么太小贴单据不方便。很多教程建议调整打印机设置,但每换一台电脑都要重新设置一遍,简直是重复劳动的噩梦。

最近发现了一个极其高效的“懒人”方案,通过一个简单的 PowerShell 脚本,配合轻量级阅读器 SumatraPDF,就能实现发票的批量处理,自动以 A4 纸 75% 的大小进行排版打印。不仅排版整齐,而且完全自动化,解放双手。

为什么选这个组合?

A4纸上排版整齐的发票打印效果

发票批量排版打印效果:借助 PowerShell 脚本,发票被精准缩放到 A4 纸 75% 大小,整齐划一。

在介绍方案之前,先聊聊为什么推荐这个路子,而不是直接用 Word 或 Excel 拼版:

  1. 轻量高效:SumatraPDF 是一款以速度快、体积小著称的 PDF 阅读器,它支持命令行操作,这为我们写脚本自动化提供了绝佳接口。
  2. PowerShell 的原生优势:作为 Windows 系统的标配,PowerShell 处理文件批量操作(如遍历文件夹中的所有 PDF)非常方便,不需要安装额外的编程环境。
  3. 精准缩放:脚本的核心在于调用打印接口时强制指定缩放比例,确保每张发票都乖乖变成 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
}

注意:上述代码供逻辑参考,实际使用中请下载作者提供的完整脚本包,因为针对不同打印机驱动,参数细节可能有所不同。

如何使用

  1. 将下载好的脚本解压。
  2. 修改路径:用记事本或 VS Code 打开脚本文件,找到指定 SumatraPDF 路径的那一行(通常是第八行左右),将其修改为你电脑上实际的存放路径。
  3. 执行:将脚本文件放入存有发票 PDF 的文件夹中。右键点击脚本,选择“使用 PowerShell 运行”。

搞定!此时你应该能听到打印机开始工作的声音了。一张张排版完美、大小统一的发票就会吐出来。

常见问题与排查

在使用自动化脚本时,难免会遇到小插曲,这里有几个常见问题的解决思路:

1. 打印出来是空白页或者大小不对?

原因:通常是打印机驱动不支持特定的命令行参数,或者缩放参数写法有误。

解决:尝试手动打开 SumatraPDF,点击打印,在打印界面中确认“缩放”选项是否调整为 75%。如果手动可以,检查脚本中的参数拼写是否正确。某些老旧打印机可能不支持无界面打印,需要调整 Start-Process 的参数。

2. 提示“找不到文件”?

原因:路径中包含中文字符,或者路径分隔符写错。

解决:尽量将 SumatraPDF 和发票文件都存放在全英文、无空格的路径下,例如 C:\PrintJobs\Invoices。这能避免大部分编码问题。

3. 运行脚本报错“无法加载,因为在此系统上禁止运行脚本”?

原因:PowerShell 的执行策略限制。

解决:需要临时更改执行策略。以管理员身份打开 PowerShell,输入 Set-ExecutionPolicy RemoteSigned,选择 Y 确认即可。

总结

这个方案的魅力在于“一次编写,多次复用”。特别是对于每个月都需要处理大量发票的财务人员,或者是需要帮助客户打印票据的技术服务商,这不仅仅是一个脚本,更是一种将繁杂流程标准化的思维。

当然,AI 生成的代码虽然方便,但在使用前务必自行检测安全性,毕竟代码是要在本地机器上运行的。希望这个小小的技巧能帮大家从繁琐的复印机操作中解放出来!

如果你有更好的批量打印工具或脚本,也欢迎在评论区分享交流!

标签: none

评论已关闭