一、引言
  在数字化的浪潮中,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. 【Windows 开发环境配置——C++ 篇】VSCode+MSVC/MinGW/Clangd/LLDB+Xmake

    环境安装 Microsoft Visual Studio 这里以Visual Studio 2022为例,在Visual Studio 2022 版本发行说明 | Microsoft Learn选择所 ...

  2. 在CLion中如何为CMakeLists.txt文件添加第三方依赖库

    cmake_minimum_required(VERSION 3.5)project(ImageBasedModellingEdu)set(CMAKE_MODULE_PATH "${CMAK ...

  3. 即时通讯技术文集(第7期):长连接网关、P2P等 [共10篇]

    为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第7 期. [- 1 -] 长连接网关技术专题(二):知乎千万级并发的高性能长连接网关技术实践 [ ...

  4. Python 并发编程实战:优雅地使用 concurrent.futures

    在 Python 多线程编程中,concurrent.futures 模块提供了一个高层的接口来异步执行可调用对象.今天,我们将通过一个循序渐进的案例,深入了解如何使用这个强大的工具. 从一个模拟场景 ...

  5. Solution -「LNOI 2022」「洛谷 P8367」盒

    \(\mathscr{Desription}\)   Link.   有 \(n\) 个盒子排成一排,第 \(i\) 个盒子内有 \(a_i\) 个球.球可以在相邻盒子间传递,\(i\) 与 \(i+ ...

  6. Solution Set -「OurOJ Contest #2587」浅写

    \(\mathscr A\sim\)「OurOJ #47030」_   Link & Submission & Tags:「A.DP-计数 DP」「A.数学-Stirling 数/反演 ...

  7. java多线程与线程池-copy

    1. 场景描述 以前多线程也常用,这次因需再页面上用到多线程,如下图,总结下,有需要的朋友可以参考下. 2. 解决方案 2.1 线程池概念 线程池官方定义不说了,通俗说下:池子的概念,事先(预定义)创 ...

  8. python的类机制

    python的类机制 参考:python面向对象 概念 方法重写/覆盖:若从父类继承的方法不能满足子类的需求,可以对其进行改写. 类变量:在实例化对象中是公用的,定义在类中,且在函数体之外,通常不作为 ...

  9. 218:解释LINUX文件系统权限

  10. 路由协议过程概述--ospf-01

    路由是数据通信网络中最基本的要素.路由信息就是指导报文发送的路径信息,路由的过程就是报文转发的过程. 根据路由目的地的不同,路由可划分为: 网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或 ...