Преобразование HTML в PDF с помощью Пизы - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь создать PDF, используя уже существующий HTML-шаблон DJANGO. Я передаю контекстные данные динамически в шаблон, а затем пытаюсь преобразовать его в PDF.

Однако я продолжаю работать с этим

файлом "C: \ Users \ EliteBook \ Desktop \ Virtual_Environment \ app \ lib \ site-packages \ reportlab \ platypus \ tables.py", строка 265, в init повысить ValueError (" Ошибка данных% s -% d строк в данных, но% d в высотах строк "% (self.identity (), nrows, len (rowHeights))) ValueError: with cell (0, 0) содержащий ошибку данных «size = x» - 16 строк данных, но 15 строк высотой

при выполнении этой строки кода ...

pdf= pisa.pisaDocument (BytesIO (html.encode ("cp1252", 'ignore')), result)

Я заглянул на форумы PISA и REPORTLAB, но, похоже, не нашел подходящего решения.

Ниже приведен код, который пытается создать PDF

def make_pdf(student):
    entry = Transaction.objects.filter(student=student)
    credits = entry.filter(t_type='C')
    debits = entry.filter(t_type='D')
    c_count = entry.filter(t_type='C').count()
    d_count = entry.filter(t_type='D').count()
    e_count = entry.count()
    name = student.name
    context = {
        'entries':entry,
        'student':student,
        'credits' : credits,
        'debits':debits,
        'c_count': c_count,
        'd_count': d_count,
        'e_count': e_count,
        'name':name
    }
    return render_to_pdf('payment/statement.html', context)

Функция render_to_pdf определена в другом файле следующим образом:

from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template

from xhtml2pdf import pisa

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    return None

Я удалил большую частьданные трассировки для устранения беспорядка, чтобы вы могли видеть фактическую ошибку при выполнении приведенной ниже строки кода

pdf = pisa.pisaDocument (BytesIO (html.encode ("ISO-8859-1", 'ignore')), результат)

Файл "C: \ Users \ EliteBook \ Desktop \ Virtual_Environment \ app \ lib\ site-packages \ reportlab \ platypus \ tables.py ", строка 265, в init повышение ValueError (« Ошибка данных% s -% d строк в данных, но% d в высотах строк »% (self. identity (), nrows, len (rowHeights))) ValueError: с ячейкой (0,0), содержащей ошибку данных «size = x» - 16 строк в данных, но 15 в высотах строк

эта ссылка показывает HTML-сайт, который я хочу преобразовать в pdf, я также прикрепил HTML-файл

...