pom
<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories><!-- https://mvnrepository.com/artifact/e-iceblue/spire.pdf.free --><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>5.1.0</version></dependency><!--操作word文档内容--><dependency><groupId>e-iceblue</groupId><artifactId>spire.doc.free</artifactId><version>5.2.0</version></dependency>
pdf解析
// 创建一个PdfDocument对象PdfDocument pdf = new PdfDocument();// 加载一个PDF文档pdf.loadFromFile("XXX.pdf");// 创建一个PdfTableExtractor对象PdfTableExtractor extractor = new PdfTableExtractor(pdf);StringBuilder sb = new StringBuilder();// 从每一页中提取表格for (int pageIndex = 0; pageIndex < pdf.getPages().getCount(); pageIndex++) {if(StringUtils.isNotBlank(sb.toString())){sb.append("\n");}PdfTable[] tables = extractor.extractTable(pageIndex);// 如果表格不为空,则遍历表格if (tables != null) {for (int tableIndex = 0; tableIndex < tables.length; tableIndex++) {PdfTable table = tables[tableIndex];// 创建一个StringBuilder对象StringBuilder tableText = new StringBuilder();// 遍历行和列for (int rowIndex = 0; rowIndex < table.getRowCount(); rowIndex++) {for (int colIndex = 0; colIndex < table.getColumnCount(); colIndex++) {// 获取单元格文本并移除换行符String cellText = table.getText(rowIndex, colIndex);cellText = cellText.replaceAll("\\r|\\n", "");if (colIndex < table.getColumnCount() - 1) {tableText.append(cellText).append("\t");} else {tableText.append(cellText).append("\n");}}}sb.append(tableText);}}}
注意:如果还需要用到doc,必须要和pdf的pom版本兼容,例如上面的5.1.0和5.2.0。因为是免费版,所以只能解析10页数据,如果超过10页,可以去查找如何摆脱限制,这里不在赘述。
该案例只是将pdf中的表格内容解析(每个表格为一块数据),解析完后,可以对字符串做数据业务处理。