我正在尝试将 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%;
}
任何帮助,将不胜感激。谢谢