我正在使用ReportLab
来生成PDF报告,以下是该报告的代码。问题是,对于X的页面数,它需要T时间,但是对于2X的页面,它所需要的时间远远超过2T。由于我需要生成最多35000页的PDF,因此非常麻烦。我该怎么做才能绕开这个问题。
from reportlab.platypus import TableStyle, SimpleDocTemplate, LongTable, Table
from reportlab.lib.pagesizes import letter
class JournalPDFGenerator(object):
"""
Generates Journal PDF with ReportLab
"""
def __init__(self, pdf_name, profile_report_id):
self.pdf_name = pdf_name
self.profile_report_id = profile_report_id
self.profile_report = ProfileWatchReport.objects.get(id=self.profile_report_id)
self.document = SimpleDocTemplate(self.pdf_name, pagesize=letter)
self.story = []
def get_prepared_rows(self):
row = [your_mark_details, threat_mark_details]
yield row
def generate_pdf(self):
report_table = LongTable([row for row in self.get_prepared_rows()])
self.story.append(report_table)
self.document.build(self.story)
答案 0 :(得分:0)
35k页面并不是PDF的主流使用,因此任何故障都不是完全意外的。探索一些想法:
LongTable
不同且长度相同的数据结构,以检查问题是否与该特定结构有关;如果是;您也许可以找到其他选择。答案 1 :(得分:0)
我花了很多时间来查找上述问题的原因。您可以尝试使用为处理大数据而优化的BigDataTable类来代替LongTable。
GIST BigDataTable faster LongTable on the big data
经过6500行和7列测试: