LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1262|回复: 3

通过samba使用linux不支持的打印机

[复制链接]
发表于 2003-12-1 10:15:53 | 显示全部楼层 |阅读模式
去年,我们这儿买了一大批Canon LBP-810,这些廉价的WINDOWS打印机的效果应该说还是挺好的,但linux下不支持。为了用linux,我一直都是在用一台很旧的HP LaserJet4,但前不久,它终于寿终正寝了,领导也不愿再为它支付维修费。虽然我的电脑上有正版的WINDOWS(联想带的),但我就是要用linux,前一段时间打印都是先通过Apache将文档拷到同事的机子上,再用别人的WORD来打印。上周五,终于受不了了,决定来解决这个问题。当然,事先我是知道通过samba可以实现的。
----------------------
1、我的环境:lfs/blfs(还没有安装打印支持),版本就不好说了,其实哪个版本应该都一样。

2、查找资料
我是完全不知道该如何做的。不过,查找资料是我的专长……呵呵……这个有点自夸的嫌疑,这个过程其实很简单了,只要知道一个站就行了  http://www.linuxprinting.org.
找开konqueror,进入这个站的主页,左边有个FAQ's,再进入Printing FAQ,打开2.2, “How do I print to a non-postscript printer attached to a Windows server? ”。由于LBP-810接在WINDOWS XP上,自然要看Win NT/2K/XP page了。

3、设置WINDOWS
按照linuxprinting中的说明,先下载ghostscript8.0—http://www.cs.wisc.edu/~ghost/do ... on/,再下载perl(我下的是5.8.x)。这些WINDOWS的软件就没什么好说的了。我是将ghostscript和gsview都放在c:\gs下。
RedMon为了实现“打印重定向”,就是先装个虚的打印机,让LINUX认识,而REDMON将LINUX提交来的打印数据再送到LBP-810上。因此,需要先设置一个LINUX认识的PS打印机,说明文档中举例说用Apple LaserWriter II NT,那我也用它吧。(下面基本上就是这个文档的翻译了……)
添加打印机选择端口时应该选择Redirect Port(如果没有,就新建一个,取个名字,就叫linux吧),按“设置端口”为以下值:
Redirect to program: C:\GS\GSVIEW\GSPRINT.EXE         ---->这个要看gsview装在哪儿了
Arguments for program: -                                         ---->就一个减号,前后不能有空格
Output: Program handles output
Run as user:                                                         ---->在这个前面打勾

然后在gsprint.exe所在目录中写一个文件gsprint.cfg,内容如下:
-noquery
-color                                    ---->如果是黑白打印机,这一行就可以省了(我的就是)
-printer
Canon LBP-810                        ----->这个是真实打印机的全名,应该与系统显示的完全一样
-ghostscript
"C:\GS\GS8.00\BIN\GSWIN32C.EXE"         ---->这个要看ghostcript的安装目录了

这时候在命令行下用gsprint打印一个ps文件看看,是不是能正确打印?再试试用notepad或其它什么软件打印(打印时选择刚刚新建的打印机),能不能正常打印?正常情况下,应该都是没问题了

按照这个文档,还要装两个PERL脚本,一个是监视是否有打印作业来,另一个负责打印。但是我发现在我安装的perl-5.8.x上这两个都不能正常工作,我对perl是一窃不通,看了这两个貌似简单的脚本,知道其中一个的`dir .......`那一行不能工作,但不知如何改!是不是就告失败了呢?不行,我又仔细看看这个文档,其中有一个地方解释为什么需要这两个脚本,而其中明明说了WIN9X和XP不需要它们的。既然不需要,perl也就不用了,先卸载再说。这样说来,只要将它共享(假定名为linux),WINDOWS这边就搞成了。

4、配置CUPS
linux下的打印不是CUPS就是LPRng,现在大多数人都用CUPS了。先装个CUPS-1.1.19,放在/opt/cups-1.1.19下。blfs中还说要装LPRng,ghostscript等,其实只要cups就可以了,象ps什么的,KDE自己就可以打开查看----呵呵,又省了不少事吧。Samba自然是不可少的,我的放在/opt/samba-3.0.0下。
CUPS的驱动都是一些ppd文件。由于WINDOWS那儿用的是一个Apple的打印机,linuxprinting.org上有它的驱动,叫postscript.ppd(http://www.linuxprinting.org/sho ... e-LaserWriter_IINTX),下载后放在/opt/cups-1.1.19/share/cups/model下。还要让cups支持SAMBA的打印机,这个简单,在/opt/cups-1.1.19/lib/cups/backend做个smbspool的链接,名为smb即可(ln -s /opt/samba-3.0.0/bin/smbspool smb)。CUPS在rc3.d中放了一个启动脚本,此时需要重新启动CUPS(/etc/rc.d/rc3.d/cups restart,或是kill掉cupsd,再运行cupsd)。
CUPS提供WEB方式的设置。打开浏览器,输入localhost:631就可以看到(如果没有,说明cupsd没有启动)。点“Manage Printers”中的“Add Printer”。
1)第一屏:Name那一项就随便起个名字好了,假定叫linux吧。后面那两项不填也罢。
2)第二屏:Device中已经有了Windows Printer via SAMBA了(如果没有,说明没有做smbspool的链接),就是它了。
3)第三屏:此处要指定SMB打印机名。我的是:
smb://root:123456@dys/linux
@前面的是WINDOWS的用户名和密码,dys是WINDOWS计算机的名字,linux是那外APPLE打印机的共享名。
4)第四屏:此处当然要选择Apple了
5)第五屏:此处只有一个选择,正是我们需要的。
6)第六屏:已经OK了……

似乎一切都完成了,好象也不是很麻烦耶~~兴冲冲地打印测试页,可是,WINDOWS那边什么反应也没有。赶紧在控制下用lpr打印一个PS文件,还是不行!怎么回事呢?在我的机子上用WINDOWS试试,却没问题,可以正常打印。突然想起CUPS有LOG文件可以查看,cat /opt/cups-1.1.19/var/log/cups/error_log,最后几行说有一个什么foomatic-????失败,哦~原来还需要foomatic(后来才知道,这个postscript.ppd指定的),到linuxprinting.org下载一个,并将它安装到cups目录中。哈哈……这样就可以了。
由于OO/RO/SO需要调用lpr,再在/usr/bin中做个/opt/cups-1.1.9/bin/lpr的链接就成了。由于我的QT已经打了补丁,KDE也可以正常打印中文,其它的没试,对我来说,OO/RO/SO能打印就可以了。:-)
 楼主| 发表于 2003-12-1 10:16:52 | 显示全部楼层
乱写的……不要见笑……
 楼主| 发表于 2003-12-1 10:17:48 | 显示全部楼层

回复: 通过samba使用linux不支持的打印机

这个帖子发错了…………
发表于 2003-12-1 11:06:22 | 显示全部楼层
我好久没用printer了。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表