Python轻松实现PDF格式转换(附详细源码)

article/2025/10/30 14:16:58

公众号后台回复“图书“,了解更多号主新书内容

 作者:J哥

 来源:菜J学Python

项目背景

  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转Text1import pdfplumber
2with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
3    for i in range(75):
4        page = p.pages[i]
5        textdata = page.extract_text()
6        #print(textdata)
7        data = open("text.text", "a")
8        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()#print(textdata)

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

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

完整代码如下:

#PDF转Word1import pdfplumber
2from docx import Document
3with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
4        page = p.pages[2]
5        textdata = page.extract_text()
6        #print(textdata)
7        document = Document()  #新建一个空白的word文档
8        content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
9        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 1import pdfplumber2from openpyxl import Workbook3with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:4    workbook = Workbook()  #新建空白Excel工作簿5    sheet = workbook.active  #激活sheet6    for i in range(68,75):  #遍历69页-75页7        page = p.pages[i]8        table = page.extract_table() #提取表格数据9        #print(table)
10        for row in table:  #遍历所有行
11            #print(row)
12            sheet.append(row) #按行追加写入数据
13        workbook.save("Excel.xlsx") #保存文件,命名为Excel
14        i += 1
15        print("第%d页PDF提取完成"%i) #提示提取进度

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

结 语

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

最后,祝所有即将毕业或以后要毕业的朋友们降重顺利,毕业快乐!

参考链接:

pdfplumber :https://github.com/jsvine/pdfplumber;

python-docx: https://python-docx.readthedocs.io/en/latest/;

openpyxl:https://openpyxl.readthedocs.io/en/stable/;

◆ ◆ ◆  ◆ ◆

麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行双12活动,大家可以用相原价5折的价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

● 卧槽!原来爬取B站弹幕这么简单

● 厉害了!麟哥新书登顶京东销量排行榜!

● 笑死人不偿命的知乎沙雕问题排行榜

● 用Python扒出B站那些“惊为天人”的阿婆主!

● 你相信逛B站也能学编程吗


http://chatgpt.dhexx.cn/article/mXfmhWgJ.shtml

相关文章

KDD 2022 | 量化交易相关论文(附论文链接)

写在前面 ACM SIGKDD国际会议(简称 KDD)是由ACM的数据挖掘及知识发现专委会主办的数据挖掘研究领域的顶级年会,属于CCF A类会议。第28届KDD会议于2022于8月14日至18日在美国华盛顿举行。KDD 会议包含 Research 和 Applied Data Science 两个 …

分享|数智化转型咨询赋能白皮书2021(附PDF)

在创世界一流“力量大厦”发展战略指引下,中国移动凝聚全集团数智化转型相关能力,发挥公司技术、生态、经验势能优势,围绕“能力即服务”价值实现体系,系统性打造中国移动特色的“1357 数智化转型赋能方法论”,即1个核…

ERP_课程论文(hunnu)

目录 一、概述 1.本课程的内容 2.企业情况 二、主要内容(三年对战) 1.第一年规划 2.第二年规划 3.第三年规划 三、结语 1.学习心得 (1) 定量分析 (2) 租买产房 (3) 建设…

用户体验的要素pdf_用户运营思路(35份)

用户运营思路(35份) ├1 用户画像指导用户精细化运营.pdf ├2 2019用户生命周期运营白皮书-京东尼尔森-2019.11-57页.pdf ├3 从战术到战略,如何获取&运营早期用户.doc ├4 社群变现的道与术:私域流量&用户运营.pdf ├5 易观-智能用户…

《幸福资本论》读书笔记

2019独角兽企业重金招聘Python工程师标准>>> 这是一本小书,比较薄。它还有一个副标题-为什么梵高受穷,毕加索却很富有。但我一直没有发现这本书跟这两位画家有什么关系。真的没有关联上。书中倒是有一段描述毕加索的故事,对这个故…

数据中Byte和Bit的区别

数据中的Byte和Bit的区别 首先我们认识一下他们是什么 Byte(字节,简称B) 是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。 一个字节存储8位无符号数,储存的数值范…

bit ( 比特 )和 Byte(字节)的关系?

20 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一.存储单位的bit 和 Byte二.字节与字符的区别?三.网速怎么算?总结 前言 bit ( 比特 )和 Byte(字节)的关系&…

