在reportlab中,如何获取pdf页码
时间: 2023-02-12 17:54:46 浏览: 254
在reportlab中,可以使用PageTemplate和PageDrawTemplate来获取pdf页码。
PageTemplate可以定义页面的布局和格式,在其中可以定义一个PageNumberFlowable来显示页码。
例如:
```python
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, PageTemplate, PageBreak, Frame
from reportlab.lib.units import inch
doc = SimpleDocTemplate("test.pdf", pagesize=letter)
frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id='normal')
template = PageTemplate(id='test', frames=[frame])
doc.addPageTemplates([template])
# 添加页码
doc.build(story, onFirstPage=myPageNumber, onLaterPages=myPageNumber)
def myPageNumber(canvas, doc):
canvas.drawString(inch, 0.75 * inch, "Page %d" % doc.page)
```
或者
PageDrawTemplate 可以在页面上绘制文本或图像,也可以用来显示页码。
例如:
```python
from reportlab.lib import pagesizes
from reportlab.lib.units import inch
from reportlab.platypus import SimpleDocTemplate, PageTemplate, PageBreak
from reportlab.lib.pagesizes import letter
doc = SimpleDocTemplate("test.pdf", pagesize=letter)
def myFirstPage(canvas, doc):
canvas.saveState()
canvas.setFont('Times-Roman', 9)
canvas.drawString(inch, 0.75 * inch, "Page %d" % doc.page)
canvas.restoreState()
def myLaterPages(canvas, doc):
canvas.saveState()
canvas.setFont('Times-Roman', 9)
canvas.drawString(inch, 0.75 * inch, "Page %d" % doc.page)
canvas.restoreState()
# set the page template and page number
doc.addPageTemplates([PageTemplate(id='First',frames=frame, onPage=myFirstPage),PageTemplate(id='Later',frames=frame, onPage=myLaterPages)])
```
在这两种方法中, 通过doc.page来获取当前的页码.
阅读全文