2016-06-14 4 views
0

requestsライブラリを使用していくつかのpdfsをダウンロードし、pypdfを使用してそれらを一緒にマージしようとしました。一般的に、これは正常に動作していますが、一部のpdfsではエラーが発生します。トレースのUnicodeエラーPyPdf

MWE.py

import requests 
from pyPdf import PdfFileWriter, PdfFileReader 
from StringIO import StringIO 


input = PdfFileReader(StringIO(response.content)) 
input.decrypt("") 
output = PdfFileWriter() 
output.addPage(input.getPage(0)) 

outputStream = file("document-output.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 

session.close() 

エラー

Traceback (most recent call last): 
    File "mwe.py", line 21, in <module> 
    input.decrypt("") 
    File "/usr/local/lib/python2.7/dist-packages/pyPdf/pdf.py", line 894, in decrypt 
    return self._decrypt(password) 
    File "/usr/local/lib/python2.7/dist-packages/pyPdf/pdf.py", line 904, in _decrypt 
    user_password, key = self._authenticateUserPassword(password) 
    File "/usr/local/lib/python2.7/dist-packages/pyPdf/pdf.py", line 945, in _authenticateUserPassword 
    encrypt.get("/EncryptMetadata", BooleanObject(False)).getObject()) 
    File "/usr/local/lib/python2.7/dist-packages/pyPdf/pdf.py", line 1818, in _alg35 
    key = _alg32(password, rev, keylen, owner_entry, p_entry, id1_entry) 
    File "/usr/local/lib/python2.7/dist-packages/pyPdf/pdf.py", line 1729, in _alg32 
    m.update(id1_entry) 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 

私は、ファイルからの入力を読んで私はそれが、この場合に重要とは思いません。

この問題に関するいくつかの関連する質問がありましたが、私は特定の問題を解決できません。

+0

残りのトレースバックを共有しようとしていましたか? –

+0

解読メソッドでエラーが発生していませんか?実際にはpdfは暗号化されていませんが、空のパスワードでこの回避策を見つけました。それ以外の場合は、addPageメソッド内で 'Exception:file has decrypted 'というエラーが発生して失敗します。 –

+0

なぜ 'file'を使用していますか? –

答えて

0

[OK]を、私はこれはこれまでのところ期待通りの代わりに働くpyPdf PyPDF2(1.26.0)を使用して(1.13) https://github.com/mstamy2/PyPDF2/issues/51

内部のバグに思われることが分かりました。