在日常工作中,常常要把文档转格式,比如常见pdf转word,pdf转ppt等,如果数量少的话还好,可以直接去网上找网站解决,多了的话就比较麻烦了,因为很多网站都是限制一天只能转几个,再多就得冲vip。
那么用python脚本来说应该怎么办呢?办法非常简单,几行代码就可以搞定。
python有专门针对PDF,word,txt,ppt,excel 的包。
我们今天就试着把pdf分别转为这四种格式。
先来看怎么把pdf 转为txt,这里说一个前提,pdf是可以编辑的,如果是影印的可以先转为图片然后再文字识别。
首先你需要安装pdf的包,pdfplumber。
直接
pip install pdfplumber然后,就可以提取了,首先来看怎么提取单页文字,随便找了一份文档:
#提取文字import pdfplumberwith pdfplumber.open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\018-话题讨论-怎样用朋友圈建立信任 .pdf') as f: page = f.pages[2] textdata = page.extract_text() print(textdata)这样的话就能提取了,效果还不错:
然后保存成txt,另外加上多页提取:
#多页提取文字import pdfplumberwith pdfplumber.open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\018-话题讨论-怎样用朋友圈建立信任 .pdf') as f:for i in range(1,5): page = f.pages[i] textdata = page.extract_text() print(textdata) data = open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\txt提取.text',"a",encoding='utf-8') data.write(textdata)格式保存得还不错,也没有什么乱码的出现。
依据这个原理可以,继续把pdf转成word,这里的pdf限制是只有文字格式,跟刚才的原理一样,是利用的extract_text()函数。
首先需要在终端安装docx这个包。
然后可以执行下面的代码:
下面展示的是单页提取,如果想展示多页提取,可以直接把pages改成[2-5]这种。
#多页提取文字import pdfplumberwith pdfplumber.open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\018-话题讨论-怎样用朋友圈建立信任 .pdf') as f:for i in range(1,5): page = f.pages[i] textdata = page.extract_text() print(textdata) data = open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\txt提取.text',"a",encoding='utf-8') data.write(textdata)结果如下:有些符号没有提取出来,有些字体不统一,后期需要进行一个调整。
下面一个,就是pdf提取表格放在excel中。
这个来讲的话就比较实用,因为我们如果一个个复制的话真的比较麻烦,还不容易复制完全。这个脚本的限制也有,就是只能提取表格,pdf其他的文字则不能提取。我随意编了一些数据,提取了两页:
我刚试了下,如果直接用pdf复制出来,就是这样的效果:
代码实现:
import pdfplumberfrom openpyxl import Workbookwith pdfplumber.open(r'C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\练习.pdf') as f: workbook = Workbook() #新建工作薄 sheet = workbook.active #激活工作表for i in range(1,3): page = f.pages[i] table = page.extract_table()for row in table: print(row) sheet.append(row) workbook.save(r"C:\Users\itcast\PycharmProjects\pythonProject1\办公自动化\folder\excel.xlsx") i +=1 print("第%d页pdf提取完成"%i)关注我 @秋语棠,带你学好玩的python编程。
0条大神的评论