首页 > 解决方案 > 由于包含中文字符的内容,PdfFileWriter 不起作用

问题描述

我试图创建一个代码来从一堆小的 pdf 文件中生成一个组合的 pdf,而我发现脚本因 UnicodeEncodeError 错误而失败。

我还尝试使用 open("Combined.pdf", "w",encoding='utf-8-sig') 作为 outputStream: 包含编码参数:但编译器说它需要是二进制 'wb' 模式。所以这行不通。下面是代码:

writer = PdfFileWriter()

input_stream = []
for f2 in f_re:
    inputf_file = str(mypath+'\\'+f2[2])
    input_stream.append(open(inputf_file,'rb'))


for reader in map(PdfFileReader, input_stream):
    for n in range(reader.getNumPages()):
        writer.addPage(reader.getPage(n))
with open("Combined.pdf", "wb") as outputStream:
    writer.write(outputStream)
    writer.save()

for f in input_stream:
    f.close()

以下是错误信息:

Traceback(最近一次调用最后):文件“\Workspace\Python\py_CombinPDF\py_combinePDF.py”,第 89 行,在 writer.write(outputStream) 文件“\AppData\Local\Programs\Python\Python36\lib\site-packages \PyPDF2\pdf.py”,第 501 行,写入 obj.writeToStream(stream, key) 文件“\AppData\Local\Programs\Python\Python36\lib\site-packages\PyPDF2\generic.py”,第 549 行,在 writeToStream value.writeToStream(stream, encryption_key) File "\AppData\Local\Programs\Python\Python36\lib\site-packages\PyPDF2\generic.py",第 472 行,在 writeToStream stream.write(b_(self))文件“\AppData\Local\Programs\Python\Python36\lib\site-packages\PyPDF2\utils.py”,第 238 行,在 b_r = s.encode('latin-1') UnicodeEncodeError: 'latin-1'编解码器无法对位置 8-9 中的字符进行编码:序数不在范围内(256)

标签: python-3.x

解决方案


推荐阅读