使用Java Selenium导出PDF/图片原格式到Excel/Word及单单元格问题咨询
PDF/图片内容导出到Excel/Word问题解决方案
现有代码问题排查
你当前代码直接将PDFTextStripper提取到的完整PDF文本字符串写入了第0行第1个单元格,没有对文本做结构化拆分,因此所有内容都会存入同一个单元格。
现有功能修复代码
以下是按行拆分PDF文本、每行对应Excel一行的修改后代码:
public void readPDFfromintranet() throws Exception { FileInputStream fis = new FileInputStream(filein); PDDocument pdfdocument = PDDocument.load(fis); int count = pdfdocument.getNumberOfPages(); System.out.println(count); PDFTextStripper textstriper = new PDFTextStripper(); String doctext = textstriper.getText(pdfdocument); System.out.println(doctext); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); // 按换行符拆分PDF文本为多行 String[] textLines = doctext.split("\\r?\\n"); for (int i = 0; i < textLines.length; i++) { // 每行创建对应Excel行 HSSFRow row = sheet.createRow(i); // 如果需要按列拆分,可再对textLines[i]按制表符/多空格拆分写入不同单元格 row.createCell(0).setCellValue(textLines[i]); } FileOutputStream fileout = new FileOutputStream("D:\\Raghavendra\\Isolve\\Output.xls"); workbook.write(fileout); workbook.close(); pdfdocument.close(); fis.close(); }
如果你的PDF包含表格,需要进一步保留表格行列格式,可以改用区域提取工具识别表格结构,将识别到的每行数据对应Excel的行,每列数据对应Excel的单元格即可。
全场景实现方案
PDF内容按原始格式导出
- 导出到Excel:如果需要保留PDF原有排版、表格结构,可使用区域文本提取工具定位内容位置,按PDF的坐标对应Excel的行列位置写入;表格内容可通过结构化识别工具提取为二维数组后直接写入Excel。
- 导出到Word:使用Apache POI的XWPF组件处理Word文档,提取到的PDF段落按原格式设置Word段落样式,识别到的表格直接生成Word对应表格即可。
图片内容按原始格式导出
图片中的文本、表格需要先通过OCR工具做结构化识别,提取出段落、表格结构数据后,再对应写入Excel或Word的对应位置,即可保留原始排版。
注:Selenium是浏览器自动化工具,仅负责从网页下载PDF/图片的操作环节,本身不承担文件内容解析工作,解析环节用上述PDF处理、OCR工具即可。
内容的提问来源于stack exchange,提问作者Raghavendra
相关产品推荐
相关产品推荐

