一、引入依赖
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>21.11</version>
</dependency>
如果不知道从哪下载,或者无法破解的请参考 Aspose for Java 去除水印和数量限制_aspose 去水印-CSDN博客
二、编写util类
public class AsposeUtil {
private static final Logger log = LoggerFactory.getLogger(AsposeUtil.class);
/**
* 加载证书信息
* @return
*/
private static boolean judgeLicense() {
boolean result = false;
try {
InputStream is = AsposeUtil.class.getClassLoader().getResourceAsStream("License.xml");
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
log.error("Aspose License 文档转换失败!", e);
}
return result;
}
/**
* 将PDF文件中的表格转换为基础数据。
*
* @param path PDF文件的路径。
* @throws Exception 如果没有有效的许可证或转换过程中遇到错误,则抛出异常。
*/
public static void pdfToData(String path) throws Exception {
if (!judgeLicense()) {
throw new Exception();
}
// 加载PDF文件
Document pdfDocument = new Document(path);
// 创建表格文本提取对象
TextAbsorber textAbsorber = new TextAbsorber();
// 创建表格文本提取对象
TableAbsorber absorber = new TableAbsorber();
// 设置提取选项,可选
PageCollection pages = pdfDocument.getPages();
int pagesCount = 10;// pages.size();
for (int i = 1; i <= pagesCount; i++) {
Page page = pages.get_Item(i);
absorber.visit(page);
}
// 获取提取到的表格列表
List<AbsorbedTable> tables = absorber.getTableList();
// 遍历提取到的所有表格
for (int i = 0; i < tables.size(); i++) {
AbsorbedTable table = tables.get(i);
List<AbsorbedRow> rowList = table.getRowList();
// 遍历表格行
for (AbsorbedRow row : rowList) {
List<AbsorbedCell> cellList = row.getCellList();
// 遍历表格行中的单元格
for (AbsorbedCell cell : cellList) {
// 在提取的文本中根据单元格的位置提取相应的内容
TextFragmentCollection textFragments = cell.getTextFragments();
StringBuilder sb=new StringBuilder();
for (TextFragment textFragment:textFragments){
sb.append(textFragment.getText());
}
// 输出单元格文本
System.out.print(sb.toString() + "\t");
}
System.out.println();
}
}
}
}
三、进行测试
public class OfficePdfTest {
public static void main(String[] args) throws Exception {
String path="D:\\temp\\1.pdf";
AsposeUtil.pdfToData(path);
}
}
注意:这种操作只能识别出pdf的表格未进行单元格合并的情况,如果pdf中的单元格进行了合并,则会导致数据混乱
没有回复内容