由於公司的傳真是用數據機接收,再以 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 頁