java pdfbox读取pdf中的表格
目前遇到了需要解析pdf中表格的需求,遇到无法解析表格中的空格,求助大神帮助!!!
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.8.10</version>
</dependency>
package com.lc.pdfModule.service;
import java.awt.Rectangle;
import java.io.File;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFTextStripperByArea;
import com.lc.common.utils.JsonUtils;
public class PdfText {
public static void main(String[] args) {
fillTemplete();
}
//pdf模板处理
private static void fillTemplete(){
String templetePath = "D:\\201902yb_from_5_to_5_.pdf";
String data = "";
try {
PDDocument document = PDDocument.load(new File(templetePath));
if(document.isEncrypted()){
try{
document.decrypt("");
} catch (Exception e){
}
}
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
stripper.setWordSeparator("|");
// stripper.setLineSeparator("#");
//划定区域
Rectangle rect= new Rectangle(0, 0, 10000, 10000);
stripper.addRegion("area", rect);
List<PDPage> allPages = document.getDocumentCatalog().getAllPages();
int i = 0;
for(PDPage page : allPages){
stripper.extractRegions(page);
i++;
//获取区域的text
data = stripper.getTextForRegion("area");
// data = data.trim();
String[] datas = data.split("\r\n");
//对文本进行分行处理
for( i = 0; i<datas.length; ++i){
String[] str = datas[i].split(" ");
System.out.println(JsonUtils.objToString(str));
}
}
document.close();
} catch (Exception e){
e.printStackTrace();
}
}
}
下图是需要解析的pdf文件中的表格
这是解析后的结果,表格中空格无法识别