一、引言
  在数字化的浪潮中,PDF文件格式以其稳定性和兼容性成为了信息交流的宠儿。然而,当我们需要编辑这些PDF文件时,往往会遇到各种难题。今天,我要和大家分享的,是如何将PDF文件轻松转换成Word和Excel格式,让编辑变得轻而易举。

二、技术分享
  首先,让我们揭开PDF转换技术的神秘面纱。PDF文件以其固定布局著称,这既是它的优点,也是它在编辑时的难点。要将PDF转换为Word或Excel,我们需要解析PDF的布局和内容,并将其重新格式化为Word文档或Excel表格。这涉及到复杂的文本识别和格式转换技术。

1,PDF转Word
  

from pdf2docx import Converter

# pdf转word方法
def pdf_to_word(pdf_path, word_path=None, page_nums=None):
'''
@方法名称: pdf转word
@中文注释: pdf转word
@入参:
@param pdf_path str pdf文件路径
@param page_nums str 页码序号
@出参:
@返回状态:
@return 0 失败或异常
@return 1 成功
@返回错误码
@返回错误信息
@param doc_file str word文件名
@作 者: PandaCode辉
@weixin公众号: PandaCode辉
@创建时间: 2024-12-17
@使用范例: pdf_to_word('test.pdf')
'''
global cv
result_dict = {}
try:
if not type(pdf_path) is str:
result_dict["error_code"] = "111111"
result_dict["error_msg"] = "pdf文件路径参数类型错误,不为字符串"
return result_dict
# 检查PDF文件是否存在
if not os.path.isfile(pdf_path):
result_dict["error_code"] = "999999"
result_dict["error_msg"] = f"PDF文件未找到: {pdf_path}"
return result_dict start_time = time.time() if not word_path:
# 使用os.path.basename()获取文件名
file_path = os.path.dirname(pdf_path)
# 使用os.path.basename()获取文件名
file_name = os.path.basename(pdf_path)
# 提取文件名,去除文件后缀
file_name = file_name.split('.')[0]
# print(file_name)
# word文件名+路径
word_path = os.path.join(file_path, f'{file_name}.docx')
# print(word_path) # 初始化转换器
cv = Converter(pdf_path)
# 转换整本PDF或指定页码
if page_nums:
# 解析页码参数
pages = []
for part in page_nums.split(','):
if '-' in part:
start, end = part.split('-')
pages.extend(range(int(start) - 1, int(end)))
else:
pages.append(int(part) - 1)
# 转换指定页码
cv.convert(docx_filename=word_path, pages=pages)
else:
# 转换整本PDF
cv.convert(docx_filename=word_path, start=0) # 保存为Word文档
cv.close() # 识别时间
end_time = time.time()
# 计算耗时差,单位毫秒
recognize_time = (end_time - start_time) * 1000
# 保留2位小数
recognize_time = round(recognize_time, 2)
# print('处理时间:' + str(recognize_time) + '毫秒')
result_dict["recognize_time"] = recognize_time
result_dict["error_code"] = "000000"
result_dict["error_msg"] = "pdf转word成功"
# 使用os.path.basename()获取文件名
word_file_name = os.path.basename(word_path)
# 打印结果
# print("文件名:", word_file_name)
result_dict["filename"] = word_file_name result_dict["file_size_mb"] = file_size_mb return result_dict except Exception as e:
cv.close()
print("pdf转word异常," + str(e))
result_dict["error_code"] = "999999"
result_dict["error_msg"] = "PDF到Word转换过程中发生错误," + str(e)
return result_dict

  

2,PDF转Excel
  

from docx import Document
import pandas as pd

