Z在此 2021-08-24 22:03 采纳率: 87.5%
浏览 626
已结题

请问Python的reportlab制作pdf时,如何让插入的图片适应pdf的大小,否则会报错。

如下,我通过ps查到了reportlab制作的pdf(只有文字)的宽高

img

因此我取一个大概的值,用skimage处理图片,宽高大于这个值则将图片按比例缩小

from skimage import transform, io
from reportlab.platypus import Image

#  a是每做完一张图片后就加1的数字,以此避免重名
img1 = io.imread(f'{a}.png')
#  img1.shape[1] 是图片的宽, img1.shape[0] 是图片的高
if img1.shape[1] > 1800 or img1.shape[0] > 2500:
    new_img = transform.rescale(img1, 1800 / img1.shape[1])
    if img1.shape[0] * (1800 / img1.shape[1]) > 2500:
        new_img = transform.rescale(img1, 2500 / img1.shape[0])
    io.imsave(f'{a}.png', new_img)
else:
    io.imsave(f'{a}.png', img1)
# 几次会提示 Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.

img_file = Image(f'{a}.png')

但最后还是会报错:
reportlab.platypus.doctemplate.LayoutError: Flowable <Image at 0x19bba608 frame=normal filename=0.png> too large on page 2 in frame 'normal'(439.27559055118115 x 685.8897637795277*) of template 'Later'

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月1日
    • 修改了问题 8月24日
    • 创建了问题 8月24日

    悬赏问题

    • ¥15 乌班图ip地址配置及远程SSH
    • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
    • ¥15 PSPICE制作一个加法器
    • ¥15 javaweb项目无法正常跳转
    • ¥15 VMBox虚拟机无法访问
    • ¥15 skd显示找不到头文件
    • ¥15 机器视觉中图片中长度与真实长度的关系
    • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
    • ¥15 java 的protected权限 ,问题在注释里
    • ¥15 这个是哪里有问题啊?