用Java简单的读取pdf文件中的数据

来源:互联网 发布:剑三体服激活码 淘宝 编辑:程序博客网 时间:2024/05/29 03:23
  1. import java.io.File;   
  2. import java.io.FileOutputStream;   
  3. import java.io.OutputStreamWriter;   
  4. import java.io.Writer;   
  5. import java.net.MalformedURLException;   
  6. import java.net.URL;   
  7. import org.pdfbox.pdmodel.PDDocument;   
  8. import org.pdfbox.util.PDFTextStripper;   
  9.   
  10. public class PdfReader {   
  11.   public void readFdf(String file) throws Exception {   
  12.     // 是否排序   
  13.     boolean sort = false;   
  14.     // pdf文件名   
  15.     String pdfFile = file;   
  16.     // 输入文本文件名称   
  17.     String textFile = null;   
  18.     // 编码方式   
  19.     String encoding = "UTF-8";   
  20.     // 开始提取页数   
  21.     int startPage = 1;   
  22.     // 结束提取页数   
  23.     int endPage = Integer.MAX_VALUE;   
  24.     // 文件输入流,生成文本文件   
  25.     Writer output = null;   
  26.     // 内存中存储的PDF Document   
  27.     PDDocument document = null;   
  28.     try {   
  29.       try {   
  30.         // 首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件   
  31.         URL url = new URL(pdfFile);   
  32.         // 注意参数已不是以前版本中的URL.而是File。   
  33.         document = PDDocument.load(pdfFile);   
  34.         // 获取PDF的文件名   
  35.         String fileName = url.getFile();   
  36.         // 以原来PDF的名称来命名新产生的txt文件   
  37.         if (fileName.length() > 4) {   
  38.           File outputFile = new File(fileName.substring(0, fileName.length() - 4) + ".txt");   
  39.           textFile = outputFile.getName();   
  40.         }   
  41.       } catch (MalformedURLException e) {   
  42.         // 如果作为URL装载得到异常则从文件系统装载   
  43.         // 注意参数已不是以前版本中的URL.而是File。   
  44.         document = PDDocument.load(pdfFile);   
  45.         if (pdfFile.length() > 4) {   
  46.           textFile = pdfFile.substring(0, pdfFile.length() - 4) + ".txt";   
  47.         }   
  48.       }   
  49.       // 文件输入流,写入文件倒textFile   
  50.       output = new OutputStreamWriter(new FileOutputStream(textFile), encoding);   
  51.       // PDFTextStripper来提取文本   
  52.       PDFTextStripper stripper = null;   
  53.       stripper = new PDFTextStripper();   
  54.       // 设置是否排序   
  55.       stripper.setSortByPosition(sort);   
  56.       // 设置起始页   
  57.       stripper.setStartPage(startPage);   
  58.       // 设置结束页   
  59.       stripper.setEndPage(endPage);   
  60.       // 调用PDFTextStripper的writeText提取并输出文本   
  61.       stripper.writeText(document, output);   
  62.     } finally {   
  63.       if (output != null) {   
  64.         // 关闭输出流   
  65.         output.close();   
  66.       }   
  67.       if (document != null) {   
  68.         // 关闭PDF Document   
  69.         document.close();   
  70.       }   
  71.     }   
  72.   }   
  73.   
  74.   /**  
  75.    * @param args  
  76.    */  
  77.   public static void main(String[] args) {   
  78.     // TODO Auto-generated method stub   
  79.     PdfReader pdfReader = new PdfReader();   
  80.     try {   
  81.       // 取得E盘下的SpringGuide.pdf的内容   
  82.       pdfReader.readFdf("E://SpringGuide.pdf");   
  83.     } catch (Exception e) {   
  84.       e.printStackTrace();   
  85.     }   
  86.   }   
  87. }  
原创粉丝点击