实战案例:Python轻松实现PDF格式转换(附详细源码),


 

 

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

项目背景

  1. 网上PDF转换工具眼花缭乱,选择困难症,有些甚至还收费;
  2. 直接以其他格式打开PDF效果一般较差;
  3. 有些小可爱通过复制粘贴的方式进行操作,浪费了大量的时间。

那么,有没有什么办法可以秒速解决这些问题呢?没错,Python可以。废话不多说,直接上实操。

项目实操

一、PDF转Text

首先,安装一下操作PDF的库pdfplumber。pdfplumber 可以很好的读取 PDF 文件内容和提取 PDF 中的表格,这个库不属于 Python 标准库,需要单独安装。

pip3 install pdfplumber

 

安装好了之后,咱导入pdfplumber。

import pdfplumber

 

打开PDF论文,并提取论文第2页面内容。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
    page = p.pages[2]
    textdata = page.extract_text()

 

打印一下textdata,提取到了第2页的内容如下:

 

 

 

此时,你也许疑问了,一篇硕士论文至少也50多页吧。没错,我下载的这篇论文有75页,咱还得加个for循环,把所有页面内容提取下来。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
    for i in range(75):
        page = p.pages[i]
        textdata = page.extract_text()
        #print(textdata)

 

内容都提取出来了,接下来就是保存为text文本。"a"为指定写入模式为追加写入。完整代码如下:

#PDF转Text
import pdfplumber
with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
    for i in range(75):
        page = p.pages[i]
        textdata = page.extract_text()
        #print(textdata)
        data = open("text.text", "a")
        data.write(textdata)

 

 

二、PDF转Word

需要安装一下操作Word的库python-docx。

pip3 install python-docx

 

导入Document方法。

from docx import Document

 

打开PDF论文,并提取论文第2页面内容。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
        page = p.pages[2]
        textdata = page.extract_text()

 

新建Word文档,并将提取的内容存储到里面。

document = Document()  #新建一个空白的word文档
content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
document.save("word.docx")  #保存文档docx,命名为word

 

完整代码如下:

#PDF转Word1import pdfplumber
from docx import Document
with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
        page = p.pages[2]
        textdata = page.extract_text()
        #print(textdata)
        document = Document()  #新建一个空白的word文档
        content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
        document.save("word.docx")  #保存文档docx,命名为word

 

如果要提取全部,加循环。

 

三、PDF转Excel

这里所说的PDF转Excel不是全文转Excel,而是对论文中的部分表格进行格式转换,方便在Excel中对数据进行筛选、计算等操作。

本案例PDF论文中第69-75页为附录部分,贴的是财务报表数据,截取部分内容,长这样:

 

首先,安装并导入操作Excel表格的库openpyxl。

pip3 install openpyxlfrom openpyxl import Workbook

 

打开PDF论文,提取论文第69-75页表格内容,注意这里range左开右闭。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
    for i in range(68,75):  #遍历69页-75页
        page = p.pages[i]
        table = page.extract_table()
        #print(table)

 

新建空白的Excel文件,按行写入从PDF提取的表格数据内容。完整代码如下:

 #PDF转Excel 
 import pdfplumber
 from openpyxl import Workbook
 with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
     workbook = Workbook()  #新建空白Excel工作簿
     sheet = workbook.active  #激活sheet
     for i in range(68,75):  #遍历69页-75页
         page = p.pages[i]
         table = page.extract_table() #提取表格数据
        #print(table)
        for row in table:  #遍历所有行
            #print(row)
            sheet.append(row) #按行追加写入数据
        workbook.save("Excel.xlsx") #保存文件,命名为Excel
        i += 1
        print("第%d页PDF提取完成"%i) #提示提取进度

 

 

最终效果如下,好像还可以。

 

结 语

到这呢,Python对PDF论文的简单操作就基本结束了。但还有一些值得探讨的问题,比如如果有100个PDF且页数都不一样怎么办?即使全部提取下来,文件的格式问题如果优化?提取的多个Excel表格如何合并到一个sheet?首先肯定的告诉你,python都能解决,我以后也还会写相关的Python操作。

欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。

相关内容

    暂无相关文章

评论关闭