📜  PDFBox提取电话号码

📅  最后修改于: 2021-01-07 07:40:05             🧑  作者: Mango

PDFBox提取电话号码

PDFBox库具有多种功能。它具有快速准确地从现有PDF文档中提取电话联系人的功能。在本节中,我们将学习如何使用Java程序从PDFBox库中的现有文档中读取电话号码。 PDF文档也可能包含文本,动画和图像等。作为其内容。

请按照以下步骤从现有的PDF文档中提取电话号码-

载入PDF文件

我们可以使用static load()方法加载现有的PDF文档。此方法接受文件对象作为参数。我们也可以使用PDFBox的类名PDDocument调用它。

File file = new File("Path of Document"); 
PDDocument doc = PDDocument.load(file); 

实例化StringBuilder和PDFTextStripper类

StringBuilderPDFTextStripper类用于从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库来做到这一点。

Java程序

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");
        }
}

输出:

成功执行以上程序后,我们可以看到以下输出。