我正在建造一个标签打印机。它由一个标志和一些文字组成,而不是很难。我已经花了3天的时间尝试将原始SVG徽标绘制到屏幕上,但SVG太复杂,使用了太多的渐变等。
所以我有一个高质量的位图徽标(作为JPG或PNG),我在ReportLab画布上绘制它。有问题的图像远大于85 * 123px。我这样做希望ReportLab会嵌入整个内容并相应地进行扩展。以下是我的表现:
canvas.drawImage('logo.jpg', 22+xoffset, 460, 85, 123)
问题是,我的假设不正确。它似乎在屏幕分辨率下缩小到85 * 123px,这意味着它在打印时看起来不太好。
ReportLab是否有任何画布或文档的DPI命令,因此我可以保持质量理智?
答案 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))
我以前必须知道公司徽标的真实大小,以免失真。
希望对您有所帮助!