Как распечатать большой счет-фактуру PDF из HTML-шаблона с автоматическим разрывом страниц?
С меньшим количеством продуктов
С большим количеством продуктов
Продолжает ухудшаться
С 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