Значение исключения: недопустимый тип для текста аргумента

Я пытаюсь получить параграф с 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

1 ответ

Причина, по которой вы получаете эту ошибку, заключается в том, что вы путаете синтаксис. 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, в которой подробно объясняется его использование и преимущества.

Другие вопросы по тегам