image - 使用 Reportlab 在 PDF 中添加图像后旋转图像
问题描述
我正在尝试使用将旋转的图像创建 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 文档上的图像?如果是这样,你能指出我正确的轨道吗?
谢谢您的帮助。
解决方案
您可以使用下面 SO Thread 中提到的技术
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')
推荐阅读
- angular - 离子语音识别 - 运行时错误 Object(...) is not a function at hasPermission
- google-apps-script - 转到特定单元格的左上角
- c# - Azure Function Environment Variables
- sql - 如何针对两种不同的条件将日期从一个表插入另一个表
- c# - 如何在从大文件中读取对象时过滤 JSON 数组中的对象
- java - 使用 JPA、spring 和带有 pom.xml 依赖项的单元测试构建 Maven 项目最需要什么?
- visual-foxpro - FoxPro 特定后删除
- c# - 当使用嵌套的 LambdaExpressions 编译 LambdaExpression 时,它们也会编译吗?
- terraform - 尝试使用堆栈输出列表作为模块输出
- javascript - 在跨度之间插入字符串变量