[Java 实现pdf转excel ]

news/2024/11/8 2:56:18/

目录

前言:

Apache POI和pdfbox库实现pdf转excel的详细代码实现:

综上所述:

Java实现iText pdf转excel详细代码实现

综上所述:

依赖:


前言:

  笔记而已

Apache POI和pdfbox库实现pdf转excel的详细代码实现:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class PdfToExcelConverter {public static void main(String[] args) {String pdfFilePath = "sample.pdf";String excelFilePath = "output.xlsx";try {String pdfText = getPdfText(pdfFilePath);writeTextToExcel(pdfText, excelFilePath);System.out.println("PDF successfully converted to Excel!");} catch (IOException e) {e.printStackTrace();}}private static String getPdfText(String pdfFilePath) throws IOException {PDDocument pdfDoc = PDDocument.load(new FileInputStream(new File(pdfFilePath)));PDFTextStripper stripper = new PDFTextStripper();String pdfText = stripper.getText(pdfDoc);pdfDoc.close();return pdfText;}private static void writeTextToExcel(String pdfText, String excelFilePath) throws IOException {boolean isXlsx = excelFilePath.endsWith(".xlsx");Workbook workbook = isXlsx ? new XSSFWorkbook() : new HSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");String[] lines = pdfText.split("\n");int rowIndex = 0;for (String line : lines) {Row row = sheet.createRow(rowIndex++);String[] cells = line.split("	");int cellIndex = 0;for (String cellValue : cells) {Cell cell = row.createCell(cellIndex++);cell.setCellValue(cellValue);}}workbook.write(new File(excelFilePath));workbook.close();}}

综上所述:

  • 通过pdfbox库获取pdf文件的文本内容。
  • 使用Apache POI创建一个Excel工作簿对象和一个工作表对象。
  • 将pdf文本内容逐行添加到工作表中的单元格中。
  • 将工作簿写入Excel文件中。

Java实现iText pdf转excel详细代码实现

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.itextpdf.text.pdf.parser.Vector;
import com.itextpdf.text.pdf.parser.VectorParserListener;
import com.itextpdf.text.pdf.parser.VectorRenderFilter;
import com.itextpdf.text.pdf.parser.TextRenderInfo;
import com.itextpdf.text.pdf.parser.RenderFilter;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.parser.PdfContentStreamProcessor;
import com.itextpdf.text.pdf.parser.PdfRenderListener;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;
import com.itextpdf.text.pdf.parser.TextRenderInfo;
import com.itextpdf.text.pdf.parser.Vector;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class PdfToExcelConverter {public static void main(String[] args) {try {String pdfFilePath = "sample.pdf";String excelFilePath = "output.xlsx";// 读取PDF文件PdfReader reader = new PdfReader(new FileInputStream(pdfFilePath));PdfContentStreamProcessor processor = new PdfContentStreamProcessor(new RenderListener() {private List<String> lines = new ArrayList<>();private String currentLine = "";private boolean newLine = false;@Overridepublic void renderText(TextRenderInfo renderInfo) {String text = renderInfo.getText();Vector baseline = renderInfo.getBaseline().getStartPoint();float x = baseline.get(Vector.I1);float y = baseline.get(Vector.I2);if (newLine || currentLine.isEmpty()) {currentLine = text;newLine = false;} else {currentLine += "	" + text;}if (text.endsWith("\n")) {currentLine = currentLine.trim();if (!currentLine.isEmpty()) {lines.add(currentLine);}currentLine = "";newLine = true;}}@Overridepublic void renderImage(ImageRenderInfo renderInfo) {}@Overridepublic void endTextBlock() {}@Overridepublic void beginTextBlock() {}});for (int i = 1; i <= reader.getNumberOfPages(); i++) {processor.processContent(reader.getPageContent(i), reader.getPageResources(i));}reader.close();// 将读取的内容写入Excel文件Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet();int rowIndex = 0;for (String line : lines) {Row row = sheet.createRow(rowIndex++);String[] cells = line.split("	");int cellIndex = 0;for (String cellValue : cells) {Cell cell = row.createCell(cellIndex++);cell.setCellValue(cellValue);}}FileOutputStream outputStream = new FileOutputStream(new File(excelFilePath));workbook.write(outputStream);workbook.close();System.out.println("PDF successfully converted to Excel!");} catch (IOException e) {e.printStackTrace();}}
}

综上所述:

  • 使用iText库的 PdfReader 类读取PDF文件,使用 PdfContentStreamProcessor 类解析PDF内容,并将其转换为字符串。
  • 将解析得到的字符串逐行添加到Excel工作表中的单元格中。
  • 将工作簿写入Excel文件中。

需要注意的是,iText库的解析功能支持多种PDF格式和语言,也可以处理文本、表格、图像、链接等内容。因此,使用iText库可以更加灵活地处理PDF文件的内容。

依赖:

在你的项目中使用iText库,需要在你的项目中引入以下依赖:   根据版本情况来
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>在你的项目中使用Apache POI库,需要在你的项目中引入以下依赖:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.0.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>5.0.0</version>
</dependency>


http://www.ppmy.cn/news/355845.html

相关文章

联想thinkpadE14 vm蓝屏问题解决

公司新发了办公电脑&#xff0c;配置如下&#xff1a; 安装vm必定蓝屏&#xff0c;百度了发现有如下解决办法&#xff1a; 1.新建vm.cmd,内容如下&#xff0c;用管理员执行 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor…

联想B460加装MU301

默认情况下&#xff0c;B460是不能使用MU301的&#xff0c;所以我们需要把MU301刷成MU350。 但是插上模块后开不了机&#xff0c;要怎样刷呢&#xff1f;很简单&#xff0c;热插拔&#xff01; 不要惊讶&#xff0c;MINI PCI-E标准是支持热插拔的。只要手上不带电&#xff0c;在…

联想计算机不能使用ghost,联想电脑不能GHOST的解决方法

联想电脑不能GHOST的解决方法 如果将联想电脑的bios恢复成默认设置,那么ghost将在用户确定备份c盘时死机。无论怎么试都这样。 解决方法1: 开机按住del进(awardbios cmos)——integrate peripherals——via onchip ide device——ide hdd block mode将(enabled改为disabled)—…

搜索词联想功能实现方案

需求背景&#xff1a; 实现搜索框的搜索联想功能&#xff0c;当输入框输入字符时候&#xff0c;立刻进行网络请求&#xff0c;将相关推荐展示在下方的列表中&#xff0c;要求每次展示的一定是当前最新输入的内容的推荐词。 实现思路&#xff1a; 展示搜索词联想需要满足如下…

联想服务器控制口登录地址_联想服务器登录管理界面 联想服务器客服

联想服务器怎么进bio? 首先打开电脑。当电脑屏幕上出现“联想”屏幕时,左下角会出现“按F2设置”字样。此时,快速按键盘上的“F2”键进入BIOS设置,如下图所示 联想如何进入BIOS 下一步,电脑将进入硬件BIOS设置界面,如下图所示 联想如何进入BIOS 当我们设置完电脑的BIOS后…

联想E475笔记本进入BOIS设置U盘启动顺序、

U大师装机 1、长按F1进入BOIS程序设置界面 2、找到 Security ---Secure Boot 改为Disabled 3、-----Startup --UEFI / Legacy Boot 改为 Legacy 0nly 4、----Startup ---将USB HDD U盘启动顺序 改为第一位 5、插入U盘 进入U大师装机系统 进入ISOS文件夹 选择镜像…

联想E4430 蓝屏代码0x0000007B

开机使用QQ没多久, 系统直接卡着不动了, 等了几分钟依然没任何反应, 就按住开机键进行强制关机, 结果直接蓝屏! 蓝屏代码: 0x0000007B 解决方案: 1. 开机后, 在出现联想图标后, 按回车键interrupt启动顺序, 按F1进入BIOS设置 2. 在config -> serial ATA选项中, 将模式由A…

框架篇面试详解

spring AOP AOP称为面向切面编程&#xff0c;用于将那些与业务无关&#xff0c;但却对多个对象产生影响的公共行为和逻辑&#xff0c;抽取并封装成为一个可重用的模块&#xff0c;这个模块被命名为“切面”&#xff08;Aspect&#xff09;&#xff0c;减少系统中的重复代码&am…