如何自动打印 PDF 档与图档

由于公司的传真是用调制解调器接收,再以 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

结果:

小画家会弹出一个小对话框,显示打印进度,以“默认的打印机”完成打印工作,打印完也会自动关闭程式。

这样已经符合我们的需求了,可以依样画葫芦写个批次档让它打印特定资料夹以下的图档。

不过有两点是要特别注意的:

  1. 小画家打印出来的东西会变成横向的
  2. 如果是多页的 TIFF 图档,则只会打印第 1 页

参考网页

    • san
    • 07/22. 2016 3:43下午
    Using Safari Safari 533.19.4 on Mac OS X Mac OS X 10.4.11

    您好~因为有电脑操作上的需求,经过网络搜寻,拜读您的文章并且利用“自动打印批次档“的程式,测试开启及打印的部份没有问题,可是搬移的部份却无法执行,以下为利用您的程式作的修改,如果方便请您指导修正,谢谢您。

    @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 打印完毕

    • Using Google Chrome Google Chrome 51.0.2704.106 on Windows Windows NT

      应该是 Acrobat 执行完不会自动关闭主程式,因此没有自动进行之后的 MOVE 搬移指令。
      请将 Acrobat 换成 Foxit Reader 看看。

        • san
        • 07/22. 2016 6:12下午
        Using Safari Safari 533.19.4 on Mac OS X Mac OS X 10.4.11

        依照您的建议改用Foxit Reader不过就如您所说执行完不会自动关闭主程式,因此没有自动进行之后的 MOVE 搬移指令。关闭程式后就有顺利执行MOVE,非常感谢您的帮忙,谢谢您。

    • sch
    • 08/12. 2016 10:17上午
    Using Google Chrome Google Chrome 49.0.2623.112 on Windows Windows XP

    想请问有关于自动打印图档的问题,因为TX-320打印机要定期打印避免喷头堵住,所以想将起打印设置进(排定的工作)由于不是很懂指令,所以想请教不晓得哪个步骤错误。

    1有在D槽设置资料夹auto_print放置一张test.jpg

    2在桌面开启记事本输入mspaint /p D:\auto_print\test.jpg储存更改附档名vbs

    3.点击后出现
    错误:点击后显示语法错误
    程式码:800A03EA
    来源: VBS编译阶段错误

    • sch
    • 08/12. 2016 10:55上午
    Using Google Chrome Google Chrome 49.0.2623.112 on Windows Windows XP

    成功打印出来了,附档名改BAT就可以了
    另外想请问如何自动打印WORD档

    • ddovwmk
    • 08/16. 2016 9:45下午
    Using Google Chrome Google Chrome 52.0.2743.116 on Windows Windows 7

    :: 待打印的 PDF 资料夹
    SET PDF="D:\pc共用资料夹\自动打印"

    可以改成批次档储放那里,执行批次档就打印所有的pdf档!

    • Vincent
    • 12/08. 2016 12:03下午
    Using Google Chrome Google Chrome 54.0.2840.99 on Windows Windows 7

    妙了....昨天找到楼主的这篇文,马上试了一下...果然可以,超开心~
    结果今天准备要来改一下公司的自动打印模式...

    居然不会"无声无息了", 在windows CMD下 利用指令打印PDF ,会跳出Foxit Reader 的主程式.
    真的很妙..昨天装好在TRY时真是无声无息的印..........

    • Dave
    • 09/11. 2017 3:28下午
    Using Google Chrome Google Chrome 60.0.3112.113 on Windows Windows NT

    你好,因为我想选择列表机,所以我用了 "C:\Program Files\Adobe\Reader\AcroRd32.exe" /p D:\auto_print\test.pdf 这个方法
    但是打印完后adobe还是开启著,请问有办法打印完后adobe的视窗都关闭吗?

    • Using Mozilla Firefox Mozilla Firefox 55.0 on Windows Windows NT

      因为 Acrobat 不会自动关闭视窗,因此才要改用 FoxitReader。
      FoxitReader 也可以在命令列指定打印机。

    • patrick
    • 09/15. 2018 3:30下午
    Using Google Chrome Google Chrome 68.0.3440.106 on Windows Windows NT

    你好, 改用FOXIT READER后, 也是不会自动关闭程序, 是版本的问题吗? 版本: 9.0.0.29935

      • Jerry Lin
      • 11/02. 2018 3:58下午
      Using Safari Safari 604.1 on iOS iOS 12.0

      我也跟你遇到一样的问题

    • Jerry Lin
    • 11/02. 2018 3:57下午
    Using Safari Safari 604.1 on iOS iOS 12.0

    请教一下,我要打印的资料夹是在远端的资料夹的话路径要如何设定呢?远端资料夹是设定成共用资料夹

return top

%d 位部落客按了赞: