Tkinter GUI调用tkPDFViewer显示PDF报AttributeError无法加载
问题原因
报错由依赖版本不兼容导致:
tkPDFViewer 底层调用 PyMuPDF(别名fitz)的接口实现PDF页面转图像的逻辑,PyMuPDF 1.19.0 及以上版本移除了旧版驼峰命名的Page.getPixmap()方法,将接口统一调整为蛇形命名的Page.get_pixmap()。当前tkPDFViewer官方版本没有跟进这个API变更,安装新版PyMuPDF后调用旧接口就会触发'Page' object has no attribute 'getPixmap'的属性错误,PDF无法正常渲染。
解决方案
你可以任选以下一种方案修复:
方案1:降级PyMuPDF到兼容版本(无需修改代码,推荐)
直接在终端执行以下命令安装适配tkPDFViewer的PyMuPDF版本,安装完成后直接运行原有代码即可正常加载PDF:
pip install PyMuPDF==1.18.19
注:你原有代码中
pdf_view设置的width、height参数为100,PDF显示区域会非常小,建议调整为和窗口匹配的尺寸(比如width=550、height=700)获得更好的显示效果。
方案2:修改库源码适配新版PyMuPDF(不想降级依赖时使用)
如果需要使用新版PyMuPDF的特性,可以手动修改tkPDFViewer的源码适配新接口:
- 找到当前Python环境下tkPDFViewer的安装路径,打开目录内的
tkPDFViewer.py文件 - 定位到第46行
add_img函数中的pix = page.getPixmap()语句 - 将该行修改为
pix = page.get_pixmap() - 保存文件后重新运行代码,即可正常渲染PDF。
内容的提问来源于stack exchange,提问作者hallo
相关产品推荐
相关产品推荐

