2016-07-16 5 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

Причина, по которой вы получаете эту ошибку, заключается в том, что вы смешиваете синтаксис. Paragraph используется в Platypus, а drawCentredString - это основная операция с холстом.

Синтаксис drawCentredString является canvas.drawCentredString(x, y, text), который ожидает, что вы кормить его текст как string, поэтому не Paragraph объекта.

Синтаксис Paragraph отличается, он должен выглядеть следующим образом:

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

Так после мы делаем этот пункт, мы говорим это, сколько места можно использовать с помощью wrapOn. И после этого мы используем drawOn, чтобы нарисовать его на холсте.

Но, делая это, упоминание о любимом использует только небольшую часть силы Platypus (и, следовательно, Paragraph). Он может использоваться для обработки полного потока вашего документа, а не только одного Paragraph, поэтому вы можете проверить главу 5 статьи Reportlab Userguide, которая объясняет ее использование и преимущества в ясной форме.

 Смежные вопросы

  • Нет связанных вопросов^_^