使用Python替换PDF中的文本

16 浏览
0 Comments

使用Python替换PDF中的文本

这个问题已经有了答案

如何使用Python替换PDF中的文本?

我正在尝试使用以下Python代码替换PDF文件中的文本字符串。

import PyPDF2
reader = PyPDF2.PdfFileReader('document.pdf', strict=True, warndest=None, overwriteWarnings=True)
writer = PyPDF2.PdfFileWriter()
replacements = {'old' : 'new'}
P = reader.getNumPages()
for p in range(P):
    page = reader.getPage(p)
    contents = page.getContents()
    bdata = contents.getData()
    ddata = bdata.decode('utf-8') #decoded data (string)  
    for key in replacements.keys():
        ddata = ddata.replace(key, replacements[key])
    contents.setData(ddata.encode('utf-8')) #Error occurs here
    #page.setContents(contents)
    writer.addPage(page)
with open("result.pdf", 'wb') as f:
    writer.write(f)

问题在于contents.setData会引发PdfReadError: Creating EncodedStreamObject is not currently supported异常。

有没有人能想到一个解决方法?

附言:应用这里描述的方法会创建一个新的PDF文件,但没有进行替换。

admin 更改状态以发布 2023年5月19日
0
0 Comments

如此解释,这并不是一个好主意。你可以考虑构建你想要的页面的HTML,然后使用wkhtmltopdf将其转换为PDF。

0