PDFBox 提取电话号码
在PDFBox的库具有多种功能。它能够从现有的 PDF 文档中快速准确地提取电话联系人。在本节中,我们将学习如何使用 Java 程序从 PDFBox 库中的现有文档中读取电话号码。PDF 文档还可能包含文本、动画和图像等。作为其内容。
按照以下步骤从现有的 PDF 文档中提取电话号码
PDFBox 加载 PDF 文档
我们可以使用静态load()方法加载现有的 PDF 文档。此方法接受一个文件对象作为参数。我们也可以调用它使用类名PDDocument的的PDFBox的。
File file = new File("Path of Document");
PDDocument doc = PDDocument.load(file);
PDFBox 实例化 StringBuilder 和 PDFTextStripper 类
StringBuilder和PDFTextStripper 类用于从PDF 文档中检索文本。我们可以将这些类实例化如下:
StringBuilder sb = new StringBuilder();
PDFTextStripper stripper = new PDFTextStripper();
PDFBox 设置电话号码模式
该模式是指我们正在寻找的电话号码的格式。在我们的示例中,我们正在寻找具有10 位数字且两端至少有一个带有电话号码的空格的数字。可以从以下设置模式:
Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s");
PDFBox 查找电话号码
我们可以使用Matcher检索电话号码,它引用将找到模式的实际文本。如果找到电话号码,请使用group()方法打印电话号码,该方法引用遵循我们指定的模式的下一个号码。
Matcher m = p.matcher(sb);
while (m.find()){
System.out.println(m.group());
}
PDFBox 关闭文档
完成任务后,我们需要使用close()方法关闭PDDocument类对象。
doc.close();
PDFBox 提取电话号码 完整示例
这是一个包含文本和电话号码的 PDF 文档。从这个 PDF 中,我们只想提取电话号码。在这里,我们假设电话号码的长度为10 位。我们可以通过使用Java Program 的PDFBox 库来做到这一点。
package com.yiidian;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractPhone {
public static void main(String[] args) throws IOException {
// PDF file from the phone numbers are extracted
File fileName = new File("d:/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");
}
}
输出结果为:
热门文章
优秀文章