# pdf转excel方法
def pdf_to_excel(pdf_path, xlsx_path=None, page_nums=None):
'''
@方法名称: pdf转excel
@中文注释: pdf转excel
@入参:
@param pdf_path str pdf文件路径
@param page_nums str 页码序号
@出参:
@返回状态:
@return 0 失败或异常
@return 1 成功
@返回错误码
@返回错误信息
@param xlsx_file str excel文件名
@作 者: PandaCode辉
@weixin公众号: PandaCode辉
@创建时间: 2025-01-06
@使用范例: pdf_to_excel('test.pdf')
'''
global cv
result_dict = {}
try:
if not type(pdf_path) is str:
result_dict["error_code"] = "111111"
result_dict["error_msg"] = "pdf文件路径参数类型错误,不为字符串"
return result_dict
# 检查PDF文件是否存在
if not os.path.isfile(pdf_path):
result_dict["error_code"] = "999999"
result_dict["error_msg"] = f"PDF文件未找到: {pdf_path}"
return result_dict start_time = time.time() # 使用os.path.basename()获取文件名
file_path = os.path.dirname(pdf_path)
# 使用os.path.basename()获取文件名
file_name = os.path.basename(pdf_path)
# 提取文件名,去除文件后缀
file_name = file_name.split('.')[0]
# print(file_name)
# word文件名+路径
word_path = os.path.join(file_path, f'{file_name}.docx')
# print(word_path)
if not xlsx_path:
# xlsx文件名+路径
xlsx_path = os.path.join(file_path, f'{file_name}.xlsx')
# print(xlsx_path) # 第一步,先将pdf转成doc文档
rsp_dict = pdf_to_word(pdf_path, page_nums=page_nums)
if rsp_dict["error_code"] == "000000":
# 第二步,再读取doc文档,转成xlsx文档
# 打开Word文档
doc = Document(word_path) if len(doc.tables) < 1:
result_dict["error_code"] = "999999"
result_dict["error_msg"] = "PDF文件未找到表格内容,无法转成xlsx文档."
return result_dict # 创建一个Excel writer对象
with pd.ExcelWriter(xlsx_path, engine='openpyxl') as writer: # 遍历文档中的所有表格
for i, table in enumerate(doc.tables, start=1):
# 创建一个空的DataFrame来存储表格数据
data = [] # 遍历表格中的所有行
for row in table.rows:
# 遍历行中的所有单元格
row_data = []
for cell in row.cells:
row_data.append(cell.text)
data.append(row_data) # 将数据转换为DataFrame
df = pd.DataFrame(data) # 将DataFrame保存到Excel的不同工作表中
sheet_name = f"Table_{i}"
df.to_excel(writer, sheet_name=sheet_name, index=False, header=False) # print(f"转换完成,结果保存在{xlsx_path}中。")
else:
result_dict["error_code"] = rsp_dict["error_code"]
result_dict["error_msg"] = rsp_dict["error_msg"]
return result_dict # 识别时间
end_time = time.time()
# 计算耗时差,单位毫秒
recognize_time = (end_time - start_time) * 1000
# 保留2位小数
recognize_time = round(recognize_time, 2)
# print('处理时间:' + str(recognize_time) + '毫秒')
result_dict["recognize_time"] = recognize_time
result_dict["error_code"] = "000000"
result_dict["error_msg"] = "pdf转excel成功"
# 使用os.path.basename()获取文件名
xlsx_file_name = os.path.basename(xlsx_path)
result_dict["filename"] = xlsx_file_name return result_dict except Exception as e:
print("pdf转excel异常," + str(e))
result_dict["error_code"] = "999999"
result_dict["error_msg"] = "PDF到excel转换过程中发生错误," + str(e)
return result_dict

  

 

三、我的小程序工具
  为了让不擅长编程的用户也能轻松完成这一转换,我开发了一个小程序工具。这个工具集成了强大的PDF解析和转换功能,用户只需上传PDF文件,选择转换格式,即可快速得到Word或Excel文件。

1,PDF转Word
  PDF转Word是小程序的明星功能之一。它不仅能够精确地保留原文的格式和布局,还能识别图片和表格,确保转换后的Word文档与原PDF高度一致。这对于需要编辑PDF内容的用户来说,无疑是一大福音。

 右上角有个反馈按钮,如果你在使用小程序的过程有什么问题,可以即时向我反馈,或者有好的功能建议,也可以提出,有空有能力我会尽量满足大家的需求。

2,PDF转Excel
  另一个实用的功能是PDF转Excel。这项功能特别适合那些包含大量数据或表格的PDF文件。通过识别和转换,PDF中的数据能够完美地呈现在Excel表格中,方便用户进行数据分析和处理。

 右上角有个反馈按钮,如果你在使用小程序的过程有什么问题,可以即时向我反馈,或者有好的功能建议,也可以提出,有空有能力我会尽量满足大家的需求。

3,扫描下方二维码立即体验,开启高效便捷的新生活!

四、目标群体
  这个小程序工具主要面向那些不擅长编程,但又经常需要处理PDF文件的用户。无论是学生、教师、办公室工作人员,还是其他任何需要编辑PDF文件的人,这个工具都能为他们提供极大的便利。

五、结尾总结
  在数字化的今天,PDF文件转换是一项非常实用的技能。通过我的小程序工具,即使是不懂编程的用户也能轻松完成PDF到Word和Excel的转换。这不仅提高了工作效率,也让文档处理变得更加简单愉快。

六、互动提问
  如果你对PDF转换有任何疑问,或者想要了解更多关于这个小程序工具的信息,欢迎在评论区留言提问。我会尽力回答每一个问题,希望能帮助到大家。
  如果你在使用小程序的过程有什么问题,可以即时向我反馈,或者有好的功能建议,也可以提出,有空有能力我会尽量满足大家的需求。

