由于公司的传真是用调制解调器接收,再以 PDF 的格式储存在特定的资料夹,于是就有了自动打印 PDF 档案的需求。
原本我想这功能应该满简单的,应该是写个批次档 + 随便一套 PDF Reader 应该可以达成。
Acrobat Reader
首先研究业界标准的 Acrobat Reader 是否能用命令列来打印 PDF 档案。
测试它的命令列语法1:
"C:\Program Files\Adobe\Reader\AcroRd32.exe" /p D:\auto_print\test.pdf
结果:
Acrobat Reader 会开启档案,显示打印的对话视窗,等你按下 [确定] 它才会打印,打印完会自动关闭 PDF 档,但不会关闭 Acrobat 的主视窗。
测试它的命令列语法2:
"C:\Program Files\Adobe\Reader\AcroRd32.exe" /h /t D:\auto_print\test.pdf
结果:
Acrobat Reader 会以“最小化视窗”的方式开启档案,以“默认的打印机”完成打印工作,打印完会自动关闭 PDF 档,但不会关闭 Acrobat 的主视窗。
(Acrobat Reader 全部的的命令列指令可以参考: Adobe Developer FAQ)
Acrobat Reader 虽然可以自动打印,但不会关闭主程式,可以说是阴魂不散。不会关闭主程式就无法执行批次档的下一行指令了...于是我再寻求其它的程式...
Foxit Reader
再来研究知名的 Foxit Reader。
测试它的命令列语法:
"D:\Portable\FoxitReader-5.3.1\Foxit Reader.exe" /p D:\auto_print\test.pdf
结果:
Foxit Reader 会“无声无息”的以“默认的打印机”完成打印工作,不会弹出任何的视窗或任何的讯息要你确认...
真是太令人感动了!!而且我用的还是 Portable 可携版,所以 Foxit Reader 自动打印成功!!
继续研究 Foxit Reader 还有哪些指令:
"D:\Portable\FoxitReader-5.3.1\Foxit Reader.exe" /help Here are some command lines that can be used with Foxit Reader using the following syntax: <Reader Path> [/register] | [PDF Path] [/pwd] [/p | /pt <PDFPath> [Printer]] [/A [...] [...] ...] Command Description /register Set Foxit Reader as the default reader /pwd <password> Input the password of the protected PDF documents /p <PDF Path> Print the document with default printer /t <PDF Path> [Priter] Print the document with designated printer <PDF Path> /A [...] [...] .. Open a PDF document with a command that specifies exactly what to display, and how to display it
可以用参数 /t <PDF Path> [Priter] 以指定其它打印机,也可以用参数 /pwd <password> 来指定开启档案时的密码 (虽然暂时用不到),Foxit Reader 太棒了,完全符合我的需求。
自动打印批次档
接下来就是写个批次档来打印特定资料夹下的 PDF 档,打印完还要把档案移到其它资料夹,免得下次又被拿出来打印。
批次档的内容如下:
@ECHO OFF :: 待打印的 PDF 资料夹 SET PDF="D:\auto_print" :: 打印完毕的 PDF 资料夹 SET OK="D:\auto_print\ok" :: PDF Reader 的程式路径 SET EXE="D:\Portable\FoxitReader-5.3.1\Foxit Reader.exe" ECHO 开始打印: %PDF% :: 取得 PDF 档案名称,执行打印、搬移档案 (自动覆蓋旧档) FOR %%f IN (%PDF%\*.pdf) DO ECHO %%f && %EXE% /p %%f && MOVE /Y %%f %OK% ECHO 打印完毕
批次档可以随便命名,但副档名必须是“.bat”。把这个批次档加到 Windows 的“工作排程器”去定期执行就 ok 了。
附注: 如何自动打印图档
要自动打印图档只要用“小画家”就可以了,不过必须是它支援的图档格式。
测试它的命令列语法:
mspaint /p D:\auto_print\test.jpg
结果:
小画家会弹出一个小对话框,显示打印进度,以“默认的打印机”完成打印工作,打印完也会自动关闭程式。
这样已经符合我们的需求了,可以依样画葫芦写个批次档让它打印特定资料夹以下的图档。
不过有两点是要特别注意的:
- 小画家打印出来的东西会变成横向的
- 如果是多页的 TIFF 图档,则只会打印第 1 页
您好~因为有电脑操作上的需求,经过网络搜寻,拜读您的文章并且利用“自动打印批次档“的程式,测试开启及打印的部份没有问题,可是搬移的部份却无法执行,以下为利用您的程式作的修改,如果方便请您指导修正,谢谢您。
@ECHO OFF
:: 待打印的 PDF 资料夹
SET PDF="D:\pc共用资料夹\自动打印"
:: 打印完毕的 PDF 资料夹
SET OK="D:\pc共用资料夹\已处理"
:: PDF Reader 的程式路径
SET EXE="C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe"
ECHO 开始打印 : %PDF%
:: 取得 PDF 档案名称,执行打印、搬移档案 (自动覆蓋旧档)
FOR %%f IN (%PDF%\*.pdf) DO ECHO %%f && %EXE% /h /t %%f && MOVE /y %%f %OK%
ECHO 打印完毕
应该是 Acrobat 执行完不会自动关闭主程式,因此没有自动进行之后的 MOVE 搬移指令。
请将 Acrobat 换成 Foxit Reader 看看。
依照您的建议改用Foxit Reader不过就如您所说执行完不会自动关闭主程式,因此没有自动进行之后的 MOVE 搬移指令。关闭程式后就有顺利执行MOVE,非常感谢您的帮忙,谢谢您。
想请问有关于自动打印图档的问题,因为TX-320打印机要定期打印避免喷头堵住,所以想将起打印设置进(排定的工作)由于不是很懂指令,所以想请教不晓得哪个步骤错误。
1有在D槽设置资料夹auto_print放置一张test.jpg
2在桌面开启记事本输入mspaint /p D:\auto_print\test.jpg储存更改附档名vbs
3.点击后出现
错误:点击后显示语法错误
程式码:800A03EA
来源: VBS编译阶段错误
成功打印出来了,附档名改BAT就可以了
另外想请问如何自动打印WORD档
:: 待打印的 PDF 资料夹
SET PDF="D:\pc共用资料夹\自动打印"
可以改成批次档储放那里,执行批次档就打印所有的pdf档!
引用通告: 如何自动打印 PDF 档与图档 | Vixual – 云端商店
妙了....昨天找到楼主的这篇文,马上试了一下...果然可以,超开心~
结果今天准备要来改一下公司的自动打印模式...
居然不会"无声无息了", 在windows CMD下 利用指令打印PDF ,会跳出Foxit Reader 的主程式.
真的很妙..昨天装好在TRY时真是无声无息的印..........
你好,因为我想选择列表机,所以我用了 "C:\Program Files\Adobe\Reader\AcroRd32.exe" /p D:\auto_print\test.pdf 这个方法
但是打印完后adobe还是开启著,请问有办法打印完后adobe的视窗都关闭吗?
因为 Acrobat 不会自动关闭视窗,因此才要改用 FoxitReader。
FoxitReader 也可以在命令列指定打印机。
引用通告: 如何自动打印 PDF 档与图档 | Vixual | 云端资讯网
你好, 改用FOXIT READER后, 也是不会自动关闭程序, 是版本的问题吗? 版本: 9.0.0.29935
我也跟你遇到一样的问题
请教一下,我要打印的资料夹是在远端的资料夹的话路径要如何设定呢?远端资料夹是设定成共用资料夹