0

我正在尝试将 python 数据框转换为 HTML,然后使用 Jinja2 和 wkhtmltopdf 转换为 pdf。尽管我能够成功地将数据转换为 pdf,但这些列正在从 PDF 中删除。由于输出表可以是动态的,因此我无法控制列数。

我还可以使用 CSS 添加水平滚动条,但滚动条不起作用。使用调试器验证我们至少获得了包含 HTML 中所有列的整个数据。

蟒蛇代码:

    @app.route('/', methods=("POST", "GET"))
def html_table():
    kitoptions = {
        "enable-local-file-access": None,
        "dpi": 400
    }

    rendered = render_template('test.html', tables=[df.to_html(classes='data', columns=df.columns, header="true", index=False)])

    pdf = pdfkit.from_string(rendered, False, configuration=config, options=kitoptions)

    response = make_response(pdf)
    response.headers['Content-Type'] = 'application/pdf'
    response.headers['Content-Disposition'] = 'inline';

    return response


if __name__ == '__main__':
    app.run(debug=True) 

Jina2 代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>PDF-SERVICE</title>
    <link rel="stylesheet" href="H:/git/pdf-service/jinja/static/css/test.css">
</head>

<body>
<div class="wrapper">
    <table>
        <thead>
            {%- for column in columns %}
            <th>{{ column }}</th>
            {%- endfor %}
        </thead>

        <tbody>
            {%- for table in tables %}
            <tr>
                {{ table|safe }}
            </tr>
            {%- endfor %}
        </tbody>
    </table>
</div>
</body>
</html>

CSS 代码:

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    background-color: red;
    display: block;
    white-space: nowrap;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

.wrapper { overflow-x: auto; width: 100%; }

tr{
    background-color: grey;
    overflow-x: auto; width: 100%;
}

在此处输入图像描述

任何帮助,将不胜感激。谢谢

4

0 回答 0