添加依赖
<dependency> <groupId>com.github.rostrovsky</groupId> <artifactId>pdf-table</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.27</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.27</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-tools</artifactId> <version>2.0.27</version> </dependency>
示例代码
public static void main(String[] args) throws IOException { try { // 加载pdf文件 PDDocument pdfDoc = PDDocument.load(new File("D:\\test\\1.pdf")); // 创建表格解析器 PdfTableReader reader = new PdfTableReader(); // 根据传入的文档和开始结束页码来解析表格 ,一个表格分页了,会变成多个表格对象 List<ParsedTablePage> tablePages = reader.parsePdfTablePages(pdfDoc, 1, pdfDoc.getNumberOfPages()); // 创建ObjectMapper实例 ObjectMapper objectMapper = new ObjectMapper(); // 设置输出格式化 objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // 创建目录 File outputDir = new File("D:\\test"); outputDir.mkdirs(); // 创建文件 File outputFile = new File(outputDir, "tables.txt"); FileWriter writer = new FileWriter(outputFile); // 循环表格 for (int i = 0; i < tablePages.size(); i++) { ParsedTablePage tablePage = tablePages.get(i); // 循环行 List<ParsedTablePage.ParsedTableRow> rows = tablePage.getRows(); for (ParsedTablePage.ParsedTableRow row : rows) { // 输出每列数据的JSON格式 String json = objectMapper.writeValueAsString(row.getCells()); writer.write(json + "\n"); } } writer.close(); pdfDoc.close(); System.out.println("导出完成!"); } catch (IOException e) { e.printStackTrace(); } }
先运行代码,会报错
根据提示下载OpenCV版本
如报错:no opencv_java343 。。。。下载3.4.3版本
下载opencv
-
安装,然后到安装目录 opencv/build/java/x64,复制 dll 放到 C:/windows/system32 目录下
-
重新启动程序,运行成功