end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

pypdf for python で、pdfにあるpage数を数える

以下の pypdf.PdfReader()や reader.pages の通りです。

インターネット上には PyPDF2 に関する情報が多くあるようですが、 ※1にある通り、PyPDF2は現在、メンテナンスされておらず、 pypdf(※2)を利用する方がよさそうです。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import glob
import pypdf
import os
import sys

base_dirs = ["S:/",
             "C:/Users/end0tknr/tmp"]

def main():

    for base_dir in base_dirs:
        pdf_path_pattern = base_dir + "/**/*.[pP][dD][fF]"
        for pdf_path in  glob.glob(pdf_path_pattern, recursive=True):
            try:
                reader = pypdf.PdfReader( pdf_path )
                page_size = len(reader.pages)
            except Exception as e:
                print(e, pdf_path, file=sys.stderr)
                
            byte = os.path.getsize( pdf_path )
            disp_str = "%s\t%d\t%d" % (pdf_path,page_size,byte)

            # 以下は windows環境でのfileへのredirectの際
            # UnicodeEncodeError 'cp932' codec can't encode character を避ける為
            disp_str = disp_str.encode('cp932',"ignore")
            disp_str = disp_str.decode('cp932')
            
            print( disp_str )

if __name__ == '__main__':
    main()