【发布时间】:2019-08-04 03:43:45
【问题描述】:
我正在使用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)
【问题讨论】:
-
您是否进行了一些测量以查看代码中发生阻塞的位置?
-
是的,self.document.build(self.story) 占用了 99% 的全部时间
标签: python django pdf-generation reportlab platypus