PDF文件里有表格及数据,用Adobe打开PDF时候表格里的数据可以选中(看起来不是图片),然后想借助用word打开PDF再把word里的数据内容复制到Excel里,现在发现用word打开PDF之后原来PDF里数据可以选中的表格在word文档里变成了图片。
我本来想用VBA调用word打开PDF文件,然后将word里的内容再复制到excel里。
不知道为什么说word文档里的表格变成了图片。
PDF可选中的表格在word里变成图片了
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
要解决这个问题,我们需要分两步走:首先从PDF中提取文本,然后将这些文本粘贴到Excel中。由于Word在处理PDF时可能将表格转换为图片,我们不依赖Word,而是使用一个名为PDFBox的Java库来读取PDF中的文本。这里是一个Python脚本示例,它使用Pyjnius库与Java交互,因为PDFBox是Java库。确保已经安装了
pyjnius
和jupyter-java-talk
库:!pip install pyjnius jupyter-java-talk
接下来,我们将编写一个函数来执行所需的操作。注意,你需要提供PDF文件的路径,并且需要在本地环境中安装PDFBox库。如果你没有安装,可以在项目的src/main/resources目录下创建一个名为META-INF/services的目录,并在这个目录下创建一个名为org.apache.pdfbox.pdmodel.PDDocumentFactory的文件,内容为net.sf.jasperreports.engine.util.JRApachePdfBoxParser\n。
import os from jnius import autoclass, cast from io import StringIO # 加载必要的Java类 JString = autoclass('java.lang.String') PDDocument = autoclass('org.apache.pdfbox.pdmodel.PDDocument') PDFTextStripper = autoclass('org.apache.pdfbox.text.PDFTextStripper') def extract_text_from_pdf(pdf_path): # 打开PDF文件 document = PDDocument.load(JString(pdf_path)) # 创建PDFTextStripper实例 pdfStripper = PDFTextStripper() # 设置一些选项,使文本更易解析 pdfStripper.setSortByPosition(True) pdfStripper.setStartPage(1) pdfStripper.setEndPage(document.getNumberOfPages()) # 提取所有文本并将其存储在一个字符串中 text = pdfStripper.getText(document) # 关闭PDF文档 document.close() return text def copy_to_excel(extracted_text): # 假设你已经有了一个活跃的Excel应用实例 excel_app 和一个工作簿 workbook # 例如,你可以使用 win32com.client 来实现这一步 # excel_app = win32com.client.Dispatch("Excel.Application") # workbook = excel_app.Workbooks.Add() # 将提取的文本分割成行 lines = extracted_text.split("\n") # 在工作表的第一列开始写入 row_num = 1 col_num = 1 for line in lines: # 写入每一行 workbook.Sheets[1].Cells(row_num, col_num).Value = line row_num += 1 # 如果你想自动调整列宽以适应内容 workbook.Sheets[1].Columns.AutoFit() # 可选:保存并关闭Excel # workbook.SaveAs("output.xlsx") # excel_app.Quit() # 使用提供的PDF路径 pdf_path = "your_pdf_file_path_here.pdf" extracted_text = extract_text_from_pdf(pdf_path) copy_to_excel(extracted_text)
这个脚本会从PDF中提取文本,并将其写入新的Excel工作表。请确保替换
your_pdf_file_path_here.pdf
为你的PDF文件的实际路径。为了运行这段代码,你可能需要配置Java环境变量,以便Pyjnius能找到Java。另外,如果使用Windows,还需要安装Microsoft Office和相应的COM接口支持。注意:此方法不会保留原始表格的结构,而是简单地将文本按行分开。如果你需要保持表格的结构,你可能需要使用更复杂的方法,比如识别PDF中的表格布局,这通常涉及到OCR技术,这超出了当前问题的范围。在这种情况下,你可能需要查找专门处理PDF表格的第三方库,如tabula-py等。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
- ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
- ¥15 clousx6整点报时指令怎么写
- ¥30 远程帮我安装软件及库文件
- ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
- ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
- ¥15 Arduino的wifi连接,如何关闭低功耗模式?
- ¥15 Android studio 无法定位adb是什么问题?
- ¥15 C#连接不上服务器,
- ¥15 angular项目错误