我正在尝试制作自己的网格(看起来非常像这样: http ://tinyurl.com/cdyre6k - 以毫米为公制单位的心电图纸)。
我正在使用 ReportLab/Python(开源)来制作这些报告。下面是我的代码片段。
在屏幕上,它看起来很棒!:
但是,当我将它发送到打印机时(是的,我还修改了打印机设置)它会打印一些线条,而不是其他线条(有时它是有条不紊的并打印图案式格子,有时它是更粗/更细的线条; 请记住,打印机的输出是一致的,具体取决于我设置的笔画宽度)。
我尝试了各种笔画宽度组合,以及各种打印机设置组合……我无法正确打印!我尝试了替代打印机并获得了更好的结果,但我必须将打印机设置设置为超过 1200 dpi(CAD 级打印)。另一台打印机设置为 600dpi。在同一台打印机(600dpi)上,我打印了一份由前同事制作的文档,打印效果很好(请注意,他没有使用 ReportLab,所以我不能使用他的代码/解决方案)。
到底是怎么回事?这是打印机的别名问题吗?如果我将网格转换为位图(或其他格式)会对我有帮助吗?我该如何解决这个问题(我唯一的选择是使用 Python 和 ReportLab)?ReportLab 手册没有帮助,“Google”没有帮助,以前的 StackExchange 问题似乎也没有涵盖这个特定主题。如果我将笔画宽度设置为“1”,我可以让网格打印所有线条,但是次要网格线太粗了。
最终结果是我正在处理的折线图,而且我知道 ReportLab 具有图表功能,但 reportlabs 图表/网格功能并没有给我项目所需的东西,所以我被迫制作我的自己的带有主要/次要行的网格(也许我错过了一些东西并且对替代技术持开放态度,但目前它在 PDF 形式中看起来很好,只是在打印机上没有)。
任何建议表示赞赏!
TIA,
-J
for i in decimal_range(0, _time, 1):
if (i % 5.0 == 0):
if (i % 25.0 == 0):
grid_pattern.add(shapes.Line(_temp_x,
(_temp_y + _height_of_box),
_temp_x,
(_temp_y + _height_of_box+4),
strokeWidth=1,
strokeColor=colors.black))
else:
pass
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
_temp_x += 1 * mm
_temp_x = xorigin
for i in range(0, _mv, 1):
if (i % 5.0 == 0):
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
_temp_y += 1 * mm
更新1
我尝试按照几张海报(以及 ReportLab 社区/邮件列表)的建议将笔画宽度设置为“0”,如下所示:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=0,
strokeColor=colors.pink))
这确实会生成一条像素宽的线,这在 PC 上看起来很棒,但在 PDF 中仍然打印出时髦的图案。
更新 2 + 解决方案
在与 ReportLab 和我的计算机发生了很多发脾气和争论之后,结果证明这不是我的 PC 或 ReportLab。是打印机(我使用的是两台完全不同的打印机佳能和惠普——尽管有型号)——我觉得我有足够的覆盖范围来排除打印机,但这个问题还有更多!继续阅读...
ReportLab 实际上并没有画线,它只是添加了一条后记线,告诉渲染器画线。
我最初调试的一部分包括更改我使用的颜色以查看这是否是一个问题 - 好吧 - 我将颜色从粉红色更改为红色(我知道变化不大,但我再次假设我将其更改为排除颜色问题)。
好吧,我最近痛苦地了解到,打印机使用公式将颜色转换为灰度,并且该公式倾向于产生抗锯齿副作用(就像我所看到的那样)。
解决方案:是改变网格的颜色。某些颜色比其他颜色表现更好。因此,为了测试这一点,我编写了一个简单的脚本,您可以在此处下载该脚本,该脚本将使用 reportlabs 颜色字典中存储的所有颜色生成 PDF 文档 - 打印导致我出现问题的示例网格并提供 RGB 值。事实证明,所有类型的颜色在多台打印机(都不同)上打印效果不佳 - 不仅仅是红色/粉红色......一些“红色”颜色打印良好,一些打印机处理灰度转换比另一个更好.
所以现在,我们的任务是使用我创建的这个 PDF 文档来找到一种在打印(彩色和灰度)和屏幕上看起来都很好的颜色。
如果您因为害怕我是邪恶的而不想下载脚本 - 至少查看 PDF 并打印您自己的示例,看看您是否可以重现我遇到的问题(我以 600dpi 打印 - 标准 - 没什么特别的...记住,如果我调高 DPI/质量设置,它打印得很好,但标准设置让我很伤心!)。
或者