标题: [文件操作] 求助能够统计pdf页数的bat脚本 [打印本页]
作者: 2652boy 时间: 2023-5-16 11:52 标题: 求助能够统计pdf页数的bat脚本
因为之前做的很多东西都没统计过页数,现在审计查要具体数据,有大神能帮忙写一个吗?
作者: hfxiang 时间: 2023-5-16 13:30
回复 1# 2652boy - import argparse
- from glob import glob
- from os.path import exists, join
- from PyPDF2 import PdfFileReader
-
- def get_total_pages(folder, recursive=False):
- if not exists(folder):
- return "Error: No such file or directory: {}".format(folder)
- if recursive:
- pdf_list = glob(join(folder, "**/*.pdf"), recursive=True)
- else:
- pdf_list = glob(join(folder, "*.pdf"), recursive=False)
-
- pages = []
- for pdf in pdf_list:
- reader = PdfFileReader(pdf)
- num_page = reader.getNumPages()
- # print("%d pages <-- '%s'" % (num_page, pdf))
- pages.append(num_page)
- return sum(pages)
-
- if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument('folder', type=str, help='path to the folder where PDF files are stored.')
- parser.add_argument('--recursive', '-r', action='store_true', help='search PDF files in the <folder> recursively.')
- args = parser.parse_args()
- total_pages = get_total_pages(args.folder, recursive=args.recursive)
- print("===============================\nTotal pages in '%s': %d" % (args.folder, total_pages))
复制代码
将以上文本以UTF-8编码保存为count_pdf_pages.py,假设要统计"D:\tmp\pdf"文件夹(含子文件夹)下所有pdf文档的页数总数,可执行以下指令获得:
python count_pdf_pages.py "D:\tmp\pdf" -r
作者: 2652boy 时间: 2023-5-16 15:37
回复 2# hfxiang
感谢大佬
作者: buyiyang 时间: 2023-5-16 16:18
本帖最后由 buyiyang 于 2023-5-16 16:47 编辑
现在的exiftool功能比较强大- set "sd=C:\1\2"
- cd "%sd%"
- "%~dp0exiftool(-k).exe" -s -csv -PageCount *.pdf>%~dp0pdfpages.txt
复制代码
补充一个下载链接https://exiftool.org/exiftool-12.62.zip,脚本和exiftool放同一个目录,然后在脚本中设置好pdf目录
作者: jyswjjgdwtdtj 时间: 2023-5-16 18:55
试试用word.application(office)/kwps.application(wps)
自带的总归比第三方好(谁电脑上每个文档编辑器?)
作者: terse 时间: 2023-5-16 19:46
- @echo off & setlocal enabledelayedexpansion
- set file=a.pdf
- for /f %%i in ('findstr /irc:"/Type[ ]*/Page" "!file!" 2^>nul ^|find /v "/Pages" ^|find /c "/Page"') do set "n=%%i"
- echo !file! !n!
-
- pause
复制代码
作者: buyiyang 时间: 2023-5-16 22:09
回复 6# terse
页面对象的数目和pdf的实际页数似乎不完全一致,我看了一下页面树根节点有一个Count属性与实际页数一致。
作者: Batcher 时间: 2023-5-16 22:48
回复 1# 2652boy
批处理调用PDFtk获取PDF文件页数
http://bbs.bathome.net/thread-65227-1-1.html#pid264896
作者: terse 时间: 2023-5-17 00:08
本帖最后由 terse 于 2023-5-17 13:42 编辑
回复 7# buyiyang
是的 但也可能会包含多个count属性 准确性也会受到影响 还是专业工具处理好
添加个提取count属性的
删了 准确性不高
另外 这样可以一次findstr哦- findstr /irc:"/Type[ ]*/Page\>" "!file!" 2^>nul ^|find /c "/Page"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |