如何提高ReportLab图像质量?

时间:2012-01-17 11:35:13

标签: python reportlab

我正在建造一个标签打印机。它由一个标志和一些文字组成,而不是很难。我已经花了3天的时间尝试将原始SVG徽标绘制到屏幕上,但SVG太复杂,使用了太多的渐变等。

所以我有一个高质量的位图徽标(作为JPG或PNG),我在ReportLab画布上绘制它。有问题的图像远大于85 * 123px。我这样做希望ReportLab会嵌入整个内容并相应地进行扩展。以下是我的表现:

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

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

ReportLab是否有任何画布或文档的DPI命令,因此我可以保持质量理智?

3 个答案:

答案 0 :(得分:8)

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

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

这就是我如何计算像素的大小以制作光栅图像,以便在给定的物理尺寸下打印得很好:

假设我希望图片宽2英寸,一英寸有72个点,所以我的代码宽度为144.我知道打印出来的清晰分辨率是300dpi(每英寸点数)所以光栅图像以600px宽保存。

答案 1 :(得分:1)

在撰写问题时我想到的一个选项是:增加PDF的大小,让打印机排序。

如果我将我的所有数字乘以5并且打印机确实能够解决问题,那么我已接近350DPI ......但我做了一个很大的假设。

答案 2 :(得分:0)

我不知道它是否对所有人都适用,但就我而言,确实如此。

我只需要在顶部添加徽标,所以我使用了drawImage()

但将徽标的大小缩小了

c.drawImage(company_logo,225,750,width=(483/3),height=(122/3))

我以前必须知道公司徽标的真实大小,以免失真。

希望对您有所帮助!