#python-3.x
#python #pypdf
Вопрос:
Я пытался создать код для создания объединенного 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 (most recent call last):
File "WorkspacePythonpy_CombinPDFpy_combinePDF.py", line 89, in <module>
writer.write(outputStream)
File "AppDataLocalProgramsPythonPython36libsite-packagesPyPDF2pdf.py", line 501, in write
obj.writeToStream(stream, key)
File "AppDataLocalProgramsPythonPython36libsite-packagesPyPDF2generic.py", line 549, in writeToStream
value.writeToStream(stream, encryption_key)
File "AppDataLocalProgramsPythonPython36libsite-packagesPyPDF2generic.py", line 472, in writeToStream
stream.write(b_(self))
File "AppDataLocalProgramsPythonPython36libsite-packagesPyPDF2utils.py", line 238, in b_
r = s.encode('latin-1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 8-9: ordinal not in range(256)
Комментарии:
1. Привет! Этот вопрос был решен путем перехода к PyPDF2utils.py только в сообщении об ошибке line238 указано, что я меняю исходный код r = s.encode(‘latin-1’) на r = s.encode (‘utf-8’), и проблема была решена, я собираюсь закрыть этот вопрос. Надеюсь, это поможет и другим!
Ответ №1:
Обновление PyPDF2 решило эту проблему.
Теперь, 4 года спустя, люди должны использовать pypdf
. Он содержит последний код (я поддерживаю PyPDF2 и pypdf)