【问题标题】:Center the page number in a footer using PyPDF使用 PyPDF 将页码居中在页脚中
【发布时间】:2019-04-11 08:46:22
【问题描述】:

我正在使用 PyPDF 创建格式化报告。我希望页码(例如第 1 页,共 3 页)位于页脚的中心,这与 PyPDF 教程的显示方式非常相似。 Here's the tutorial I'm referencing.

下面是我在footer方法中的代码:

def footer(self):
    genDateTime = "Report generated on: " + datetime.datetime.now().strftime('%m/%d/%Y %I:%M:%S %p')
    page = 'Page ' + str(self.page_no()) + '/{nb}'

    self.set_y(-10)
    self.set_font('Arial', '', 9)

    self.cell(0, 5, "Clinical Report: Confidential", 0, 0, 'L')
    self.cell(0, 5, page, 0, 0, 'C')
    self.cell(0, 5, genDateTime, 0, 0, 'R')

这是页面底部的截图。如您所见,Confidential 和 DateTime 标签按预期显示,但 Page # 标签是右对齐的:

感谢您的帮助。

【问题讨论】:

    标签: python pdf pypdf


    【解决方案1】:

    我认为问题在于您如何设置单元格宽度。 PyPDF 默认按顺序放置单元格,从先前放置的单元格的最右侧开始。当您调用self.cell() 时,第一个参数是宽度——默认情况下,如果宽度为 0,它会使宽度扩展到页面的最右侧。因此,当您放置self.cell(0, 5, "Clinical Report: Confidential", 0, 0, 'L') 时,该文本框一直延伸到页面右侧。然后,当您尝试放置self.cell(0, 5, page, 0, 0, 'C') 时,它会将该行的剩余空间居中——但没有剩余空间,所以它只是将它放在最后。尝试给你的第一个单元格一些宽度,如下所示:

    def footer(self):
        genDateTime = "Report generated on: " + datetime.datetime.now().strftime('%m/%d/%Y %I:%M:%S %p')
        page = 'Page ' + str(self.page_no()) + '/{nb}'
    
        self.set_y(-10)
        self.set_font('Arial', '', 9)
    
        self.cell(5, 5, "Clinical Report: Confidential", 0, 0, 'L')
        self.cell(0, 5, page, 0, 0, 'C')
        self.cell(0, 5, genDateTime, 0, 0, 'R')
    

    您可能必须使宽度大于 5 才能显示所有文本,但您可以使用它。

    【讨论】:

    • 工作完美,非常感谢。出于好奇,如果左对齐文本占据了整个页面宽度,为什么右对齐时间会正确放置?
    • 在你放置第一个盒子(占据了整个宽度)之后,居中的盒子和右对齐的盒子都被强制卡在了行尾。这对于右对齐的东西来说不是问题(因为它无论如何都会迫使它一直向右。)这有意义吗?
    • @KieranPaddock 您是否删除了我将您定向到 PyPDF 的其他问题?
    • 有道理,谢谢。而且我没有删除它,我只是看着它,由于某种原因,所有的 cmets/answers 都消失了,尽管我没有碰过帖子。
    • @KieranPaddock 啊,好的。看起来一个模组删除了我的答案——大概是因为它只是一个链接?这就是为什么我在我的历史中找不到它的原因。但是,我仍然认为这是一个有用的问答对,所以我用一个简单的演示重新发布了一个答案,因为它的价值。
    【解决方案2】:

    您可以使您的单元格与页面大小相同,以便

    self.cell()
    

    可以以该尺寸/方向居中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 2015-06-10
      • 2018-01-15
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2015-12-25
      • 2018-04-18
      相关资源
      最近更新 更多