java解析PDF文件,并获取到指定数据(升级版)
来源:互联网 发布:java生成条形码zxing 编辑:程序博客网 时间:2024/06/16 21:45
package getOtherByPDF;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
import sun.applet.AppletIllegalArgumentException;
import sun.net.www.http.HttpClient;
/* 2017.11.24 ---》 2017.11.27更新内容
* 解析pdf文件中的编号
* */
public class getInfoFromPDF3 {
private static String result = null; // 用来保存pdf文件中的信息
private static FileInputStream is = null; // 输入流
private static PDDocument document = null;
//获取pdf文件文件中全部信息
public static String getAllInfoFromPDF(String pdfFilePath){
String result = null;
FileInputStream is = null;
PDDocument document = null;
try {
is = new FileInputStream(pdfFilePath);
PDFParser parser = new PDFParser(is);
parser.parse();
document = parser.getPDDocument();
PDFTextStripper stripper = new PDFTextStripper();
result = stripper.getText(document);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (document != null) {
try {
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
public static void main(String[] args) throws IOException {
/*
* 通过递归得到某一路径下所有的目录及其PDF文件
*/
// 通过传入文件路径获取文件
String code = null;
File file = new File("F:\\pdf文件解析");
// 把获取到的文件名保存在数组中
File[] files = file.listFiles();
for(File f:files){
//--------------------------1.获取文件路径
f.getAbsolutePath();
System.out.println("文件路径:"+f.getAbsolutePath());
//获取文件类型,即文件后缀名
int start = f.getAbsolutePath().length()-3;
int end = f.getAbsolutePath().length();
//得到文件的后缀名
String pdf = f.getAbsolutePath().substring(start, end);
//判断是否是pdf格式的文件
if(pdf.equals("pdf") || pdf.equals("PDF")){
// 是pdf格式的文件
//得到全部pdf文件中的信息
String str = getInfoFromPDF3.getAllInfoFromPDF(f.getAbsolutePath());
//----------------------2.获取pdf文件中的编号
// String code = str.substring(str.indexOf(":")+1,str.indexOf(":")+27);
//截取pdf文件中的编号
code = str.substring(str.indexOf("编号:")+3,str.indexOf(":")+27);
/*
* 2017.11.27更新内容
* 取出文本中的若干个编号,并去除重复的
*
* */
///////////////////2017.11.27更新内容/////////////////////////////////////////
//获取到全部的编号
Set set = new HashSet();
Iterator<String> it = null;
String regex = "\\d{26}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
set.add(matcher.group());
it = set.iterator();
//System.out.println(matcher.group());
}
while (it.hasNext()) {
String getCode = it.next();
System.out.println("编号为:"+getCode);
}
/////////////////////////////////////////////////////////////
//----------------------3.获取pdf 文件中的套数(一份申请书和一份授权书为一套)
int count=0,StringStart=0;
while(str.indexOf("金融信用信息基础数据库个人信用信息采集授权书", StringStart)>=0 && StringStart<str.length()){
//当字符串出现子串时,返回子字符串索引
count++;
StringStart=str.indexOf("金融信用信息基础数据库个人信用信息采集授权书", StringStart)+"金融信用信息基础数据库个人信用信息采集授权书".length();//得到新的start值。
}
System.out.println("共有--"+count+"--套");
System.out.println("---------------------------------------------------------------------");
}
}
}
}
阅读全文
0 0
- java解析PDF文件,并获取到指定数据(升级版)
- java解析PDF文件,并获取到指定数据.Eg
- 从FTP获取PDF文件流并展示到页面
- 使用PDF.js在网页显示pdf文件并跳转到指定页码
- java 获取文件返回 pdf文件并打印
- 从指定网络地址获取已知文件并保存到指定位置-指定文件名字和类型
- java获取并解析RTX用户数据
- java 访问url获取数据并解析
- pdf解析,获取字段数据
- java 取到xml文件,并解析
- Java--获取指定格式的文件并批量修改文件
- java解析pdf文件
- 文件上传到服务器并获取文件中的数据
- java遍历文件夹并复制文件到指定目录
- java遍历文件夹并复制文件到指定目录
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
- 获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)
- 上传,解析Excel文件并保存数据到数据库
- MATLAB安装教程
- Intel VTune分析结果中的名词释译
- 工作笔记
- 关于Android 布局优化
- 算法分析的一个简单的例子(运行时间计算)
- java解析PDF文件,并获取到指定数据(升级版)
- iptables详解
- javascript中的原型与继承3-混合继承(Combination Inheritance)
- 在面试机器学习、大数据岗位时遇到的各种问题
- docker compose
- pg_reload 如何使用以及注意事项。
- 每天一个linux命令--大全
- json-c需要注意的内存问题
- hibernate_day04_02_对象导航查询和oid查询