【问题标题】:Reportlab + SimpleDocTemplate + Table - create QR code with text - multiple pagesReportlab + SimpleDocTemplate + 表格 - 创建带有文本的二维码 - 多页
【发布时间】:2016-10-05 09:03:25
【问题描述】:

我正在使用 Reportlab 创建一个可以跨多个页面的 pdf 文件,格式如下:

二维码+h1段落+2-3行文字

我们需要支持具有我上面描述的格式的动态数量的元素。

我正在考虑在 SimpleDocTemplate 中使用 Table,但找不到一种方法来支持可以跨越多个页面的动态元素数量。

您将如何应对这一挑战?

【问题讨论】:

  • 好久没用reportlab了,你查过PageTemplate了吗?
  • 不,它适合我的任务吗?
  • 使用PageTemplate,您将能够针对这种情况创建一个模板:二维码+h1段落+2-3行文本
  • 你有我可以用的sn-p吗?

标签: python barcode reportlab


【解决方案1】:

这个 sn-p 没有完全工作,但它可以帮助你,开始

class StandardReport:

def __init__(self,):
    self.doc = BaseDocTemplate(destinationPath , showBoundary = 0, leftMargin=0.7*cm, rightMargin=0.7*cm, topMargin=0.7*cm, bottomMargin=0.7*cm, pagesize=A4)
    self.simpleFrame = Frame(self.doc.leftMargin, self.doc.bottomMargin, self.doc.width, self.doc.height - 5*cm, id='normal')

def createPdf(self):
    templates = [];
    self.doc.totalPages = 0;

    self.fill_sample();
    templates.append(SamplePageTempalte(self));
    self.doc.totalPages = self.doc.totalPages + 1;

    self.doc.addPageTemplates(templates);
    self.doc.build(self.Elements)

class SamplePageTempalte (PageTemplate):
    def __init__ (self, context):
        self.context = context
        self.largeur = self.context.doc.pagesize[0]
        self.hauteur = self.context.doc.pagesize[1]
        self.simpleFrame = Frame( self.context.doc.leftMargin, self.context.doc.bottomMargin, self.context.doc.width, self.context.doc.height - 3*cm, id='normal')
        PageTemplate.__init__ (self, id="GraphStatPageTemplateMonth", frames = [self.simpleFrame], pagesize=A4, onPage = self.context.footerAndHeader)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2011-01-30
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多