如何自動列印 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
結果:
小畫家會彈出一個小對話框,顯示列印進度,以「預設的印表機」完成列印工作,列印完也會自動關閉程式。
這樣已經符合我們的需求了,可以依樣畫葫蘆寫個批次檔讓它列印特定資料夾以下的圖檔。
不過有兩點是要特別注意的:
- 小畫家列印出來的東西會變成橫向的
- 如果是多頁的 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檔!
妙了....昨天找到樓主的這篇文,馬上試了一下...果然可以,超開心~
結果今天準備要來改一下公司的自動列印模式...
居然不會"無聲無息了", 在windows CMD下 利用指令列印PDF ,會跳出Foxit Reader 的主程式.
真的很妙..昨天裝好在TRY時真是無聲無息的印..........
你好,因為我想選擇列表機,所以我用了 "C:\Program Files\Adobe\Reader\AcroRd32.exe" /p D:\auto_print\test.pdf 這個方法
但是列印完後adobe還是開啟著,請問有辦法列印完後adobe的視窗都關閉嗎?
因為 Acrobat 不會自動關閉視窗,因此才要改用 FoxitReader。
FoxitReader 也可以在命令列指定印表機。
你好, 改用FOXIT READER後, 也是不會自動關閉程序, 是版本的問題嗎? 版本: 9.0.0.29935
我也跟你遇到一樣的問題
請教一下,我要列印的資料夾是在遠端的資料夾的話路徑要如何設定呢?遠端資料夾是設定成共用資料夾