bit 与 Byte 的区别

bit 与 Byte 的区别 一、用途不一样 Bit 意为"位"或"比特",是计算机运算的基础单位;Byte 意为"字节",是计算机文件大小的基本计算单位; 二、代表的大小不同 1 bit 就是1位二进制数,…

bit(比特)与Byte(字节)的区别与关系

1.bit:位 (小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中,每个0或1就是一个位(bit) 位是数据存储(计算机中信息)的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32…

bit与byte的区别详解

bit和byte同译为"比特",都是数据量度单位 区别: 一. 容量大小不同 bit(比特)是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。 1byte8bits byte是数据存储的基础单…

浅谈C语言的输入输出函数

目录 前言 一、通过一个简单的例子,先初始下scanf函数和printf函数(此例子出自于谭浩强老师所著的《C程序设计》第四版) 二、浅谈printf函数 1. printf函数的一般格式 2.格式字符 三、浅谈scanf函数 1.scanf函数的一般形式 2.scanf函…

C 语言编程 — 输入输出操作

目录 文章目录 目录标准输入输出getchar() / putchar() 单个字符输入输出scanf() / printf() 格式化字符串输入输出sprintf() 输出字符串到字符数组snprintf() 安全的输出字符串到字符数组format 格式化 文件输入输出fopen() / fclose() 打开/关闭文件fgetc() / fputc() 读写单…

c语言--输入输出

c语言本身没有输入输出语句 格式化输出 %o :八进制 %x :十六进制 %d :十进制 %m.nf :输出的数字总共占有m个,其中n个为小数,在左边补零 %-m.nf :在右边补空格 %0md:在左边补上0得到m个数字 int main(){printf("s1*%5s*\n","chi")…

c语言 --- 基本输入输出

printf 函数 #include <stdio.h> C语言标准输入输出头文件 printf做原样打印&#xff0c;把要打印的东西作为参数 代码的行数不影响显示结果的行数 //函数 //printf("要打印的内容"); //一行的形式 printf("ILoveYou"); printf("ILoveYou&q…

C语言中的输入输出

在C语言中提供了许多内置的输入输出函数。 标准文件的定义 在C语言中会把所有设备当文件来处理。为了访问键盘和屏幕&#xff0c;以下三个文件会在程序执行时而打开。 标准文件文件指针设备标准输入stdin键盘标准输出stdout屏幕标准错误stderr屏幕 C 语言中的输入/输出通常使用…

C语言的输出

1&#xff1a;%c&#xff0c;%s的区别&#xff1f; %c在C语言中代表字符型格式符&#xff1b;结尾没有\0。 %s在C语言中代表字符串型格式符&#xff1b;结尾有\0。 %c和%s一般用在printf、sprintf等字符串格式化函数中&#xff0c;用于决定格式化参数的数据类型。如printf(&q…

C语言字符串输入输出函数

C语言字符串输入输出函数 putchar()函数getchar()函数puts()函数gets()函数getche()函数getch()函数 putchar()函数 格式: putchar( c )功能&#xff1a;向终端输出一个字符注意&#xff1a;输出的时候不会加回车 getchar()函数 格式&#xff1a;字符型变量&#xff1d;getc…

C语言基本输入输出

文章目录 前言一、数据类型二、基本输出1.printf函数的基本用法2.printf函数的格式化输出A. d 格式符B. c 格式符C. f 格式符D. e 格式符3.putchar函数的基本用法 三、基本输入1.scanf函数的基本用法A. scanf含有非输入控制符B. 多个scanf同时使用 总结 前言 本文主要介绍C语言…

C语言数据输入输出函数

文章目录 前言一、字符输入输出函数1.字符输出函数2.字符输入函数 二、格式输出函数printf()1.格式输出函数的一般形式2.格式控制 三、格式输入函数scanf()1.格式输入函数的一般形式&#xff1b;2.格式控制 四、字符串输入输出函数1.字符串输出函数puts()2.字符串输入函数gets(…

C语言的输入与输出

目录: 格式声明 基本的格式字符 附加的格式说明字符&#xff08;输出&#xff09;和&#xff08;输入&#xff09; 一、格式声明&#xff1a; 格式声明的一般形式为百分号&#xff08;&#xff05;&#xff09;的格式字符。 二、基本的格式字符。 1、%d: 表示以带符号的十进…