筆者是一個Linux系統管理員,最近我多了一項額外的工作——幫一些Windows用戶將PostScript文件轉換為PDF格式。這是因為在Linux下有一個免費的Ghostscript工具,可以方便地實現這種轉換;但Windows下沒有免費的轉換工具。
我想出一種方法,使得Windows用戶不必學習Linux命令,只需簡單地將文件“打印”,就可以完成轉換,下面就來介紹一下。
基本原理
此方法的基本原理就是利用Ghostscript將PostScript文件轉換成PDF格式,然後,通過Samba在Linux下創建一台虛擬的PS-Printer打印機,再使用該虛擬打印機把轉換後的PDF格式文件輸出到一個共享目錄中,供Windows用戶使用。下面簡單介紹一下所應用到的軟件。
1.Samba
Samba是一個運行於Linux環境下的軟件,它提供了Windows訪問Linux的橋梁,讓用戶能夠在不同的系統環境下方便地共享文件和打印機。
2.Ghostscript
在Ghostscript中包含了一個ps2pdf工具,該工具能將PostScript轉為PDF格式。如果系統有gs命令,則說明已經安裝了Ghostscript,否則需要根據系統版本自行安裝。
設置方法
1. 創建“打印”腳本
創建一個腳本,將打印池中的PostScript文件轉化成PDF格式,並把它輸出到指定的目錄下。通過Samba共享該目錄後,用戶就可以閱讀所創建的PDF文件了。
首先,為相關用戶設置文件輸出目錄的讀、寫權限:
#chown nobody /home/becks/pdf #chmod 740 /home/becks/pdf
然後,根據實際需要設置其它人的權限。
權限設置完畢後,創建如下內容的腳本,用於將PostScript文件轉換為PDF格式:
#!/bin/sh NAME=`date +%b%d-%H%M%S` #下面填寫要輸出PDF文件的路徑 OUTDIR=/home/becks/pdf ps2pdf $1 $OUTDIR/$NAME.temp mv $OUTDIR/$NAME.temp $OUTDIR/$NAME.pdf rm $1
將此腳本存放到Linux系統下的/usr/bin目錄中,並命名為printpdf。該腳本也可以到http://www.ec-base.com/download/printpdf.txt下載。
2.設置Samba
修改smb.conf文件為如下內容:
[global] guest account = nobody hosts allow = 192.168.1.0 security=share workgroup=ec-base.com [PDF] path = /home/becks/pdf browseable = yes writeable = yes guest ok = yes force user = nobody [pdfprinter] path = /tmp printable = yes guest ok = yes print command = /usr/bin/printpdf %s use client driver =yes lpq command = lprm command =
在以上的配置中,創建了一個發布PDF文件的共享目錄(/home/becks/pdf),並強制規定在此目錄下創建的文件都屬於nobody用戶,然後創建一台PDF虛擬打印機,並命名為pdfprinter,而且指明使用客戶端的驅動程序(use client driver =yes)。
3.Windows端的設置
Samba服務啟動後,Windows用戶可以通過網上鄰居浏覽到pdfprinter打印機,雙擊它進行安裝,然後,隨便選擇一個PostScript Printer驅動即可。筆者選擇的是HP LaserJet 5P/5MP PostScript。
安裝完成後,只需把要轉換的文件進行打印,並選擇pdfprinter打印機,就可以在共享目錄/home/becks/pdf 中看到帶有打印時間的PDF格式的文件了。