无法在python reportlab软件包中实现减少条形码宽度的问题

时间:2019-05-23 15:30:01

标签: python barcode reportlab

缩小条宽或BWR是一种用于调整条形码的图形设计文件以补偿印刷机增益的方法。印刷增益或墨水扩散是条形码性能不佳的最常见原因之一。

我们已经成功实现了reportlab模块,可以将code128和i2of5条码放在我们的PDF上,它们可以很好地进行打印和扫描(该模块非常适合所有PDF!)。问题在于,对于我们的某些工厂而言,他们需要更多的压条宽度减小以补偿印刷机带来的额外收益,而我似乎无法正确实现这种行为。

我已经使用了从github上的reportlab代码中可以找到的许多属性-https://github.com/MatthewWilkes/reportlab/blob/master/src/reportlab/graphics/barcode/common.py-包括barWidth,Width,Gap,Ratio,并且似乎没有一个属性会改变bar宽度的减小。我测量一下。

我正在使用称为Pilot的ESKO软件来测量PDF上生成的条形码,该软件可让您在PDF上的条形码周围画一个方框,它会告诉您代码是否可以正确读取以及条形码的宽度值减少。

以下是页面上我们正在使用的条形码之一的示例代码。

from reportlab.graphics import barcode
from reportlab.lib.units import inch, pica
from reportlab.lib.colors import CMYKColor

code = 12345678
black_color = CMYKColor(0,0,0,1.0)
bcode_draw = barcode.createBarcodeDrawing('Code128',
                          barFillColor = black_color,
                          barStrokeColor = black_color,
                          textColor = black_color,
                          width=3.644 * inch,
                          height=1.214 * inch,
                          quiet=False,
                          barWidth=0.0085 * inch,
                          value="0" + str(code))

bcode_draw.translate(x * pica, y * pica)
self.drawing.add(bcode_draw)

结果是相同的条形码,具有相同的barWidth减少属性(-.04),无论我尝试操作什么值,我们都试图将其设为正数.0075。

我研究了一个名为TreePoem(https://github.com/adamchainz/treepoem/blob/master/treepoem/data.py)的模块,该模块具有一个名为“ inkspread”的属性,该属性可以满足我的要求,但是我无法获取那些文件以将EPS文件转换为SVG文件,例如InkScape之类的东西只是将PNG包装在svg标记中,因此它实际上不是SVG。同样,并不是所有的条形码都扫描得很好,所以我放弃了,并加倍努力让reportlab来做我想做的事!

任何建议将不胜感激。即使推荐使用其他模块(或者有人可以比我更好地将EPS转换为SVG)。我需要一个可以与reportlab一起实现并且可自动化的python解决方案。

0 个答案:

没有答案