Как сделать 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 документах здесь

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