PDF转换:从Word到Excel的更多相关文章

  1. 美的PDF转换成Word转换器完全免费

    下载地址:百度网盘提取码:02ap 安装破解步骤:先安装主程序,末尾是full结尾的,安装完成后不要打开软件,然后接着安装破解补丁,即可破解成功! 需要的老铁们直接拿去用吧,亲测好用!有配套的功能强大 ...

  2. ABBYY把pdf转换成word的方法

    有时候我们在网上下载的资料文献是PDF格式文档,遇到喜欢的字句总忍不住想要收藏起来,但是PDF文档不同于普通的Word文档可以直接进行复制粘贴,需要下载安装相关的编辑工具,才能对文字内容进行编辑.倒不 ...

  3. pdf转换成word转换器免费版

    在平时的办公中,我们只需要有一款比较好用的pdf转换成word转换器,就能提高我们的工作效率,但是国内外的pdf转换成word转换器应该怎么选呢?小编因为是文职工作者,所以在日常的实践中选出了ABBY ...

  4. PDF转换成Word,ppt转换成word

    pdf与word我没找到直接转换的方式,不过可以用间接方式嘛! pdf ==>picture ==>word!ppt转word的原理也是先把ppt转成图片,再把图片插入word! 先准备好 ...

  5. ADOBE READER把PDF转换成WORD教程

    目前国外很多软件的支持信息都使用PDF方式进行发布,如果没有Adobe  Reader,无法查看其内容,如果没有相关的编辑软件又无法编辑PDF文件.转换为DOC格式则可以实现编辑功能.尽管有些软件也可 ...

  6. 推荐几个在线PDF转化成Word网站

    不想安装专业的pdf转换成word软件,希望大家喜欢!昨天用的https://www.pdftoword.com/# 成功搞定! 1.Free-PDFtoWord 在线转换工具: 地址:http:// ...

  7. 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法

    1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...

  8. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  9. 如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件

    1. 描述 PDF 文件是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式.PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即 ...

  10. 一款免费支持PDF、word、excel、PPT、jpeg之间互转线上软件

    偶然发现的一款免费支持PDF.word.excel.PPT.jpeg之间互转,支持合并pdf.加密解密PDF的线上软件,首先声明,不是广告党,我自己试用过,确实是目前我用过最好用的,如果有朋友有更好的 ...

随机推荐

  1. Qt编写ERP库存库房发货电子看板

    一.前言 有了之前可视化大屏电子看板系统的经验,要做这个ERP库存库房发货电子看板,可以说是水到渠成轻车熟路,技术难度比之前做过的各种大屏系统的子模块都要简单.由于库存库房发货数据的特殊性,基本上都是 ...

  2. error C2664: “HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)”: 无法将参数 1 从“const _Elem *”转换为“LPCWSTR”

    Error 30 error C2664: 'HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)' : 不能将参数 1 从"char [260 ...

  3. Github无法访问解决办法

    Github无法访问解决办法 问题描述:网速正常,但是github无法访问. 解决办法: 1.因为Github网址域名更换.查询网站https://ipchaxun.com/ ,例如输入github. ...

  4. 万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践

    本文由作者"阿宝哥"分享,原题"你不知道的 WebSocket",有修订和改动. 1.引言 本文将从基本概念.技术原理.常见易错常识.动手实践等多个方面入手,万 ...

  5. 前端学习openLayers配合vue3(加载线上数据源)

    现在我们学习一下加载网上的线上数据再加上点矢量图层,紧接着上一步 关键代码 layers: [ //瓦片图层source第三方,或者自带的,地图的底层 new TileLayer({ // sourc ...

  6. 压力测试-jmeter-copy

    1. 场景描述 新申请的服务器,要压测下python算法程序最多能执行多少条数据,有几年没用压力测试工具-jmeter了,重新下载了最新版本,记录下,也希望能帮到准备使用jmeter做压测的朋友. 2 ...

  7. redis-总结列表

    基础 启动命令 redis-server kconfig/redis.conf 通过指定的配置文件启动服务(kconfig/redis.conf是复制过来的) redis-cli -p 6379 使用 ...

  8. 学Shiro完结版-1

    第一章 Shiro简介--<跟我学Shiro> 1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spr ...

  9. RocketMQ -- offset管理

    正文首先来明确一下 Offset 的含义, RocketMQ 中, 一 种类型的消息会放到 一 个 Topic 里,为了能够并行, 一般一个 Topic 会有多个 Message Queue (也可以 ...

  10. ZUC-生成随机序列

    问题 ZUC国标上的三个例子生成随机序列 例子1 例子2 例子3 代码1 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #inclu ...