Обыскав некоторых, я наконец нашел решение: Оказывается, этот был правильным подходом в конце концов.Тем не менее, я чувствую, что это было недостаточно многословно.Похоже, что постер, вероятно, взял его от здесь (те же имена переменных и т. Д.).
Идея: создать новый пустой PDF с Reportlab, который содержит только текстовую строку.Затем объедините / добавьте его в качестве водяного знака, используя pyPdf.
from pyPdf import PdfFileWriter, PdfFileReader
import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
packet = StringIO.StringIO()
# create a new PDF with Reportlab
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(100,100, "Hello world")
can.save()
#move to the beginning of the StringIO buffer
packet.seek(0)
new_pdf = PdfFileReader(packet)
# read your existing PDF
existing_pdf = PdfFileReader(file("mypdf.pdf", "rb"))
output = PdfFileWriter()
# add the "watermark" (which is the new pdf) on the existing page
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
# finally, write "output" to a real file
outputStream = file("/home/joe/newpdf.pdf", "wb")
output.write(outputStream)
outputStream.close()
Надеюсь, это поможет кому-то еще.