📅  最后修改于: 2021-01-07 07:40:05             🧑  作者: Mango
PDFBox库具有多种功能。它具有快速准确地从现有PDF文档中提取电话联系人的功能。在本节中,我们将学习如何使用Java程序从PDFBox库中的现有文档中读取电话号码。 PDF文档也可能包含文本,动画和图像等。作为其内容。
请按照以下步骤从现有的PDF文档中提取电话号码-
我们可以使用static load()方法加载现有的PDF文档。此方法接受文件对象作为参数。我们也可以使用PDFBox的类名PDDocument调用它。
File file = new File("Path of Document");
PDDocument doc = PDDocument.load(file);
StringBuilder和PDFTextStripper类用于从PDF文档中检索文本。我们可以如下实例化这些类:
StringBuilder sb = new StringBuilder();
PDFTextStripper stripper = new PDFTextStripper();
模式是指我们要查找的电话号码的格式。在我们的示例中,我们正在寻找具有10位数字的号码,并在电话号码的两端查找至少一个空白。可以从以下设置模式:
Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s");
我们可以使用Matcher检索电话号码, Matcher引用将在其中找到模式的实际文本。如果将找到电话号码,请使用group()方法print电话号码,该方法引用遵循我们指定模式的下一个号码。
Matcher m = p.matcher(sb);
while (m.find()){
System.out.println(m.group());
}
完成任务后,我们需要使用close()方法关闭PDDocument类对象。
doc.close();
这是一个PDF文档,同时包含文本和电话号码。从此PDF中,我们仅希望提取电话号码。在此,我们假设电话号码为10位数字。我们可以使用Java Program的PDFBox库来做到这一点。
import java.io.*;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.text.PDFTextStripper;
import java.util.regex.*;
public class ExtractPhone {
public static void main(String[] args)throws IOException {
// PDF file from the phone numbers are extracted
File fileName = new File("/eclipse-workspace/phone.pdf");
PDDocument doc = PDDocument.load(fileName);
// StringBuilder to store the extracted text
StringBuilder sb = new StringBuilder();
PDFTextStripper stripper = new PDFTextStripper();
// Add text to the StringBuilder from the PDF
sb.append(stripper.getText(doc));
// Regex-> The Pattern refers to the format you are looking for. In our example,we are looking for
//numbers with 10 digits with atleast one surrounding white spaces on both ends.
Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s");
// Matcher refers to the actual text where the pattern will be found
Matcher m = p.matcher(sb);
while (m.find()){
//group() method refers to the next number that follows the pattern we have specified.
System.out.println(m.group());
}
if (doc != null) {
doc.close();
}
System.out.println("\nPhone Number is extracted");
}
}
输出:
成功执行以上程序后,我们可以看到以下输出。