2016-07-16 6 views
0

reportlabの段落を取得しようとしていますが、動作させることができません。例外値:引数テキストの型が無効です

このコードは正常に動作します:

p.setFont('Helvetica',8) 
labo = str('CANCIÓN').decode('utf-8') 
p.setFillColor(HexColor('#ff8100')) 
p.drawString(350,736, labo) 

しかし、このコードはしていません:

styles = getSampleStyleSheet() 
labo = Paragraph("Generating Reports with Python", styles["Heading1"]) 
p.drawCentredString(400,600, labo) 

それは返します:私は間違って何をやっている

Exception Value: invalid type for argument text 

私はすべての必要なモジュールをインポートしたと思います。

#!/usr/bin/python 
# -*- encoding: utf-8 -*- 

from reportlab.pdfgen import canvas 
from django.http import HttpResponse 
from reportlab.lib.pagesizes import letter 
from reportlab.lib.colors import HexColor 
from reportlab.lib.utils import ImageReader 

from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.platypus import Paragraph 

import os 
from io import BytesIO 
import PIL.Image 

from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.ttfonts import TTFont 

答えて

0

このエラーが発生する理由は、構文が混ざっているためです。 ParagraphPlatypusで使用され、drawCentredStringは基本キャンバス操作です。 drawCentredStringため

構文はそうではないParagraphオブジェクト、あなたがstringとしてそれをテキストを養うことを期待canvas.drawCentredString(x, y, text)です。

Paragraphの構文が異なっているが、このように見えるようになっている:

p = Paragraph("Generating Reports with Python", styles["Heading1"])   
p.wrapOn(canvas, 200, 400) 
p.drawOn(canvas, 400, 600) 

は、だから我々は、段落を行った後、我々はそれがwrapOnを使用してどのくらいのスペースを使用することができ、それを伝えます。その後、キャンバスに描画するにはdrawOnを使用します。

しかし、それを行う方法は、Platypus(したがってParagraph)の力の本当に小さな部分だけを使用しています。 Paragraphという単一のドキュメントではなく、ドキュメントのフローを処理するために使用することができるため、Reportlab Userguideの第5章を参照して、使い方と利点を明確に説明してください。

関連する問題