我想使用Elaphe
生成条形码。
我正在使用64位Windows机器。这是在Windows 7,Python 2.7上,我安装了Elaphe 0.6.0
和Ghostscript 9.10
。
当我运行简单的示例用法时,似乎没有发生任何事情。条形码不会显示。当我执行_.show()
时,它会挂起但没有任何显示。我必须做KeyboardInterrupt
才能回到提示符。当我_.show()
时,应该启动什么样的观众?但是,我在Windows任务管理器中看到了gswin32.exe
进程。
请参阅http://dpaste.com/hold/1653582/
上的我的Python追溯有没有办法看到生成的PS代码?我该如何排除故障?
请帮忙。
答案 0 :(得分:2)
elaphe.barcode
返回的对象是EpsImageFile
(其中EPS表示Encapsulated PostScript),但在调用barcode
后,它还没有运行Ghostscript将代码转换为位图图像。
您可以通过查看fp
属性来转储其生成的代码 - 其中包含很多内容,因为它为其支持的所有不同条形码类型嵌入了完整的PS库代码。因此,最好将其写入文件:
b = el.barcode('qr', 'slamacow')
with open('code.eps') as outfile:
outfile.write(b.fp.getvalue()) # fp is a StringIO instance
在文件中,您会看到以下内容:
%!PS-Adobe-2.0
%%Pages: (attend)
%%Creator: Elaphe powered by barcode.ps
%%BoundingBox: 0 0 42 42
%%LanguageLevel: 2
%%EndComments
% --BEGIN RESOURCE preamble--
... A whole lot of included library ...
% --END ENCODER hibccodablockf--
gsave
0 0 moveto
1.000000 1.000000 scale
<74686973206973206d792064617461>
<>
/qrcode /uk.co.terryburton.bwipp findresource exec
grestore
showpage
如果你想看看PIL或枕头是如何运行Ghostscript所以你可以在命令行自己尝试,PIL /枕头代码的关键部分就是这个(来自site-packages/PIL/EpsImagePlugin.py
,第84行):
# Build ghostscript command
command = ["gs",
"-q", # quiet mode
"-g%dx%d" % size, # set output geometry (pixels)
"-r%d" % (72*scale), # set input DPI (dots per inch)
"-dNOPAUSE -dSAFER", # don't pause between pages, safe mode
"-sDEVICE=ppmraw", # ppm driver
"-sOutputFile=%s" % outfile, # output file
"-c", "%d %d translate" % (-bbox[0], -bbox[1]),
# adjust for image origin
"-f", infile, # input file
]
但在Windows上,gs
命令将替换为可执行文件的路径。