我有一个图像路径和相应的坐标作为字典。例如: {'coords':[u'530,88,592,99'], 'filepath':1.jpg}, {'coords':[u'7,12,152,85'], 'filepath':2.jpg}, {'coords':[u'448,12,594,86'], 'filepath':3.jpg} 我想根据图像的相对坐标生成包含所有图像的单个PDF。我想,有可能使用reportlab,但没有最初的运气。 提前谢谢。
答案 0 :(得分:6)
您可以将reportlab
用于此目的。 drawImage
可以使用Pdf
进行图像绘制。
drawImage
个参数。
drawImage(image, x, y, width=None, height=None, mask=None, preserveAspectRatio=False, anchor='c')
示例程序:
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
c = canvas.Canvas("test.pdf")
# move the origin up and to the left
c.translate(inch,inch)
c.setFillColorRGB(1,0,1)
c.drawImage("image1.jpg", 10, 10, 50, 50)
c.drawImage("image2.jpg", 60, 60, 50, 50)
c.showPage()
c.save()
此程序应生成一个pdf test.pdf
,其中包含相应坐标中的两个图像。现在您可以解析coords
字典中的坐标和图像。
可让:强>
coords_dict = {'coords': [u'7,12,152,85'], 'filepath': 2.jpg}
然后你的dict drawImage
应该是
c.drawImage(
coords_dict["filepath"],
coords_dict["coords"][0],
coords_dict["coords"][1],
coords_dict["coords"][3]-coords_dict["coords"][0],
coords_dict["coords"][4]-coords_dict["coords"][2])
如需更多信息,请check
答案 1 :(得分:0)
Reportlab功能丰富且复杂。对于您的任务,它肯定会工作,但可能有其他选择。我建议您查看这些积极维护的项目之一:
PyFPDF(https://github.com/reingart/pyfpdf):
PyFPDF简单,小巧,功能多样,具有先进的功能和 易于学习,扩展和维护。
tutorial显示了如何向页面添加图片,它似乎就像self.image('logo_pb.png', 10, 8)
cairocffi(https://pythonhosted.org/cairocffi/):
cairocffi是基于CFFI的直接替代Pycairo,一套 用于cairo的Python绑定和面向对象的API。开罗是2D 支持多个后端的矢量图形库,包括 图像缓冲区,PNG,PostScript,PDF和SVG文件输出。
在那里,您似乎会创建一个cairocffi.PDFSurface()
,然后为所有图片创建ImageSurface()
,并将图像添加到PDF中。