关于 PDFBox 解析器

来源:互联网 发布:不要网络的游戏大全 编辑:程序博客网 时间:2024/06/17 12:42

今天晚上写了一下PDFBox,但存在一些问题比如,有的PDF文档解析的很好,但解析有些文档则报错.这个问题还没有解决.头痛ING

package jim.myPdfBox;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.pdfbox.pdmodel.PDDocument;import org.pdfbox.util.PDFTextStripper;public class myPdfBox {/** * @param args */public void geText(String file) throws Exception { // 是否排序    boolean sort = false; // pdf文件名    String pdfFile = file; // 输入文本文件名称    String textFile = null; // 编码方式    String encoding = "UTF-8"; // 开始提取页数    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);          if (pdfFile.length() > 4) {             textFile = pdfFile.substring(0, pdfFile.length() - 4) + ".txt";          }       }       // 文件输入流,写入文件倒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);       System.out.println("文件创建成功");   } finally {       if (output != null) {          // 关闭输出流          output.close();       }       if (document != null) {          // 关闭PDF Document          document.close();       }    } } public static void main(String[] args) {    myPdfBox test = new myPdfBox();    try {       // 取得C盘下的index.pdf的内容       test.geText("IK.pdf");    } catch (Exception e) {       e.printStackTrace();    } } }