|
|
发表于 2005-4-21 21:57:14
|
显示全部楼层
请参考下面的转贴:
文:林思敬
電子郵件:27733999@qq.com
网站:www.ec-base.com
最后更新:2004年5月19日
本文基于《GNU 自由文档许可证》发布,可自由随意复制,但请保留作者版权信息以及文章完整性
前言
相信大多朋友都使用过PDF文件,PDF作为互联网最流行的文件格式之一,拥有大量的FANS,并在商业应用中文件交流中也有相当的市场.为什么它如此流行?呵呵,因为其能完整的保存文件原有的格式,更重要的是它支持多个平台!几乎在WIN,LIN,MAC下,你都可以很轻松的去查看.说得它怎么好?呵呵,是不是想试试啊?你一定会问:那我要怎么样才能创建一个PDF文件呢?答案好简单:我都说过自从上帝创造了金钱就没有什么解决不了的问题!你只要给钱给ADOBE就可以了!呵呵!OK,玩笑开到这里,自从上帝创造了人类就没有什么难道到我们的!我写这边文章的目的,就是想和大家分享如何通过 Linux, Samba, 和Ghostscript来帮助我们免费的创建PDF文件(从ADOBE省下的钱叫你老板加你人工,然后你请我吃饭去) .当然这只是免费方法的一种.
OK!言规正传!让我来说说这个方案的基本原理,其实我们是利用SAMBA在LINUX下创建虚拟的PS-printer,(为什么是虚拟的?别急,看完你就知道了),然后我们再应用Ghostscript来创建我们所需要的PDF文件.
现在,让我简单说说我们所应用到的软件:
Samba
Samba 是一个运行于Linux/UNIX 环境下非常让人兴奋的软件,它提供了WINDOWS和LINUX的桥梁,让你能够在不同系统环境下方便的共享你的文件和打印机.SMB的好处这里我就不说了,有兴趣的朋友请自行参考SAMBA的老窝http://www.samba.org/ 上面有详细说明.稍后我们就利用SAMBA来创建一个创建PDF的pseudo-printer
Ghostscript
Ghostscript 则是LINUX系统下另一伟大的软件,它只要应用于为打印机把 Postscript 正确的格式,当然它也提供 Postscript 和PDF 格式的转换,我们这里正是应用到这一点.
如果你的系统上"gs"命令是有效的,那么恭喜你!你的系统已经安装了Ghostscript,否则你只能根据你自身的系统版本自行安装.你可以从http://www.cs.wisc.edu/~ghost/获取它.
在Ghostscript中包含了一个叫做ps2pdf 的脚本,它就是帮助我们简单将Postscript转为PDF的.
OK~这些都准备好了?那我们就开始我们的免费之旅!
PDF服务器设置
1.打印脚本的创建
创建脚本的目的是为了将我们从打印池中获取的Postscript 格式的文件转化成为PDF文件,并把它输出到我们指定的目录下.这样用户就可以从我们从SAMBA共享出来的这个目录中找到他所创建的PDF文件,当然对该目录相关用户和SAMBA服务要有权限去读取或者写入.由于在接下来的SAMBA服务中我们设置GUEST帐号为NOBODY,所以这里我们就必须为该目录分配权限:
chown nobody /home/becks/pdf
chmod 740 /home/becks/pdf (根据自己的需要设置其他人的权限,但NOBODY一定要有写的权限)
OK~ALL DONE!让我们来看看这个脚本:
以下是打印脚本:
#!/bin/sh
# 此脚本应用于将postscript 文件 转换为PDF文件,并将共享在我们在SAMBA设置的位置
# 刺客微软 2004 becks@ec-base.com www.ec-base.com
# 首先,我们会创建一个临时文件,并赋予其当前的时间作为文件名,
# 之后,我们会将其重命名为相同日期但多了个后缀.pdf的文件.
# 这样做是为了在PDF还在生成的时候,有用户打开此PDF文件,因此文件未完全生成而收到错误提示!
# 完美的东西怎么能有这样的错误 ?
NAME=`date +%b%d-%H%M%S`
# 这里填写要输出PDF的路径,确定此目录存在且你所运行SAMBA的用户有权限写入
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.sh 下载
2.samba 设置
SMB.CONF:
[global]
guest account = nobody
hosts allow = 192.168.1
; 这里使用share只是为了方便,并不安全,读者可以自行设置USER认证,我现有就是以 PDC 做为认证,有兴趣可以到weblog.ec-base.com看看我SAMBA PDC的文章
security=share
workgroup=ec-base.com
; 创建一个发布PDF文件的共享目录
[PDF]
path = /home/becks/pdf
browseable = yes
writeable = yes
guest ok = yes
force user = nobody (强制在此目录下创建的文件目录都属于nobody)
; 创建PDF虚拟打印机
[pdfprinter] ;打印机的名称
path = /tmp
printable = yes
guest ok = yes
print command = /usr/bin/printpdf %s
use client driver =yes ; 最重要的是这一句,使用客户端驱动
; 因为我们的PDF SERVER将好快执行PDF的创建,这里不需要查询以及删除打印队列,所以以下命令留空.
; lpq (罗列打印队列) lprm (删除打印队列)
lpq command =
lprm command =
注:以上配置文件可以从http://www.ec-base.com/download/smb.conf下载
use client driver =yes ; 这一句非常重要,使用客户端驱动!我一开始搭建时候,缺少这一句,结果怎么连接打印机都是显示"存取被拒,无法连线"的错误提示!当然我们可以为客户端统一提供驱动,关于这个的文章我稍后奉上!
修改后大家可以不要忘记重新启动SAMBA!怎么启动?GOOGLE吧!呵呵!
3.WINDOWS端设定
好了!SAMBA服务启动后,现在你可以通过网上邻居浏览到该打印机,双击,然后选择安装,我们需要选择一个Postscript printer 驱动的打印机,笔者这里选择了 HP LaserJet 5P/5MP PostScript
完成后,你只要在打印文件的时候选择pdfprinter这个打印机,不到几秒,你就可以在共享目录PDF中看到带有你打印时间的PDF文件了!当然你需要安装PDF相关的READER才能阅读!这个就不用我教了!一下是几种常用的READER
acroreader 有LINUX和WINDWOS版
gnome-gv - GNOME
xpdf - LINUX
OK!到此为止,一个完全免费的PDF制作服务器就搭建完成!
刺客微软
2004.5.19 广州 |
|