2017-12-28 62 views
1

PDF 파일의 페이지 수를 계산하는 빠른 스크립트를 작성했습니다. 그러나 일부 파일에서는 읽을 수 없으며 Xref 테이블에 Zero indexed가 아닌 오류를 반환합니다. 기본적으로 Object Id (5.0)를 기대하고 Object Id (4.0)를 가져옵니다. 또한 내가Python PyPDF2 스캔 된 PDF로 PDF 페이지를 계산하면 Xref 테이블이 생성되지 않습니다.

내 코드는 ... (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 테이블이 Zero Indexed 오류가되지 않도록하는 방법이 있습니까?

감사합니다.

+0

문제를 보여주는 예제 파일을 공유 한 경우 도움이 될 수 있습니다. – mkl

+0

기밀 유지를 위해 샘플 파일을 공유 할 수 없습니다. ( 그러나 strict = False 매개 변수를 추가 할 때 문제를 해결할 수있었습니다. 감사합니다. – TMikonos

+0

* "매개 변수를 추가하는 데 문제가 해결됨 = False"* - 그게 전부입니다. 당신의 대답에서, 당신은 * 오류가 발생하는 파일이 아직 남아 있음을 나타내는 것보다 * 더 높은 ** 파일 수를 열 수 있다고 언급했습니다. 도움이 필요하시면 그들과 함께, 예제 파일을 공유해야 할 것 같습니다. – mkl

답변

0

문제의 일부를 해결했습니다. false로 엄격한 매개 변수를 설정하고

전에에서이 라인을 변경하는 대신 파일의 높은 숫자를 열 수 있습니다 : PAGE_COUNT = PdfFileReader (PDF) .getNumPages() 에를 PAGE_COUNT = PdfFileReader (PDF, 엄격한 = False) .getNumPages()