java中的接口是类吗
1047
2022-08-29
Java基于PDFbox实现读取处理PDF文件
目录前言pdfbox介绍开发环境PDFbox依赖快速开始结语
前言
嗨,大家好,2022年春节已经接近尾声,各地都陆陆续续开工了。近期有朋友做一个小项目正好使用java读取PDF文件信息。因此记录一下相关过程。
pdfbox介绍
PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。Apache PDFBox还包含了数个命令行工具。
PDF文件的数据时一系列基本对象的集合:数组,布尔型,字典,数字,字符串和二进制流。
开发环境
本次Java基于PDFbox读取处理PDF文件的版本信息如下:
JDK1.8
SpringBoot 2.3.0.RELEASE
PDFbox 1.8.13
PDFbox依赖
在初次使用PDFbox的时候需要引入PDFbox依赖。本次使用的依赖包如下:
快速开始
本示例是将指定目录下的PDF文件中的信息读取出来,存储到新的指定路径的txt文本文件当中。
class PdfTest {
public static void main(String[] args) throws Exception {
String filePath ="C:\\Users\\Admin\\Desktop\\cxy1.pdf";
List
for (String filePath : list) {
long ltime = System.currentTimeMillis();
String substring = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.lastIndexOf("."));
String project = "(juejin.cn)";
String textFromPdf = getTextFromPdf(filePath);
String s = writterTxt(textFromPdf, substring + "--", ltime, basePath);
StringBuffer stringBuffer = readerText(s, project);
writterTxt(stringBuffer.toString(), substring + "-", ltime, basePath);
}
System.out.println("******************** end ************************");
}
public static List
List
File file = new File(path);
File[] http://tempList = file.listFiles();
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
if (tempList[i].toString().contains(".pdf") || tempList[i].toString().contains(".PDF")) {
files.add(tempList[i].toString());
}
//文件名,不包含路径
//String fileName = tempList[i].getName();
}
if (tempList[i].isDirectory()) {
//这里就不递归了,
}
}
return files;
}
public static String getTextFromPdf(String filePath) throws Exception {
String result = null;
FileInputStream is = null;
PDDocument document = null;
try {
is = new FileInputStream(filePath);
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();
} cxDnmrqDQatch (IOException e) {
e.printStackTrace();
}
}
if (document != null) {
try {
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Map
return result;
}
public static String writterTxt(String data, String text, long l, String basePath) {
String fileName = null;
try {
if (text == null) {
fileName = basePath + "javaio-" + l + ".txt";
} else {
fileName = basePath + text + l + ".txt";
}
File file = new File(fileName);
//if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
//true = append file
OutputStream outputStream = new FileOutputStream(file);
// FileWriter fileWritter = new FileWriter(file.getName(), true);
// fileWritter.write(data);
// fileWritter.close();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
outputStreamWriter.write(data);
outputStreamWriter.close();
outputStream.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
return fileName;
}
public static StringBuffer readerText(String name, String project) {
// 使用ArrayList来存储每行读取到的字符串
StringBuffer stringBuffer = new StringBuffer();
try {
FileReader fr = new FileReader(name);
BufferedReader bf = new BufferedReader(fr);
String str;
// 按行读取字符串
while ((str = bf.readLine()) != null) {
str = replaceAll(str);
if (str.contains("D、") || str.contains("D.")) {
stringBuffer.append(str);
stringBuffer.append("\n");
stringBuffer.append("参考: \n");
stringBuffer.append("参考: \n");
stringBuffer.append("\n\n\n\n");
} else if (str.contains("A、") || str.contains("A.")) {
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
stringBuffer.append("。" + project + "\n");
stringBuffer.append(str + "\n");
} else if (str.contains("B、") || str.contains("C、") || str.contains("B.") || str.contains("C.")) {
stringBuffer.append(str + "\n");
} else {
stringBuffer.append(str);
}
}
bf.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
return stringBuffer;
}
public static String replaceAll(String str) {
return str.replaceAll("网", "");
}
}
结语
好了,以上就是Java中继承相关概念介绍,感谢您的阅读,希望您喜欢,如有不足之处,欢迎评论指正。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~