使用PDFBOX组件解析PDF文件

使用PDFBOX组件解析PDF文件

package com.potevio.telecom.pdf;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;

/**
 * @description 使用PDFBOX组件解析PDF文件
 * @author ZhouJingxian
 *
 */
public class PDFBoxParsePDF {

	/**
	 * 解析PDF,获取内容
	 * @param file_path_name
	 * @return
	 */
	public String getText(String file_path_name){
		
		//是否排序
		boolean sort = true;
		
		//pdf文件名
		String pdfFile = file_path_name;
		
		//输入文本文件名称
		String textFile = null;
		
		//编码方式
		String encoding = "UTF-8";
		
		//开始提取页面
		int startPage = 1;
		
		//结束提取页面
		int endPage = Integer.MAX_VALUE;
		
		//文件输入流,输入文本文件
		Writer output = null;
		
		//内存中存储的PDF Document
		PDDocument document = null;
		
		//返回的内容字符串
		String returnStr = "";
		
		try{
			//如果作为URL装载得到异常则从文件系统装载
			document = PDDocument.load(pdfFile);
			
			if(pdfFile.length() > 4){
				textFile = pdfFile.substring(0, pdfFile.length() - 4) +".txt";
			}
			
			//文件输出流,写入文件到textFile
			output = new OutputStreamWriter(new FileOutputStream(textFile));
			
			//PDFTextStripper来提取文本
			PDFTextStripper stripper = new PDFTextStripper();
			
			//设置是否排序
			stripper.setSortByPosition(sort);
			
			//设置起始页
			stripper.setStartPage(startPage);
			
			//设置结束页
			stripper.setEndPage(endPage);
			
			//调用PDFTextStripper的writerText提取并输出文本
			stripper.writeText(document, output);
			returnStr = stripper.getText(document);
			
		}catch(Exception e){
			e.printStackTrace();
			
		}finally{
			try {
				if(output != null){
					output.close();					
				}
				if(document != null){
					document.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		return returnStr;
	}
	
	public static void main(String []args){
		String str = "";
		PDFBoxParsePDF pdf_deal = new PDFBoxParsePDF();
		try {
			str = pdf_deal.getText("F:\\my-download\\javaeye-download\\《JAVA面试题解惑系列1-11合集》.pdf");
			System.out.print("控制台输出内容(格式正确):\n"+str);
			
//			str.replace("\n", "</br>").getBytes();
//			System.out.print("输出内容到页面(空格处理):\n"+str);
			
		} catch (Exception e) {
			System.out.println("parse pdf content error!");
			e.printStackTrace();
		}
	}
}

 

PDFBox官网:http://incubator.apache.org/pdfbox/

需要的包请自己下载,或者去这个地方下载

你可能感兴趣的:(java,apache,面试,F#)