使用 Reportlab 将图像添加到 PDF 后旋转图像

问题描述 投票:0回答:1

我正在尝试创建一个带有将旋转的图像的 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?)
是否有效,或者我是否需要使用高级机制来“仅”旋转 PDF 文档上的图像?

image pdf rotation pdf-generation reportlab
1个回答
1
投票

您可以使用下面SO线程中提到的技术

reportlab中旋转图像的简单方法

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')
© www.soinside.com 2019 - 2024. All rights reserved.