经过搜索,我终于找到了解决方案: 事实证明,this毕竟是正确的方法。然而,我觉得这并不够冗长。 似乎海报可能从here(相同的变量名称等)。
想法:使用Reportlab创建新的空白PDF,其中只包含文本字符串。 然后使用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()
希望这可以帮助别人。
您正在将文本文件转换为图像文件以向其写入文本以将其转换回混合图像/文本格式?有__no way__这是注释“.pdf”或填写“.pdf”表单的最佳方式。 – agf
你可能是对的。我似乎无法找到一个正确的方法来修改现有的PDF在Python中:/ –
可能重复的[使用Python添加文本到现有的PDF](http://stackoverflow.com/questions/1180115/add-text-to-existing -pdf-using-python) – bain