如何使用python pdfkit基于html创建多页pdf

问题描述 投票:0回答:1

我正在尝试在 Django 项目中使用 pdfkit 库使用 python 创建 pdf,并且我想将每个内容分隔在不同的页面中,我该怎么做

import pdfkit
from django.template.loader import render_to_string

my_contents = [
    {'title':'Example 1', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 2', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 3', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 4', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 5', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']}
]

final_html = ''
for content in my_contents:
    data = {
        'title': content['title'],
        'contents': content['contents'],
    }
    final_html += render_to_string(
        'pdfs/routines_handout.html', data)

my_pdf = pdfkit.from_string(final_html, 'out.pdf')
python html django pdf-generation python-pdfkit
1个回答
0
投票

找到了!!如果我在页面的每一端添加 style='page-break-after' ,下一个将在另一页中

<div style='page-break-after: always;'></div>

我的最终固定代码是:

import pdfkit
from django.template.loader import render_to_string

my_contents = [
    {'title':'Example 1', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 2', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 3', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 4', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']},
    {'title':'Example 5', 'contents': ['Lorem ipsum dorer', 'Lorem ipsum']}
]

cont = 0
final_html = ''
total_length = len(my_contents)
for content in my_contents:
    cont += 1
    data = {
        'title': content['title'],
        'contents': content['contents'],
    }

    final_html += render_to_string(
        'pdfs/routines_handout.html', data)
    if not cont == total_length:
        final_html += "<div style='page-break-after: always;'></div>"

my_pdf = pdfkit.from_string(final_html, 'out.pdf')
© www.soinside.com 2019 - 2024. All rights reserved.