因為使用公司VB開發的軟體,列印報表時有時候其實不須印出,而改成存PDF檔的方式,大多人都會開啟與使用,想當然這種小事,不需要請出 Adobe Acrobat DC 這種牛刀來做殺小雞,但是用中文去google,都是找到功能完整,但不太能自由在公司使用的免費軟體,而本篇文章介紹的方式,只需要安裝兩個很小,且可以自由使用的軟體,即可搞定。
這方式使用的原理,是利用可以產出 Postscript (PS) 檔的Windows 7內建驅動印表機,接收使用者要列印的資料,印表機產出 PS 格式的資料,讓 RedMon 讀取並轉送給 Ghostscript 轉檔為PDF 格式存檔。
因為懶的截圖,請幫忙就文字去理解與操作,應該不會太難。
測試環境:Windows 7 旗艦版 64bit sp1
先去下載 Ghostscript ,請依你的作業系統,選擇32或 64bit版本 〈不知道的,找 "我的電腦" 按右鍵,選內容就可以看到了。〉使用下一步安裝,請注意,預設的安裝資料夾會在 C:\Program Files 下面的 gs 資料夾,請把它改到 C:\gs,直接安裝在 C槽下面。〈如果是預設安裝資料夾,pdf 會印不出來,搞很久才發現,也請注意本篇文章內所有的程式路徑設定,如果你的路徑不一樣,請自行更動〉然後打開記事本,把下面這段文字貼上。
-IC:\gs\gs9.18\lib;C:\gs\fonts
-sDEVICE=pdfwrite
-r300
-dNOPAUSE
-dSAFER
-sPAPERSIZE=a4
-dCompatibilityLevel=1.4
-dAutoRotatePages=/PageByPage
-dPDFSETTINGS=/printer
先存成 pdfwrite.txt ,再複製到剛剛 gs 資料夾下 〈需要系統管理員權限〉。這個文字檔的用意,是當ps要轉成pdf時,對ghostscript下的操作指令,而上面的設定,是輸出300dbi,輸出品質適合印表機列印,A4大小的PDF檔〈如果需要調整 Ghostscript 輸出設定,可以參考我這一篇裡面的連結: PostScript-to-PDF 與 How to use Ghostscrip〉,到這裡完成轉換pdf引擎的設定。
接下來下載 RedMon 解壓縮後有 32與 64bit 版本,安裝時只需應一聲好,連下一步都省了。
接下來下載 RedMon 解壓縮後有 32與 64bit 版本,安裝時只需應一聲好,連下一步都省了。
接著要安裝印表機。但是因為新增連接埠是系統管理員才可以做的,所以我們先把等一下要使用由RedMon產生的虛擬印表機連接埠 Redirected Port 安裝並設定好。
按開始功能表裡的 "傳真與印表機" 然後先隨便點一下你已經有安裝的印表機〈不要點兩下〉,你可以注意到印表機圖案上方工具列中,會多出幾項選項。按下 "列印伺服器設定" ,再選擇 "連接埠" ,然後按下方左邊有盾牌〈表示系統管理員才可以做〉的 "變更連接埠設定"。按下 "新增連接埠" ,選擇第二個 "Redirected Port" ,接下來埠的名字就用預設的 "RPT1:" ,新增完接著設定它,先按一下 RPT1,然後再按下右下角的 "設定連接埠"。
最上面的 "Redirect this port to the program:" 方框中,拷貝下面這段文字〈如果你安裝的是32bit版本這裡一定會不一樣,請自己改成 gswin32c.exe〉,貼進去:
C:\gs\gs9.18\bin\gswin64c.exe
接著再把下面這段文字,拷貝貼到 "Arguments for this prog確認ram are:" 方框中。
@C:\gs\pdfwrite.txt -sOutputFile="%1.pdf" -c .setpdfwrite -f -
然後將下方的 output 選擇改成 "Prompt for filename",以及確認 "Run as User" 有打勾。
這時就要去按 "新增印表機" 了,在 "使用現有的連接埠" 中,選擇剛剛新增的 "RPT1:" ,下一步選擇 HP Color LaserJet 2800 Series PS 印表機驅動程式做安裝,安裝中可以把印表機的名字改成 " PDF 印表機" 。
安裝好後,在這個印表機圖案上按下右鍵,選擇 "進階" 分頁,中間的地方選擇 "直接列印到印表機"。再選擇 "裝置設定" 分頁,找字形替換表下面的區塊中,將 "每次工作之後送出 CTRL-D" 後面的 "是" 改成 "否",下面的 "等候逾時" 由 300秒 改成 1秒。其他印表機的偏好設定都不需要再去調整。
這時就一切搞定了,可以先印測試頁,就會跳出存檔視窗,填入檔名就可以,存檔後會自動加上.pdf 副檔名。
另外,這篇參考文章中也有提到,應用同樣的方式,可以做出將文件轉成不同檔案格式的圖片〈目前有支援的格式,簡單說,也可以將文件印成JPG〉的印表機,應該不會太難,上面 -sOutputFile="%1.pdf" 改一下,就可以自動加入正確的副檔名來存檔了。
參考文章:
Creating a free PDFWriter using Ghostscript
Creating a Free PDF Printer in Windows 7 using Ghostscript and Redmon
The RedMon online help