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

输出结果为:

热门文章

优秀文章