Как сделать PDF из определенной части HTML-файла в Django
Я хочу сгенерировать PDF из HTML в Django, используя Xhtml2pdf. Но xhtml2pdf, похоже, создает PDF-файл полного HTML-шаблона. Что я хочу сказать, так это предположить, что у меня есть боковое меню, верхний колонтитул, нижний колонтитул и таблица некоторого содержимого в моем html-файле. Теперь я хочу сгенерировать pdf этой таблицы только из файла html. Как я могу сделать это с помощью xhtml2pdf?
Спасибо.
1 ответ
Вы можете разделить файлы шаблонов для разных частей страницы. Например, у вас может быть базовый HTML-файл, содержащий общие шаблоны, а также table.html
который содержит данные, которые вы хотите преобразовать в PDF.
Ты можешь использовать include
встроенный шаблонный тег, чтобы использовать его в другом шаблоне: см. документацию здесь. Вы можете также проверить extends
TemplateTag, который очень удобен здесь.
Что-то вроде этого:
# base.html
{% include 'table.html' %}
# views.py
def render_to_pdf(request):
template_path = 'table.html' # Here is the template you want to convert
context = {'myvar': 'this is your template context'}
# Create a Django response object, and specify content_type as pdf
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="report.pdf"'
# find the template and render it.
template = get_template(template_path)
html = template.render(Context(context))
# create a pdf
pisaStatus = pisa.CreatePDF(
html, dest=response, link_callback=link_callback)
# if error then show some funy view
if pisaStatus.err:
return HttpResponse('We had some errors <pre>' + html + '</pre>')
return response
Вы можете увидеть создание PDF в xhtml2pdf документах здесь