我们使用 SimpleDocTemplate 和 PageTemplate 定义 PDF 文件和页面模板。不同的是,在绘制水印时,我们使用 onPage 参数将 watermark() 函数作为回调函数,这样在每个页面生成时都会调用 watermark() 函数来绘制水印。在 watermark() 函数中,我们使用 saveState() 和 restoreState() 方法保存和恢复画布状态,使用 setFont() 方法设置字体,使用 setStrokeColorRGB() 和 setFillColorRGB() 方法设置颜色,使用 drawString() 方法绘制文本。最后,我们将页面模板添加到文档中,并使用 build() 方法将内容添加到文档中。
这样,生成的 PDF 文件中的每个页面都会包含水印。如果需要修改水印的内容、颜色、字体等属性,可以在 watermark() 函数中进行相应的修改。
# coding:utf-8
from reportlab.lib.units import cm
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, PageTemplate, Frame, Paragraph
# 定义PDF水印
def watermark(canvas, rotate=45, N_space_between_content=5, alpha=0.2, content='wechat-394467238'):
canvas.saveState()
canvas.setFont('Helvetica', 15)
can