天天看點

用Java讀取pdf中的資料

用Java簡單的讀取pdf檔案中的資料:

第二步:寫個簡單的讀取pdf檔案的程式。(PdfReader.java)

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 PdfReader {

 public void readFdf(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);

   //注意參數已不是以前版本中的URL.而是File。

    document = PDDocument.load(pdfFile);

    // 擷取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裝載得到異常則從檔案系統裝載

   //注意參數已不是以前版本中的URL.而是File。

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

  } finally {

   if (output != null) {

    // 關閉輸出流

    output.close();

   if (document != null) {

    // 關閉PDF Document

    document.close();

  }

 }

 /**

  * @param args

  */

 public static void main(String[] args) {

  // TODO Auto-generated method stub

  PdfReader pdfReader = new PdfReader();

   // 取得E盤下的SpringGuide.pdf的内容

   pdfReader.readFdf("E:\\SpringGuide.pdf");

  } catch (Exception e) {

   e.printStackTrace();

}

   這樣就簡單的完成了從pdf中讀取資料了。在你的pdf檔案所在的目錄下生成一個同名的txt檔案。

<a href="http://down.51cto.com/data/2350254" target="_blank">附件:http://down.51cto.com/data/2350254</a>

本文轉自 weijie@java 51CTO部落格,原文連結:http://blog.51cto.com/weijie/87807,如需轉載請自行聯系原作者