使用的模块:
在此脚本中,我们将使用PyPDF2模块,该模块将为我们提供各种功能,例如提取数据,读取pdf文件,拆分文件并写入新文件。
下载PyPDF2:
通用方式:pip安装PyPDF2
Pycharm用户:转到python项目解释器并从那里安装它。
PyPDF2提供的各种功能:
PyPDF2.PdfFileReader():此函数将读取我们的pdf文件并返回一个数据值,该值将存储在变量中(以Pdf_Data为例)。
Pdf_Data.isEncrypted:此功能将帮助我们检查pdf文件是否已加密。
Pdf_Data.decrypt(“ <password>”):此函数将帮助我们解密pdf文件,在此函数内部,我们必须输入密码,然后pdf文件将被解密。
Pdf_Data.numPages:此函数将向我们返回pdf包含的页面数。
Pdf_Data.getPage:此函数将html" target="_blank">返回第一页上的数据,这里0似乎是第一页,而1则是第二页,事情就像在python中建立索引一样。
Pdf_Writer =PyPDF2.PdfFileWriter():此函数将创建一个变量,该变量将帮助我们创建新的pdf文件。
Pdf_Writer.addPage(<页面数据>):此函数会将pdf页面添加到新创建的pdf文件中。
注意:只能使用具有text的pdf文件提取文本。
# 导入模块 import PyPDF2 # 打开文件并阅读内容 # 打开文件 Pdf_Open=open("/home/abhinav/Downloads/CS_Defination-converted.pdf","rb") # 读取文件并存储内容 Pdf_Data=PyPDF2.PdfFileReader(Pdf_Open)# 获取页数 print(Pdf_Data.numPages) # 让我们提取第一页的数据 # 我们将使用getPage命令获取页面 # 第一页使用0 First_page=Pdf_Data.getPage(0) # 打印文字 print(First_page.extractText())
输出:
这是我们在输入中从pdf中提取的文本。这样,我们可以从pdf中提取文本。
现在,我们将创建一个pdf文件,并将上面使用的pdf的开始和最后一页添加到该文件中。
让我们看一下代码,
# 导入模块 import PyPDF2 # 打开文件并阅读内容 # 打开文件 Pdf_Open=open("/home/abhinav/Downloads/Abhinav_Gangrade.pdf","rb") # 读取文件并存储内容 Pdf_Data=PyPDF2.PdfFileReader(Pdf_Open)# 获取页数 print(Pdf_Data.numPages) # 创建一个PDF编写器 pdf_writer=PyPDF2.PdfFileWriter()# 我们将采用上述pdf的第一页 first_page=Pdf_Data.getPage(0) # 我们将采用上述pdf的最后一页 # 因为最后一页将是总页数-1 last_page=Pdf_Data.getPage((Pdf_Data.numPages)-1) # 将页面添加到新的pdf pdf_writer.addPage(first_page)pdf_writer.addPage(last_page)# 创建一个空白文件 New_pdf=open("/home/abhinav/Downloads/Hello.pdf","wb") # 将内容添加到空白文件 pdf_writer.write(New_pdf)# 现在关闭文件
从上面的代码中,我们可以在现有pdf的帮助下创建一个新pdf,然后,我们将现有pdf的第一页和最后一页进行合并,并将它们写入新pdf中。这样,我们可以在现有pdf的帮助下创建pdf。
问题内容: 一直在网上搜寻诸如firewatir之类的东西,但搜索python。我正在尝试在Linux上自动执行Firefox。有什么建议么? 问题答案: 该PyXPCOM扩展是一种可能性。 但是,看看firewatir提供的内容,我必须将斜纹的建议换成第二种。它基于mechanize,在这种情况下也可能有用。
我有一个应用程序在Laravel与.env.local文件(a和我做了下一个docker-comment文件: 还有我的Dockerfile: 我希望克隆存储库,并在docker compose构建时在dockerfile中执行以下操作: 重命名.env.local. env 给存储文件夹权限。我有一个错误在这一行
问题内容: 我想知道是否有一种方法可以像使用bash的.bash_profile或.profile脚本那样在进入python shell时自动运行命令。我想自动导入一些模块,这样我每次跳入shell时都不必键入整个shebang。 谢谢, 问题答案: 是的,你可以使用环境变量来做到这一点所概述这里
我正在建立一个多节问卷(共3),我想有4张来保存数据(一个主和一个为每个部分)。 当一个新行添加到主工作表时,如何将数据从主电子表格发送到另一个工作表,并使其成为动态的,以便它不会每次都拉同一行? 我在网上找到了这个脚本: 脚本链接 但不幸的是,它是用于在工作表之间移动数据的。它能被重塑吗? 谢谢
我试图找出CDI和适合我需要的最佳方法。我有一个与普通tcp通信交互的服务()。现在这个服务有一些地方需要通知某人发生了什么事情。对于这些信息,我有接口,需要将其CDI注入到正确的实现中。另一个问题是服务本身被注入一个作业()中,该作业定期执行并调用服务来完成任务。这意味着服务将多次存在。每个都有它处理的另一个tcp连接,并且有另一个需要在接口中注入另一个驱动程序/协议的设备。 让我展示参与此场景
问题内容: 我尝试创建一个eclipse插件,当Eclipse工作台关闭时,该插件会删除一些文件。我从插件项目开始,并添加了一个在此Eclipse关闭钩子中提到的类似符号,它可以终止终止。当我按下Eclipse菜单栏中的特殊按钮(此插件添加)时,将添加侦听器。 如何自动添加它,而无需单击任何菜单项? 问题答案: 使用扩展点来指定要实现的类。这将在Eclipse初始化期间的早期调用。 所以在: 类: