如何统计一批文档的总页数?

代码调整了一下,编译成了 exe 可执行文件。下载这个 exe 可执行文件,和要统计页数的文档放在同一文件夹下,然后双击运行即可。

本程序使用 pyinstaller 打包生成,是64位程序,打包后使用 Windows Defender 扫描,未发现威胁。

修改后的代码为:

import os
import math
from win32com.client import Dispatch
from PyPDF3 import PdfFileReader

def get_word_page(word_path):
    word = Dispatch('Word.Application')
    word.Visible = False
    word = word.Documents.Open(word_path)
    word.Repaginate()
    num_of_sheets = word.ComputeStatistics(2)
    return num_of_sheets

def get_pdf_page(pdf_path):
    filename = pdf_path
    reader = PdfFileReader(filename)

    if reader.isEncrypted:
        reader.decrypt('')

    page = reader.getNumPages()
    return page

page_sum = 0
cost_sum = 0

number_of_docx = 0
number_of_doc = 0
number_of_pdf = 0
page_of_docx = 0
page_of_doc = 0
page_of_pdf = 0
cost_of_docx = 0
cost_of_doc = 0
cost_of_pdf = 0

l=os.listdir('.')
for file in l:
    if file.endswith('.docx'):
        docfile=f"{os.getcwd()}/{file}"
        docfile=docfile.replace("\\","/")
        p=get_word_page(docfile)
        number_of_docx+=1
        page_of_docx+=p
        cost_of_docx+=math.ceil(p/2)
    if file.endswith('.doc'):
        docfile=f"{os.getcwd()}/{file}"
        docfile=docfile.replace("\\","/")
        p=get_word_page(docfile)
        number_of_doc+=1
        page_of_doc+=p
        cost_of_doc+=math.ceil(p/2)
    if file.endswith('.pdf'):
        p=get_pdf_page(file)
        number_of_pdf+=1
        page_of_pdf+=p
        cost_of_pdf+=math.ceil(p/2)

page_sum=page_of_doc+page_of_docx+page_of_pdf
cost_sum=cost_of_doc+cost_of_docx+cost_of_pdf

print("统计报告")
print("当前目录下,有:")

print("docx 文档")
print("    文件个数:", number_of_docx)
print("    总页数:", page_of_docx)
print("    如双面打印,须消耗纸张数:", cost_of_docx)

print("doc 文档")
print("    文件个数:", number_of_doc)
print("    总页数:", page_of_doc)
print("    如双面打印,须消耗纸张数:", cost_of_doc)

print("pdf 文档")
print("    文件个数:", number_of_pdf)
print("    总页数:", page_of_pdf)
print("    如双面打印,须消耗纸张数:", cost_of_pdf)

print("小结")
print("    文件总页数:", page_sum)
print("    如双面打印所有文档,须消耗纸张数:", cost_sum)

input("按 Enter 退出。")

之前的代码使用 pdfplumber 库统计 PDF 页数,但使用 pyinstaller 打包时总是出错;这次换成了 PyPDF3,顺利完成了打包。