WeasyPrint не вставляет изображения из Jinja2 для отчета в формате PDF - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь создать отчет из фрейма данных pandas, используя Jinja2 и Weasyprint.Я столкнулся с проблемой, когда WeasyPrint неправильно отображает изображения.Изображения статичны и загружены в папку.

Я работал с xhtml2pdf.Это решение работало и создавало отчет, который я хотел.Но стиль был не таким точным, как WeasyPrint.Поэтому я хотел бы перейти к использованию WeasyPrint.

import pandas as pd
from datetime import date
import jinja2, os
#from xhtml2pdf import pisa
from weasyprint import HTML
import matplotlib.pyplot as plt
    t.plot.pie(figsize=(5, 5), label="", rot=90, legend=True)
    extensionPieChart = f"{imagesFolder}\\extensionPieChart.png"
    plt.savefig(extensionPieChart)
    t = t.reset_index()
    html = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath='')). \
            get_template(f'html_template.html'). \
            render(
                date=date.today().strftime('%d, %b %Y'),
                df=dfTemp.head(), 
                name = user,
                pie_chart = extensionPieChart,
                totals = t,
                companyImage = companyImage)
    print('Converting HTML to PDF')
    HTML(string=html).write_pdf(f'{reportsFolder}\\{user} Report.pdf')

Вот HTML-код из моего HTML-шаблона

<td style="text-align:right"><img src="{{ pie_chart }}">

Когда я смотрю на код, сгенерированный Jinja2путь к файлу указан правильно:

<td style="text-align:right"><img src="C:\Users\jg757fe\Desktop\Reports - Copy\Images\extensionPieChart.png">

Я ожидаю, что изображение появится, но оно не будет вставлено в PDF.Любая помощь будет оценена

1 Ответ

0 голосов
/ 27 июня 2019

Все, что мне нужно сделать, это добавить file:\\ к моему HTML-шаблону:

Оригинально (не работает)

<td style="text-align:right"><img src="{{ pie_chart }}">

Работает

<td style="text-align:right"><img src="file:\\{{ pie_chart }}

Простое решениено не самое очевидное

...