import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyPDF2 import PdfFileReader, PdfFileWriter
from main_form import * class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
self.actionLoad_File_L.triggered.connect(self.showDialog) def showDialog(self):
infn = QFileDialog.getOpenFileName(self,
'Open file',
'd:') with open(infn, 'rb') as f:
pdf = PdfFileReader(f)
info = pdf.getDocumentInfo()
number_of_pages = pdf.getNumPages() print(info, number_of_pages) if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

原因是getOpenFileName的返回值是文件名文件类型的元组,这里直接把元组赋值给了open函数,但是应该是文件名,自己对于代码基础原理不够理解,实际实例代码都有写

infn = QFileDialog.getOpenFileName(self,
'Open file',
'd:')[0]

我没有仔细观察,花了1个小时解决这个问题

pycharm没有报这个错误,到命令行运行可以很清晰的看到这个错误,pycharm假死,所以pycharm也不可靠啊



所以可以像下面这样写

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyPDF2 import PdfFileReader, PdfFileWriter
from main_form import * class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
self.actionLoad_File_L.triggered.connect(self.get_info) def get_info(self):
path = 'D:/coding/envs/brisspython/a.pdf'
filename, filetype = QFileDialog.getOpenFileName(self, 'Open file')
with open(filename, 'rb') as f:
pdf = PdfFileReader(f)
info = pdf.getDocumentInfo()
number_of_pages = pdf.getNumPages() print(number_of_pages) if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

或者

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyPDF2 import PdfFileReader, PdfFileWriter
from main_form import * class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
self.actionLoad_File_L.triggered.connect(self.get_info) def get_info(self):
path = 'D:/coding/envs/brisspython/a.pdf'
filename = QFileDialog.getOpenFileName(self, 'Open file')[0]
with open(filename, 'rb') as f:
pdf = PdfFileReader(f)
info = pdf.getDocumentInfo()
number_of_pages = pdf.getNumPages() print(number_of_pages) if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

pyqt5加载pdf文档失败的更多相关文章

  1. 打开地图文件和shape文件代码加载Mxd文档

    代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary>  ...

  2. jQuery使用load方法加载其他文档内容

    A文档载入B文档的内容,并且通过JQ操作被引入到A文档中的元素 A文档 (index.html): <!DOCTYPE html> <html lang="en" ...

  3. C# 加载xml文档文件及加载xml字符串

    //创建XmlDocument对象 XmlDocument xmlDoc = new XmlDocument(); //载入xml文件名 xmlDoc.Load(filename); //如果是xml ...

  4. jQuery的$.getScript方法去加载javaScript文档解析

    1.两个文件的代码如下: <script> function Ajax(){ //将9-4.html中的Ajax()函数进行修改 $.getScript('9-8.js',function ...

  5. iframe加载的文档高度

    var clientHeight = $("#iframe").contents().find("body").height();

  6. 【Win10 开发】读取PDF文档

    关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...

  7. C# 打印PDF文档的10种方法

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...

  8. Java 设置PDF文档背景色

    一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括: 设置纯色背景色 设置图 ...

  9. Apache PDFbox开发指南之PDF文档读取

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ...

随机推荐

  1. idea|properties文件乱码

    案例 在idea 打开有些配置文件,如config.properties,里面中文注释出现乱码 解决方案 点击FILE->Settings->Editor->File Encodin ...

  2. Docker快速上手之部署SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  3. python中线程共享资源问题的解决

    线程跟进程有些相似,有时被称作轻量级的进程,但不同的是,所有的线程运行在同一个进程中,共享相同的运行坏境. 进程和线程都是实现多任务的一种方式,例如:在同一台计算机上能同时运行多个QQ(进程),一个Q ...

  4. HDU_5692_dfs序+线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=5692 这道题真的是看了题解还搞了一天,把每条路径后序遍历按1-n重新标号,储存每个点在哪些路径中出现过(l和r数 ...

  5. Codeforces_723_D

    http://codeforces.com/problemset/problem/723/D dfs找出每个湖,保存坐标和大小,按大小排序,填充湖即可,注意湖的数量最多会有1250个. #includ ...

  6. Codeforces_478_C

    http://codeforces.com/problemset/problem/478/C 水. #include<stdio.h> int main() { long long a,b ...

  7. 利用ionic3进行上一行和左一行不动,中间移动的功能

    首先在html中的写法是 <ion-header> <ion-navbar> <ion-title>历史数据</ion-title> </ion- ...

  8. 11g与12c启动,关闭RAC

    oracle11g 关闭,启动顺序 1.关闭数据库(oracle)srvctl stop database -d rac 2.关闭集群(root)crsctl stop cluster -all 3. ...

  9. Software Testing Concepts

    Software Testing Concepts

  10. 对特殊方法的访问 - Special method lookup

    对特殊方法的访问 - Special method lookup 对于用户自定义的 class 来说, 特殊方法只有通过定义对象的类型object’s type (而非通过 instance 的 __ ...