您的位置:首页 > 运维架构 > Apache

使用Apache PDFBox转换PDF文件为Text文件

2010-05-14 13:47 465 查看
代码如下:

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;

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

public class Test {

public static void main(String[] args) throws Exception {

createTextFile("C://123.pdf", "C://123.txt", "UTF-8", false);
}

/**
* @param pdfFile PDF文件
* @param textFile Text文件
* @param encoding 编码方式
* @param sort 是否排序
* @throws Exception
*/
public static void createTextFile(String pdfFile, String textFile, String encoding, boolean sort) throws Exception {

// 开始提取页数
int startPage = 1;

// 结束提取页数
int endPage = Integer.MAX_VALUE;

// 文件输入流,生成文本文件
Writer output = null;

// 内存中存储的PDF Document
PDDocument document = null;

try {

try {

// 首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件
URL url = new URL(pdfFile);

document = PDDocument.load(url);

// 获取PDF的文件名
String fileName = url.getFile();

// 以原来PDF的名称来命名新产生的txt文件
if (fileName.length() > 4) {

File outputFile = new File(fileName.substring(0, fileName.length() - 4) + ".txt");

textFile = outputFile.getName();
}
} catch (MalformedURLException e) {

// 如果作为URL装载得到异常则从文件系统装载
document = PDDocument.load(pdfFile);
}

// 文件输入流,写入文件倒textFile
output = new OutputStreamWriter(new FileOutputStream(textFile), encoding);

// PDFTextStripper来提取文本
PDFTextStripper stripper = null;

stripper = new PDFTextStripper();

// 设置是否排序
stripper.setSortByPosition(sort);

// 设置起始页
stripper.setStartPage(startPage);

// 设置结束页
stripper.setEndPage(endPage);

// 调用PDFTextStripper的writeText提取并输出文本
stripper.writeText(document, output);

} finally {

if (output != null) {

// 关闭输出流
output.close();
}

if (document != null) {

// 关闭PDF Document
document.close();
}
}
}
}


参考资料:http://book.csdn.net/bookfiles/312/10031212843.shtml

另一个Java支持的PDF包:http://www.foolabs.com/xpdf/download.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: