Python打印服务器
我正在寻找一个解决方案,想要创建一个打印服务器,让Windows用户可以打印,并把他们打印的内容格式化成XML。
我找到了这个Python脚本:http://newcenturycomputers.net/projects/rawprintserver.html(在右侧下载;竖着)。安装并测试后,似乎能够接收到打印任务。但是,每次我尝试打印时,它都会记录“错误:lpr返回100”,然后就退出了。
这是完整的日志:
[2011/11/08 11:51:51] Raw Print Server Startup: PID = 16998
[2011/11/08 11:51:51] Starting Printer <dotmatrix> on port 9100
[2011/11/08 11:51:51] Starting Printer <dotmatrix> on port 9101
[2011/11/08 11:52:01] Receiving Job from ('192.168.1.19', 49448) for Printer <dotmatrix> (Spool File RawPrintJob00001.prn)
[2011/11/08 11:52:01] Printer <dotmatrix>: Printing Job RawPrintJob00001.prn
[2011/11/08 11:52:01] Error: lpr returns 100
我严格按照说明书操作,所以打印任务存放在/var/tmp,而不是cups的打印任务文件夹,如果这有影响的话。
我在任何文件中都没有看到这个错误,搜索Python错误代码100也没有帮助。
也许有人能告诉我这个错误是什么意思……或者,也许有位Python高手能简单看一下代码(不多,大约6个文件,每个文件大约100行),告诉我在哪里可以获取输出/什么的,这样我就可以开始学习如何在Python中处理XML了 :)
似乎没有留下任何prn文件。其实,我只需要从打印任务中生成一个文本文件,之后我可以对其进行修改。不过,如果能有更优雅的解决方案就更好了(比如在写入文件之前修改流/任务的方式)。
谢谢。
1 个回答
0
spooler.py
文件里有一段代码:
class printer(base_printer):
def sendjob(self, fp, title = None):
# title is irrelevant here
out = os.popen("lpr -P'%s' >/dev/null 2>&1" \
% self.printer_name, "wb")
blk = fp.read(8192)
while blk:
out.write(blk)
blk = fp.read(8192)
rc = out.close()
if rc is not None:
print "Error: lpr returns %02x" % rc
这个脚本使用了 popen()
函数来启动一个 lpr
任务。你遇到的错误可能是因为 lpr
的设置不对。你可以试着在命令行里直接输入一样的命令,看看能不能正常工作。