pypdf合并问题

时间:2015-05-15 14:50:05

标签: python pypdf

我想使用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将引发异常并导致失败。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

Python库pdfrw也支持watermarking。如果它不适合您的特定PDF,请通过电子邮件发送给我(github上的地址),我会调查 - 我是pdfrw作者。

答案 1 :(得分:0)

当我使用PyPdf2 1.25.1进行水印时,我遇到了同样的问题。

pdfrw,因为帕特里克建议不为我的PDF工作(适用于以pdf格式导出的单词文档,但不适用于扫描文档)。

更新到最新版本的PyPDF2(对我来说这是1.26.0)修复了这个错误。

有关详细信息,请参阅PyPDF2 issue #176