web-dev-qa-db-ja.com

外部参照テーブルはインデックスが作成されていません。オブジェクトのID番号が修正されます。続かない

PDFを開いてページ数を取得しようとしています。 PyPDF2を使用しています。

これが私のコードです:

def pdfPageReader(fileName):
    try:
        pdf_file = open(fileName, 'rb')
        read_pdf = PyPDF2.PdfFileReader(pdf_file, strict=True)
        number_of_pages = read_pdf.getNumPages()
        print(str(fileName) + " = " + str(number_of_pages))
        pdf_file.close()
        return number_of_pages
    except:
        return "1"

しかし、私はこのエラーに遭遇します:

PdfReadWarning:外部参照テーブルがゼロインデックス化されていません。オブジェクトのID番号が修正されます。 [pdf.py:1736]

Strict = Trueとstrict = Falseを使用しようとしましたが、Trueの場合、このメッセージが表示され、何も表示されず、30分間待機しましたが、何も起こりませんでした。 Falseの場合、何も表示されません。これを押すと、何も実行されません。 ctrl+c 端末(cmd、windows 10)で、開いている操作をキャンセルして続行します(これをpdfファイルのバッチで実行します)。この問題が発生したのは、バッチ内の1つだけです。

私の質問は、これをどのように修正するか、これをスキップする方法、またはこれをキャンセルして他のPDFファイルを続行する方法ですか?

8
JBin

誰かが同様の問題を抱えていて、このエラーメッセージでプログラムをクラッシュさせた場合

ファイル "C:\ Programy\Anaconda3\lib\site-packages\PyPDF2\pdf.py"、1604行目、getObject%(indirectReference.idnum、indirectReference.generation、idnum、generation)内)PyPDF2.utils.PdfReadError:Expected object ID(14 0)は実際の(13 0)と一致しません。外部参照テーブルはゼロインデックス化されていません。

私のPDFリーダーにFalseに等しい厳密な引数を追加するのに役立ちました

pdf_reader = PdfFileReader(input_file,strict=False)

2
Gibron

同じ問題があり、それをスキップする方法を探しました。私はプログラマーではありませんが、警告について documentation を見ると、そのような障害を回避するのに役立つコードがあります。

私はこれを解決策としてお勧めしませんが、私の目的に使用したコードは(リンク上のドキュメントからコピーして貼り付けただけです)

import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")
2
cektek1