Don*_*Don 8 django pdf-generation html-table pisa xhtml2pdf
我正在使用Pisa将HTML转换为PDF(在Django项目中).处理跨越多个页面的表时,它非常慢:
一个200行的表需要150秒才能转换,而如果我把它分成更小的表需要15秒.
是否有建议由比萨处理的HTML表的提示或最佳实践?
我有同样的问题.该文件只是一个头版和一张巨大的桌子.PDF渲染时间随着我的内容表的大小呈指数级增长.
我制作了一份清单,列出了哪些可能是问题所在
我在PDF渲染功能上做了简单的计时(因为它可能是HTML渲染,将其传递给StringIO,或者创建HTTP响应),并注意到pisa.pisaDocument调用确实需要60秒才能返回.我做了一个可能是问题的清单,并对每个问题进行了研究.清单包括图像,CSS,标记复杂性和帧.
图像几乎不影响渲染时间(我每页只有一个,所以YMMV).Frames也没有.
标记复杂性是我的模板的主要问题.显然,pisa会非常非常缓慢地在表格中呈现几列
该表花费了太多时间来渲染,但我注意到如果我将表拆分成较小的表,渲染时间不再呈指数级增长,并且渲染所有内容所花费的时间减少了一半.我在Django模板中使用了以下代码:
{% if forloop.counter|divisibleby:20 %}</table><table>{% endif %}
Run Code Online (Sandbox Code Playgroud)
编辑:此修复程序不能很好地重复表头,所以如果你正在做,repeat="1"
你必须确切知道每页中适合的行数.
另外,我在CSS中有一个选择器的怪物:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video{
...
}
Run Code Online (Sandbox Code Playgroud)
通过将其更改为* {...}
渲染速度加快了一点.这是违反直觉的,因为当您使用*
选择器时,浏览器不会像使用上述怪物时那样快速渲染页面.
此外,由于某种原因,将两个页内<style>
标签合并到一个标签中也减少了渲染时间.
归档时间: |
|
查看次数: |
1994 次 |
最近记录: |