我想使用pypdf lib添加pdf水印,代码如下:
def add_wm(pdf_in, pdf_out):
wm_file = open("watermark.pdf", "rb")
pdf_wm = PdfFileReader(wm_file)
pdf_output = PdfFileWriter()
input_stream = open(pdf_in, "rb")
pdf_input = PdfFileReader(input_stream)
pageNum = pdf_input.getNumPages()
#print pageNum
for i in range(pageNum):
page = pdf_input.getPage(i)
page.mergePage(pdf_wm.getPage(0)) # !! here is fail if has chinese character
page.compressContentStreams()
pdf_output.addPage(page)
output_stream = open(pdf_out, "wb")
pdf_output.write(output_stream)
output_stream.close()
input_stream.close()
wm_file.close()
return True
问题是如果page = pdf_input.getPage(i)
页面有中文字符,page.mergePage
将引发异常并导致失败。我该如何解决这个问题?
答案 0 :(得分:1)
Python库pdfrw也支持watermarking。如果它不适合您的特定PDF,请通过电子邮件发送给我(github上的地址),我会调查 - 我是pdfrw作者。
答案 1 :(得分:0)
当我使用PyPdf2 1.25.1进行水印时,我遇到了同样的问题。
pdfrw,因为帕特里克建议不为我的PDF工作(适用于以pdf格式导出的单词文档,但不适用于扫描文档)。
更新到最新版本的PyPDF2(对我来说这是1.26.0)修复了这个错误。
有关详细信息,请参阅PyPDF2 issue #176