//这使用simpledoctemplate来创建pdf。我无法将图像置于页面顶部。请给出解决方案
def report_creator():
styles = getSampleStyleSheet()
styleN = styles['Normal']
styleH = styles['Heading1']
elements = []
im = Image("C:\\Images\photo.jpg")
elements.append(im)
doc = SimpleDocTemplate("C:\\report_image.pdf", pagesize=letter)
doc.build(elements)
if __name__ == "__main__":
report_creator()
print "main"
答案 0 :(得分:1)
从源代码中,在绘制时,图片尝试获取_offs_x
,_offs_y
属性
def draw(self):
lazy = self._lazy
if lazy>=2: self._lazy = 1
self.canv.drawImage( self._img or self.filename,
getattr(self,'_offs_x',0),
getattr(self,'_offs_y',0),
self.drawWidth,
self.drawHeight,
mask=self._mask,
)
if lazy>=2:
self._img = self._file = None
self._lazy = lazy
要使用SimpleDocTemplate定位图像,您可以在将其添加到故事中之前覆盖Image对象的_offs_x
和_offs_y
属性。
im.__setattr__("_offs_x", 0)
im.__setattr__("_offs_y", 0)
答案 1 :(得分:0)
reportlab's
字母页面尺寸的宽度和高度为(612.0, 792.0)
。
因此,您可以通过划分((page's width/2) - (input image's width/2))
来获取输入图像的起始位置。
在这个例子中
page's width = 612.0
input image width = 100
因此输入图像的起始位置(x)将为:
>>> int((612.0/2) - (100/2))
256
注意: - 图像大小在drawInlineImage
的{{1}}方法中作为参数传递。
Canvas
生成的PDF看起来像这样: