- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在与报告实验室合作,我无法使用鸭嘴兽添加 png 图像这是来自此处的一些示例代码 http://www.tylerlesmann.com/2009/jan/28/writing-pdfs-python-adding-images/ , 附加那个 png 的错误
你能帮我让它工作吗?
#!/usr/bin/env python
import os
import urllib2
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Image
filename = './python-logo.png'
def get_python_image():
""" Get a python logo image for this example """
if not os.path.exists(filename):
response = urllib2.urlopen(
'http://www.python.org/community/logos/python-logo.png')
f = open(filename, 'w')
f.write(response.read())
f.close()
get_python_image()
doc = SimpleDocTemplate("image.pdf", pagesize=letter)
parts = []
parts.append(Image(filename))
doc.build(parts)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/media/Felipe/B1wt/<ipython-input-21-1c3c466b9184> in <module>()
22 parts = []
23 parts.append(Image(filename))
---> 24 doc.build(parts)
25
/usr/lib/python2.7/site-packages/reportlab/platypus/doctemplate.pyc in build(self, flowables, onFirstPage, onLaterPages, canvasmaker)
1115 if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
1116 self.pageTemplates[1].beforeDrawPage = self.onLaterPages
-> 1117 BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
1118
1119 def progressCB(typ, value):
/usr/lib/python2.7/site-packages/reportlab/platypus/doctemplate.pyc in build(self, flowables, filename, canvasmaker)
878 try:
879 first = flowables[0]
--> 880 self.handle_flowable(flowables)
881 handled += 1
882 except:
/usr/lib/python2.7/site-packages/reportlab/platypus/doctemplate.pyc in handle_flowable(self, flowables)
761 canv = self.canv
762 #try to fit it then draw it
--> 763 if frame.add(f, canv, trySplit=self.allowSplitting):
764 if not isinstance(f,FrameActionFlowable):
765 self._curPageFlowableCount += 1
/usr/lib/python2.7/site-packages/reportlab/platypus/frames.pyc in _add(self, flowable, canv, trySplit)
157 h = y - p - s
158 if h>0:
--> 159 w, h = flowable.wrap(aW, h)
160 else:
161 return 0
/usr/lib/python2.7/site-packages/reportlab/platypus/flowables.pyc in wrap(self, availWidth, availHeight)
406 def wrap(self, availWidth, availHeight):
407 #the caller may decide it does not fit.
--> 408 return self.drawWidth, self.drawHeight
409
410 def draw(self):
/usr/lib/python2.7/site-packages/reportlab/platypus/flowables.pyc in __getattr__(self, a)
400 return self._img
401 elif a in ('drawWidth','drawHeight','imageWidth','imageHeight'):
--> 402 self._setup_inner()
403 return self.__dict__[a]
404 raise AttributeError("<Image @ 0x%x>.%s" % (id(self),a))
/usr/lib/python2.7/site-packages/reportlab/platypus/flowables.pyc in _setup_inner(self)
366 height = self._height
367 kind = self._kind
--> 368 img = self._img
369 if img: self.imageWidth, self.imageHeight = img.getSize()
370 if self._lazy>=2: del self._img
/usr/lib/python2.7/site-packages/reportlab/platypus/flowables.pyc in __getattr__(self, a)
396 if a=='_img':
397 from reportlab.lib.utils import ImageReader #this may raise an error
--> 398 self._img = ImageReader(self._file)
399 del self._file
400 return self._img
/usr/lib/python2.7/site-packages/reportlab/lib/utils.pyc in __init__(self, fileName, ident)
539 self._transparent = None
540 self._data = None
--> 541 if _isPILImage(fileName):
542 self._image = fileName
543 self.fp = getattr(fileName,'fp',None)
/usr/lib/python2.7/site-packages/reportlab/lib/utils.pyc in _isPILImage(im)
519 def _isPILImage(im):
520 try:
--> 521 return isinstance(im,Image.Image)
522 except ImportError:
523 return 0
AttributeError: 'NoneType' object has no attribute 'Image'
最佳答案
你应该安装 PIL (Python Imaging Library) ,例如
pip install PIL
我猜测在导入 PIL 失败时,它正在设置 Image = None。如果 reportlab 源易于浏览,我会确认。
编辑:我们开始:
try:
import Image
if PIL_WARNINGS: warnOnce('Python Imaging Library not available as package; upgrade your installation!')
except ImportError, errMsg:
_checkImportError(errMsg)
Image = None
关于python - 如何使用 reportlab 将 png 添加到 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286502/
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
我正在使用 ReportLab VerticalBarChart 生成条形图。我需要其中一个条(每次都是不同的)与其他条的颜色不同,以指定它是“选择”值。 否则,我需要以与其他栏不同的方式标记它。 知
我正在使用 ReportLab 生成 PDF 报告。 我使用了 SimpleDocTemplate 并设置了 pageSize = A5。但是在构建PDF后,当我打开创建的文件时,页面大小为A4。 d
是否可以在段落样式中设置字母/字符间距?我尝试使用spaceShrinkage但这没有任何区别 最佳答案 根据official documentation ,p。 30: The setCharSpa
我的销售订单模板中有以下 rml: [[ repeatIn(o.order_line, 'l') ]] [[ l.name ]] [[
你好, 我正在使用报告实验室生成 pdf。我想绘制一个文本,它是一个 Paragraph,代表一个标题,因此,如果标题比段落的可用长度长,它将在下一行拆分,如果标题太长适合段落的可用宽度和高度,然后调
如何设置表格的左侧位置? response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = '
在报告实验室中 user guide (第 79 页),这是将图像插入表格的方式。 I = Image('../images/replogo.gif') I.drawHeight = 1.25*inc
reportlab文档中有LINEBELOW和LINEABOVE。但我找不到定义右边界或左边界(LINELEFT、LINERIGHT)的方法。 关于如何渲染只有右边框的单元格有什么建议吗? 编辑: 我
有什么方法可以在 reportlab 中获取 Flowable Paragraph 的行数?我有一个很长的字符串,用不同的大小和字体打印。我需要知道要使用 TA_JUSTIFY 对齐打印的整个段落使用
在文档和源代码中,我看到很多对圆角矩形的引用,但是,我似乎无法绘制一个。 我正在绘制一个普通的矩形: canvas.rect(15, 625, 250, 125, fill=0) 我向圆角传递哪些参数
我正在处理发票,我只想在最后一页(也可以是第一页)添加页脚。 由于表的数据是动态的,我无法计算页数。 现在我正在使用 2 个页面模板,第一页(带有 2 个框架和页脚 1)和下一页(带有 1 个框架和页
我知道 LINEABOVE 和 LINEBELOW 样式,我想知道是否有一种方法可以在表格中绘制一条指定宽度的线。 我正在尝试添加一条不“接触”表格边框的线,如果我可以在单元格之间添加一些填充,LIN
我快速浏览了一下网络,但未能找到一种在 Python 中使用 ReportLab 生成 PDF 时设置背景颜色的方法。如何设置背景颜色? 最佳答案 不要使用复杂的方法,而是使用这个简单的技巧: im
我想知道如何将我的脚本保存到桌面。这是我的代码: from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import let
您好,我是报告实验室的新手。我想生成一份包含表格的 pdf 报告。表格中的某些列文本大于列宽,现在我想根据列宽换行文本。 以下是我编写的代码 # Imports from reportlab.pdfg
我正在使用XPreformatted打印一些预格式化的文本,我有一个 换行符的问题。 换行符正确翻译,但另外我得到一个 每行末尾都有“问号”。 这是我的输出: first line? second l
我知道 LINEABOVE 和 LINEBELOW 样式,我想知道是否有一种方法可以在表格中绘制一条指定宽度的线。 我正在尝试添加一条不“接触”表格边框的线,如果我可以在单元格之间添加一些填充,LIN
我快速浏览了一下网络,但未能找到一种在 Python 中使用 ReportLab 生成 PDF 时设置背景颜色的方法。如何设置背景颜色? 最佳答案 不要使用复杂的方法,而是使用这个简单的技巧: im
我是一名优秀的程序员,十分优秀!