Как распечатать большой счет-фактуру PDF из HTML-шаблона с автоматическим разрывом страниц?

С меньшим количеством продуктов Если предметов меньше - отлично работает с бумагой формата а5
С большим количеством продуктов Когда предметов больше - пустое пространство справа складывается
Продолжает ухудшаться Когда список продуктов большой

С table {-pdf-keep-in-frame-mode: overflow;} усечения данных усечение данных с переполнением

Я использую библиотеку XHTML2PDF в Django Python, я попробовал:

  • @frame работает, но обрезает содержимое даже при {-pdf-keep-in-frame-mode: shrink;}
  • не могу использовать: pdf:nextpage тег
  • p { margin: 0; -pdf-keep-with-next: true; } и положить данные таблицы в пункте

    Что я хочу это:
    При увеличении размера товаров, если они падают со страницы, страница автоматически разрывается, а остальные товары печатаются на следующей странице.
    Примечание: я использую один HTML-шаблон

    Я не могу использовать pdf:nextpage как:

  • Название продукта (размер) сильно различается, поэтому не может разбить страницу после 5 или 10 элементов, и я должен использовать только HTML-шаблон, не могу использовать теги reportlab.

    HTML:

<html>
Not actual HTML code, but looks like
<style>
@page {
            size: a5 portrait;
            margin-top: 0;
            margin-bottom: 0;
        }
table {    -pdf-keep-in-frame-mode: shrink;}
<style>
<body>
<table><tbody><tr><th> ---------- Removing this line, everything works fine!

{% for data in products %}
<table><tr><td>{{data.product_name}}<table><tr><td>
    <tr><td>{{data.mrp}}<table><tr><td>
    <tr><td>{{data.selling_price}}<table><tr><td></table>
{% endfor %}
</body>
</html>

</th></tr></tbody></table> ----------- and corresponding closing tags

Некоторые фиктивные данные:

products_list = [
            {'product_name': 'Amul Cow Milk , 500ml', 'mrp': 20.0, 'selling_price': 20.0},
            {'product_name': 'Amul Cow Milk , 500ml', 'mrp': 20.0, 'selling_price': 20.0},
            {'product_name': 'Amul Cow Milk , 500ml', 'mrp': 20.0, 'selling_price': 20.0},]


Python Django API выглядит так:

    # Render HTML to PDF
    context_dic = {"products": products_list}
    template = get_template("invoice.html")
    html = template.render(context_dic)
    response = HttpResponse(content_type='application/pdf')
    pisa_status = pisa.CreatePDF(html, dest=response)
    if pisa_status.err:
        return "render-error"
    return response

0 ответов

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