pdf 解析的开源代码较多,一般常用的 spirePdf 、pdfbox 等。下面就对这两种类解析方式的demo附上,以便温故而知新~
首先看下 pdfbox 的demo
package com.company.PDF;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.FileInputStream;
public class pdfUtil {
public static void main(String[] args) throws Exception{
PDDocument document = PDDocument.load(new FileInputStream("D:\\a.pdf"));
document.getClass();
//使用PDFTextStripper 工具
PDFTextStripper tStripper = new PDFTextStripper();
//设置文本排序,有规则输出
tStripper.setSortByPosition(true);
//获取所有文字信息
String info = tStripper.getText(document);
String lines[] = info.split("\\r?\\n");
System.out.println(info);
}
}
注意这种解析出来的去除了多余的空格,将数据按行解析
下面看下 spirePdf的demo
package com.company.PDF;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class SpirePdfUtil {
public static void main(String[] args) {
String content = "";
// 创建PdfDocument实例
PdfDocument doc = new PdfDocument();
// 加载PDF文件
doc.loadFromFile("D:\\a.pdf");
// 创建StringBuilder实例
StringBuilder sb = new StringBuilder();
PdfPageBase page;
// 遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象
for (int i = 0; i < doc.getPages().getCount(); i++) {
page = doc.getPages().get(i);
sb.append(page.extractText(true));
}
content = sb.toString();
System.out.println(content);
}
}
这种解析出来的文本会保持空格 ,数据也是按行解析
当数据解析后,我们可以使用换行符将文本 String lines[] = content.split(“\r?\n”); 分割成字符串数组,然后对每一行进行处理。当我们解析的文本不是很规范时,往往需要根据字段名称 去定位 具体取值,这时候我们可以用 spirePdf 去解析。另外这两个工具类还有很多其他强大的功能,可以参考具体api。
相关jar包,点击 这里 下载!