如何使用Ghostscript与Python获取PDF的总页数
Python结合Ghostscript统计PDF页数并保存至变量
核心实现思路
用Python的subprocess模块调用Ghostscript命令行工具,捕获输出结果并转成整数变量,完全在Python环境内完成逻辑。
前提条件
已安装Ghostscript,确保gs命令能在系统终端直接执行;如果没加入系统PATH,代码里直接写Ghostscript可执行文件的完整路径也行。
代码实现
import subprocess def get_pdf_page_count(pdf_path): try: # 调用Ghostscript获取页数 output = subprocess.check_output( [ "gs", "-q", # 静默模式,屏蔽冗余日志 "-dNODISPLAY", # 不启动图形界面,适合后台运行 "-c", f"({pdf_path}) (r) file runpdfbegin pdfpagecount = quit" ], stderr=subprocess.STDOUT, text=True ) # 提取结果并转为整数变量 page_count = int(output.strip()) return page_count except subprocess.CalledProcessError as e: print(f"统计失败: {e.output}") return None except ValueError: print("无法解析页数结果") return None # 使用示例 target_pdf = "test.pdf" pdf_pages = get_pdf_page_count(target_pdf) if pdf_pages is not None: print(f"该PDF总页数: {pdf_pages}") # 变量pdf_pages已存储页数,可直接用于后续逻辑
关键参数说明
-q:关闭Ghostscript的冗余输出,只返回页数数字-dNODISPLAY:让Ghostscript不加载图形驱动,避免不必要的资源占用pdfpagecount:Ghostscript内置操作符,专门用于返回PDF的总页数
如果你的Ghostscript没在系统PATH里,把代码中的"gs"换成完整路径即可,比如Windows下的"C:/Program Files/gs/gs10.02.1/bin/gswin64c.exe",Linux/macOS下的"/usr/bin/gs"。
可选替代方案
要是不想依赖Ghostscript,也可以用PyMuPDF(fitz)库实现,代码更简洁:
import fitz def get_pdf_page_count(pdf_path): try: with fitz.open(pdf_path) as doc: return doc.page_count except Exception as e: print(f"统计失败: {e}") return None
内容的提问来源于stack exchange,提问作者shank sharma
相关产品推荐
相关产品推荐

