如何自動列印 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 位部落客按了讚: