Я пытаюсь создать 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-файл