个性化阅读
专注于IT技术分析

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类

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()方法打印电话号码, 该方法引用遵循我们指定模式的下一个号码。

Matcher m = p.matcher(sb);
while (m.find()){
	    System.out.println(m.group());			
	 }

关闭文件

完成任务后, 我们需要使用close()方法关闭PDDocument类对象。

doc.close();

例-

这是一个PDF文档, 同时包含文本和电话号码。从此PDF中, 我们只想提取电话号码。在此, 我们假设电话号码的长度为10位数字。我们可以通过使用Java程序的PDFBox库来做到这一点。

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

输出

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

PDFBox提取电话号码
赞(0)
未经允许不得转载:srcmini » PDFBox提取电话号码

评论 抢沙发

评论前必须登录!