ReportLab的图像显示在PDF画布上,有以下代码片段:
from reportlab.pdfgen import canvas
from reportlab.platypus import Image
pdf = canvas.Canvas(filename, bottomup=0)
logo_image = Image(
"%s/images/wsp_logo.jpg" % settings.STATIC_ROOT,
width=200,
height=200)
logo_image.drawOn(pdf, 100, 100)如何将它画成“正常”,就像人们期望看到的那样?
发布于 2012-08-03 06:44:30
使用canvas.scale函数翻转图像。
canvas.saveState()
canvas.translate(x, y)
canvas.scale(1,-1)
canvas.drawImage(img_path, 0, 0, width=-width, height=-height, mask='auto')
canvas.restoreState()发布于 2011-05-27 11:01:14
目前我无法进行测试,但这可能是因为您在创建bottomup = 0对象时使用了Canvas。默认情况是1。来自文档
自下而上的参数切换坐标系统。一些图形系统(如PDF和PostScript)将(0,0)放在页面的左下角,另一些(如许多图形用户界面GUI)将origen放在左上角。自下而上的参数被废弃,并可能在将来被删除。 需要看看它是否真的适用于所有的任务,如果没有,那么就把它处理掉。
考虑到该引语中的警告,我猜想将其设置为0是问题的根源。
发布于 2022-07-22 15:58:43
我认为如果你把问题的标题改为与实际问题一致,那就更合适了。
最近,我遇到了同样的问题,一个徽标无缘无故地出现了镜像,而另一个图像文件却没有以完全相同的代码镜像。我无法解释这个问题,但我不知道reportlab是如何使用PIL库的,也不知道后台在使用什么算法。我有一个带有非常奇怪的角度的徽标,所以它很可能试图在后台调试时镜像它,以假设原始图像是镜像的。
在没有自己实际镜像映像文件的情况下(为了允许reportlab重新镜像它),我用画布创建了这个黑客(并使用了drawImage),以使徽标显示为正常:
其中'c‘是我的画布变量:
c.saveState()
c.scale(1,-1)
c.drawImage(logo1, width=100, x=100, y=-100, preserveAspectRatio=True, mask='auto')
c.restoreState()我看到有人也提供了类似的答案。但是当你将画布缩放到(1,-1)时,我的回答可以增加这样的想法:你应该在图像上使用约为-100的y值,这样如果使用A4或字母页大小,就可以在画布上看到图像。
https://stackoverflow.com/questions/6136856
复制相似问题