2017-12-28 21 views
1

PDFファイルのページ数をカウントする高速スクリプトを作成しました。しかし、いくつかのファイルでは、それを読み取ることができず、Xrefテーブルのエラーをゼロでないインデックスで返します。基本的には、オブジェクトID(5.0)を期待し、オブジェクトID(4.0)を取得します。また、私はPythonのPyPDF2でスキャンしたPDFファイルのPDFページをカウントすると、外部参照テーブルが生成されず、0が割り出されます。

私のコードがある...(7.0)のような他のオブジェクトIDを持って、オブジェクトID(6.0)などを取得していますので、

from PyPDF2 import PdfFileReader 
from pathlib import Path 
import os 
import math 
import logging 

numPages=0 
workPath = input ('Please introduce your working directory: ') 
print ('Your selected path is ' + workPath) 
os.chdir (workPath.encode()) 
logging.basicConfig(filename='errrors.log', 
    level=logging.DEBUG, 
    format='%(asctime)s - %(levelname)s - %(message)s') 
fout= open('PagesCount.txt', 'w', encoding="utf-8") 
path_files = Path(workPath) 
for file in path_files.glob('**/*.pdf'): 
    page_Count = 0 
    try: 
     with open(str(file), "br") as PDF: 
      try: 
       page_Count = PdfFileReader(PDF).getNumPages() 
       numPages = numPages + page_Count 
       print ('Pages in ' + str(file) + ': ' + str(page_Count) + ' pages') 
       fout.write ('Pages in ' + str(file) + ':\t' + str(page_Count) + ' pages\n') 
      except: 
       print('File {} cannot be read'.format(str(file))) 
       logging.error('File cannot be read:\t {}'.format(str(file))) 

    except: 
     logging.error('File is not processed: {}'.format(str(file))) 

print ('Total number of pages:\t' + str(numPages) + ' pages') 
fout.write ('Total number of pages:\t' + str(numPages) + ' pages\n') 

、私がページをカウントしなければならないことが起こります多くのスキャンされたPDFファイルのうち、そのうちの約80%が上記のエラーのためにエラーファイルにフィルタリングされます。 Xrefテーブルがゼロインデックスエラーではないようにする方法はありますか?

ありがとうございます。

+0

問題を示すサンプルファイルを共有した場合、手助けする方が簡単かもしれません。 – mkl

+0

機密性の理由から私はサンプルファイルを共有できません:( しかし、問題を解決するには、strict = Falseというパラメータを追加することができました。ありがとうございました – TMikonos

+0

* "パラメータstrict = False"あなたの答えでは、*エラーが発生するいくつかのファイルがまだあることを示しているように見える*より高い**ファイル数を開くことができることに言及しました。それらと一緒に、私はあなたがサンプルファイルを共有しなければならないと思います。 – mkl

答えて

0

私はこの問題の一部を解決しました。 = PAGE_COUNT = PdfFileReader(PDF).getNumPages() PAGE_COUNT = PdfFileReader(PDF、厳密 へ:falseに厳格なパラメータを設定し、それから、この行を変更する

前よりもファイルの高い数を開くことができますFalse).getNumPages()

関連する問題