2012-01-17 113 views
5

我正在构建标签打印机。它由一个标志和一些文字组成,并不难。我已经花了3天的时间试图让原始SVG标志画到屏幕上,但SVG太复杂,使用太多的渐变等。如何提高ReportLab图像质量?

所以我有一个高质量的位图徽标(作为JPG或PNG)我正在ReportLab画布上绘制它。有问题的图像比85 * 123px大得多。我希望ReportLab能够嵌入整个事物并相应地扩展它。我是这样做的:

canvas.drawImage('logo.jpg', 22+xoffset, 460, 85, 123) 

问题是,我的假设是不正确的。它似乎将屏幕分辨率缩小到85 * 123像素,这意味着打印时看起来不太好。

ReportLab是否有任何用于画布或文档的DPI命令,以便我可以保持质量清晰?

回答

1

我在写问题时想到的一个选择是:增加PDF的大小并让打印机将事情排除。

如果我只是将所有数字乘以5并且打印机确实设法弄清楚了,我会接近350DPI ......但我做了一个相当的假设。

8

以前曾在ReportLab公司工作过,我可以告诉你,光栅图像在包含在PDF中时不会经历任何自动重采样/缩小。您使用的85 * 123尺寸不是像素,而是像毫米或英寸这样的物理单位的点(pt)。

我会建议使用不同质量的图像打印PDF以确认这一点,或者使用PDF查看器进行非常非常远的缩放。在PDF查看器中,它总是显得有些模糊,因为图像被重新采样两次(一次在成像软件中,然后再次转换为PDF查看器可用的像素)。

这是我将如何计算,以使像素什么规模的光栅图像为它在给定的物理尺寸的打印效果不好:

假设我要的照片为2英寸宽,也有72分一英寸,所以我的代码中的宽度应该是144.我知道打印时的清晰分辨率是300dpi(每英寸点数),因此光栅图像保存在600px宽。