使用PDFBox處理PDF文檔

來源:互聯網
上載者:User

 

首先匯入jar包 pdfbox-app-1.6.0.jar  fontbox-1.6.0.jar pdfbox-1.6.0.jar  和 jempbox-1.6.0.jar

同時還要匯入lucene的3.0包  lucene-core-3.0.0.jar

下載網址  http://pdfbox.apache.org/download.html 

 

 

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.lucene.document.Document;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

public class PdfLuceneTest {
 public static void main(String[] args) {
  try {
  geText("D:\\test\\small\\1.pdf");
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
 public static 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);
    } finally {
       if (output != null) {
          // 關閉輸出資料流
          output.close();
       }
       if (document != null) {
          // 關閉PDF Document
          document.close();
       }
    }
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.