我正在使用PyPDF创建格式化的报告。我希望页码(例如第1页,共3页)位于页脚的中心,几乎完全与PyPDF教程的显示方式相同。 Here's the tutorial I'm referencing.
下面是我在页脚方法中输入的代码:
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')
这是页面底部的屏幕截图。如您所见,“机密”和“日期时间”标签按预期显示,但是“页面#”标签是正确的:
感谢您的帮助。
答案 0 :(得分:1)
我认为问题在于您如何设置像元宽度。默认情况下,PyPDF从先前放置的单元格的最右边开始顺序放置单元格。调用 <ListView.Header>
<StackLayout Style="{StaticResource DefaultStackLayout}">
<StackLayout x:Name="ZeroHeaderContainer"
HeightRequest="0"
IsVisible="{Binding SomeBooleanField}"/>
<StackLayout x:Name="NormalHeaderContainer"
Style="{StaticResource DefaultStackLayout}"
HorizontalOptions="Fill"
IsVisible="{Binding SomeBooleanField,Converter={StaticResource InverseBooleanConverter}}">
</StackLayout>
</StackLayout>
时,第一个参数是width -默认情况下,如果width为0,它将使width扩展到页面的最右边。因此,当您放置self.cell()
时,该文本框将一直扩展到页面右侧。然后,当您尝试放置self.cell(0, 5, "Clinical Report: Confidential", 0, 0, 'L')
时,它将居中放置在该行的剩余空间中-但由于没有剩余空间,因此只能将其放置在末尾。尝试给第一个像元一个宽度,如下所示:
self.cell(0, 5, page, 0, 0, 'C')
您可能必须使宽度大于5才能显示所有文本,但是您可以使用它。
答案 1 :(得分:0)
您可以将单元格设置为与页面相同的大小,以便
self.cell()
可以将其居中到该尺寸/方向