使用 Reportlab 在将图像添加到 PDF 后旋转图像
Rotating an image after being added in a PDF using Reportlab
我正在尝试创建一个包含将要旋转的图像的 PDF 文档。
我可以成功创建 PDF 文档、添加图像并保存它,但是当我尝试旋转它时,我遇到了很多问题。
我想了解的一件事是旋转轴在哪里,它是在 0,0(PDF 的左下角)还是其他地方?
这是我当前的 运行 代码:
output = BytesIO()
# create a new PDF with Reportlab
c = canvas.Canvas(output)
c.saveState()
c.translate(X?, Y?) # TODO find this !
c.rotate(45)
c.drawImage('path/to/image.png', position_left, position_top, width=img_width, height=img_height, mask='auto')
c.restoreState()
c.save()
(因为 PDF 文档 (0,0) 点在右下角,所以我有 position_left
和 position_top
指的是文档的左上角点,我想把图片).
我的问题是我不知道如何在 c.translate(X?, Y?)
上设置什么值才能使图像绕其中心轴旋转,即保持在文档上的相同位置,但会自行旋转从它的中心点。
使用 c.translate(X?, Y?)
是否可行,或者我是否需要使用高级机制来旋转 "just" PDF 文档中的图像?如果是这样,你能指出我正确的轨道吗?
感谢您的帮助。
您可以使用下面 SO 线程中提到的技术
from reportlab.platypus.flowables import Image
class RotatedImage(Image):
def wrap(self,availWidth,availHeight):
h, w = Image.wrap(self,availHeight,availWidth)
return w, h
def draw(self):
self.canv.rotate(90)
Image.draw(self)
I = RotatedImage('../images/somelogo.gif')
我正在尝试创建一个包含将要旋转的图像的 PDF 文档。 我可以成功创建 PDF 文档、添加图像并保存它,但是当我尝试旋转它时,我遇到了很多问题。
我想了解的一件事是旋转轴在哪里,它是在 0,0(PDF 的左下角)还是其他地方?
这是我当前的 运行 代码:
output = BytesIO()
# create a new PDF with Reportlab
c = canvas.Canvas(output)
c.saveState()
c.translate(X?, Y?) # TODO find this !
c.rotate(45)
c.drawImage('path/to/image.png', position_left, position_top, width=img_width, height=img_height, mask='auto')
c.restoreState()
c.save()
(因为 PDF 文档 (0,0) 点在右下角,所以我有 position_left
和 position_top
指的是文档的左上角点,我想把图片).
我的问题是我不知道如何在 c.translate(X?, Y?)
上设置什么值才能使图像绕其中心轴旋转,即保持在文档上的相同位置,但会自行旋转从它的中心点。
使用 c.translate(X?, Y?)
是否可行,或者我是否需要使用高级机制来旋转 "just" PDF 文档中的图像?如果是这样,你能指出我正确的轨道吗?
感谢您的帮助。
您可以使用下面 SO 线程中提到的技术
from reportlab.platypus.flowables import Image
class RotatedImage(Image):
def wrap(self,availWidth,availHeight):
h, w = Image.wrap(self,availHeight,availWidth)
return w, h
def draw(self):
self.canv.rotate(90)
Image.draw(self)
I = RotatedImage('../images/somelogo.gif')