1. 程式人生 > >java 技術文件 用java獲得word,excel,pdf等文件的內容

java 技術文件 用java獲得word,excel,pdf等文件的內容

很多人用java進行文件操作時經常會遇到一個問題,就是如何獲得word,excel,pdf等文件的內容?我研究了一下,在這裡總結一下抽取word,pdf的幾種方法。

  1. 用jacob

  其實jacob是一個bridage,連線java和com或者win32函式的一箇中間件,jacob並不能直接抽取word,excel等檔案,需要自己寫dll哦,不過已經有為你寫好的了,就是jacob的作者一併提供了。

  下載了jacob並放到指定的路徑之後(dll放到path,jar檔案放到classpath),就可以寫你自己的抽取程式了,下面是一個簡單的例子:

import java.io.File;
import com.jacob.com.*;
import com.jacob.activeX.*;
/**
 * Title: pdf extraction
 * Description: email:

[email protected]
 * Copyright: Matrix Copyright (c) 2003
 * Company: Matrix.org.cn
 * @author chris
 * @version 1.0,who use this example pls remain the declare
 */
public class FileExtracter{
 public static void main(String[] args) {
  ActiveXComponent component = new ActiveXComponent("Word.Application");
  String inFile = "c://test.doc";
  String tpFile = "c://temp.htm";
  String otFile = "c://temp.xml";
  boolean flag = false;
  try {
   component.setProperty("Visible", new Variant(false));
   Object wordacc = component.getProperty("document.").toDispatch();
   Object wordfile = Dispatch.invoke(wordacc,"Open", Dispatch.Method,
                                     new Object[]{inFile,new Variant(false), new Variant(true)},
                                     new int[1] ).toDispatch();
   Dispatch.invoke(wordfile,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(8)}, new int[1]);
   Variant f = new Variant(false);
   Dispatch.call(wordfile, "Close", f);
   flag = true;
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   component.invoke("Quit", new Variant[] {});
  }
 }
}

  2. 用apache的poi來抽取word,excel。

  poi是apache的一個專案,不過就算用poi你可能都覺得很煩,不過不要緊,這裡提供了更加簡單的一個介面給你:

  下載之後,放到你的classpath就可以了,下面是如何使用它的一個例子:

import java.io.*;
import  org.textmining.text.extraction.WordExtractor;
/**
 *

Title: word extraction


 *

Description: email:[email protected]


 *

Copyright: Matrix Copyright (c) 2003


 *

Company: Matrix.org.cn


 * @author chris
 * @version 1.0,who use this example pls remain the declare
 */

public class PdfExtractor {
  public PdfExtractor() {
  }
  public static void main(String args[]) throws Exception
  {
  FileInputStream in = new FileInputStream ("c://a.doc");
  WordExtractor extractor = new WordExtractor();
  String str = extractor.extractText(in);
  System.out.println("the result length is"+str.length());
   System.out.println("the result is"+str);
}
}

  3. pdfbox-用來抽取pdf檔案

  下面是一個如何使用pdfbox抽取pdf檔案的例子:

import org.pdfbox.pdmodel.PDdocument.
import org.pdfbox.pdfparser.PDFParser;
import java.io.*;
import org.pdfbox.util.PDFTextStripper;
import java.util.Date;
/**
 *

Title: pdf extraction


 *

Description: email:[email protected]


 *

Copyright: Matrix Copyright (c) 2003


 *

Company: Matrix.org.cn


 * @author chris
 * @version 1.0,who use this example pls remain the declare
 */

public class PdfExtracter{

public PdfExtracter(){
  }
public String GetTextFromPdf(String filename) throws Exception
  {
  String temp=null;
  PDdocument.nbsppdfdocument.null;
  FileInputStream is=new FileInputStream(filename);
  PDFParser parser = new PDFParser( is );
  parser.parse();
  pdfdocument.nbsp= parser.getPDdocument.);
  ByteArrayOutputStream out = new ByteArrayOutputStream();
  OutputStreamWriter writer = new OutputStreamWriter( out );
  PDFTextStripper stripper = new PDFTextStripper();
  stripper.writeText(pdfdocument.getdocument.), writer );
  writer.close();
  byte[] contents = out.toByteArray();

  String ts=new String(contents);
  System.out.println("the string length is"+contents.length+"/n");
  return ts;
}
public static void main(String args[])
{
PdfExtracter pf=new PdfExtracter();
PDdocument.nbsppdfdocument.nbsp= null;

try{
String ts=pf.GetTextFromPdf("c://a.pdf");
System.out.println(ts);
}
catch(Exception e)
  {
  e.printStackTrace();
  }
}

}

  4. 抽取支援中文的pdf檔案-xpdf

  xpdf是一個開源專案,我們可以呼叫他的本地方法來實現抽取中文pdf檔案。

  同時需要下載支援中文的補丁包,按照readme放好中文的patch,就可以開始寫呼叫本地方法的java程式了。

  下面是一個如何呼叫的例子:

import java.io.*;
/**
 *

Title: pdf extraction


 *

Description: email:[email protected]


 *

Copyright: Matrix Copyright (c) 2003


 *

Company: Matrix.org.cn


 * @author chris
 * @version 1.0,who use this example pls remain the declare
 */


public class PdfWin {
  public PdfWin() {
  }
  public static void main(String args[]) throws Exception
  {
    String PATH_TO_XPDF="C://Program Files//xpdf//pdftotext.exe";
    String filename="c://a.pdf";
    String[] cmd = new String[] { PATH_TO_XPDF, "-enc", "UTF-8", "-q", filename, "-"};
    Process p = Runtime.getRuntime().exec(cmd);
    BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
    InputStreamReader reader = new InputStreamReader(bis, "UTF-8");
    StringWriter out = new StringWriter();
    char [] buf = new char[10000];
    int len;
    while((len = reader.read(buf))>= 0) {
    //out.write(buf, 0, len);
    System.out.println("the length is"+len);
    }
    reader.close();
    String ts=new String(buf);
    System.out.println("the str is"+ts);
  }
}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1293505

 

相關推薦

iOS在app中開啟word、execl、pdf

//用UIWebView -(void)open:(NSString*)wordName andView:(UIWebView*)webView {     NSString *path = [[N

如何從wordexcelpdf檔案中提取文字(Tika)

Tika-內容分析工具包 官方網站:https://tika.apache.org/ 在maven倉庫下載最新版依賴 https://mvnrepository.com/artifact/org.apache.tika/tika-parsers 懶得去的同學,提供一個筆者正在使

java 技術 java獲得wordexcelpdf內容

很多人用java進行文件操作時經常會遇到一個問題,就是如何獲得word,excel,pdf等文件的內容?我研究了一下,在這裡總結一下抽取word,pdf的幾種方法。   1. 用jacob   其實jacob是一個bridage,連線java和com或者win32函式的一箇

java操作office和pdf檔案:讀取wordexcelpdf內容

..... <properties> <poi.version>3.13</poi.version> <pdf.version>1.8.10</pdf.

Word格式轉換:Word如何轉換成PDF格式

自定義 如圖所示 分享圖片 部分 基本操作 範圍 water 定義 cto Word文件如何轉換成PDF格式呢? 可能大部分人都知道PDF轉換成word格式,畢竟這也是一種常用的轉換。就word轉換成PDF小編在這裏告訴大家一種方法! 1、首先我們需要借助輔助工具進行文件格

這些java技術面試題也許你在面試時會遇到早些防範!

大家在平常面試java的過程中都會遇到哪些難題呢?還有一些即將去面試java的童鞋們,你們想知道技術面試中會涉及到哪些點嗎?今天為你整理Java面試中會被問到的幾個技術難題。 1、一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制? 可以有多個類,但只能有一個p

java實現線上預覽--poi實現wordexcel、ppt轉html

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/aabbyyz java實現線上預覽 - -之poi實現word、e

java筆試題:java實現字串壓縮演算法

題目:將字串 aaabcdda (可以從控制檯接收)程式設計實現將其轉換為 3a1b1c2d1a。 我的大致就這樣: System.out.print("請輸入一串字串:"); Scanner s = new Scanner(System.in); String str

將jsp頁面生成wordexcelpdf

      開發過程中,有時要求將顯示查詢結果的jsp頁面生成word、excel、pdf等型別的文件,甚至可能要求將那些格式的文件下載下來,因為這樣更符合客戶的需求,也更利於他們的辦公使用。        基於此,上網查閱了一些資料,現簡單整理一下,以供自己和大家學習。

WordExcelPowerpointTxtPdf 的線上瀏覽的實現

一:使用的工具及其技術:         openOffice,swfTools,flexPaper。          其中openOffice和swfTools兩個工具需要在應用伺服器上安裝,搭建其執行使用環境。         flexPaper是一個開源輕量級的在瀏

Ubuntu 伺服器 PHP實現wordexcel、ppt、pdf 線上閱讀功能的實現

1、實現原理思路 要實現 word 等文件線上閱讀,需要將文件轉換成 swf 的 flash 檔案,然後結合 flexpaper ,在頁面上閱讀顯示。 這個轉換過程有些複雜,首先需要我們把上傳的檔案轉換成 pdf 格式的檔案,然後在把 pdf 格式的檔案轉換為 swf 的格

Java技術棧(2)排序演算法(冒泡快速排序)

1.氣泡排序 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端

WORD、PPT、TXT、PDF轉換

一個檔案格式轉換成另一個檔案格式,這對我們來說有什麼難得,簡單的很!但是大量的檔案,如,WORD、PPT、TXT、PDF等不同格式的檔案如何巧妙轉換?你不會還傻傻的一個字一個字敲吧?今天這篇文章教你不同檔案格式間的轉換方式,不管論文還是工作,你一定用得到!

C# 基於NPOI+Office COM元件 實現20行程式碼線上預覽wordexcelpdftxtpng)

由於專案需要,需要一個線上預覽office的功能,小編一開始使用的是微軟提供的方法,簡單快捷,但是不符合小編開發需求, 就另外用了:將檔案轉換成html檔案然後預覽html檔案的方法。對微軟提供的方法感興趣的小夥伴可以去看一下,夠簡單直接:word+excle+pdf表格線上瀏覽 我們來說一下小編使用的方法,

重磅:保姆級Java技術圖譜釋出!夠學到元宵節了趕緊收藏!

最近因為參與社群交流的時間比較多,除了嘮嘮白酒的嗑之外,很大一部分時間都是看到群裡問到一些關於Spring Boot和Spring Cloud應用過程中碰到的問題以及一些開發過程中的報錯資訊。在這些幫助分析和排查問題的過程中,我發現有好多問題之所以開發者無法自己解決,或者沒有方法解決的根本原因還是對很多基礎知

C++輸出迴迴圈控制語句編寫程式完成表示式的計算

實驗目的:學會使用迴圈控制語句解決實際問題,並強化注重效率的觀念 實驗內容:用迴圈控制語句編寫程式,完成表示式的計算 * 程式頭部註釋開始 * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights res

iOS 根據字符串數目自定義Label的高度

rect 復制代碼 設置 高度 uifont ios oat size hsi 利用分類,NSString,增加一個方法。 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @

android中的五大布局(控的容器可以放button)

orien ble frame http logs 控件 容器 div 以及 一.android中五大布局相當於是容器,這些容器裏可以放控件也可以放另一個容器,子控件和布局都需要制定屬性。 1.相對布局:RelativeLayout @1控件默認堆疊排列,需要制定控件的相

Android應用內展示wordexcelpdf、ppt檔案

筆者最近兩個專案裡頭都有需要展示檔案的功能,於是做了一番調研,發現asce1885給出一份方案,不過都是關於pdf的展示:http://www.jianshu.com/p/1bf49af6584d,顯然不符合筆者的要求,筆者的專案裡需要展示的檔案格式並不單一,後來經過一番搜尋最後敲定使用

Android中解析讀取複雜wordexcelppt的方法

        前段時間在嘗試做一個Android裡的萬能播放器,能播放各種格式的軟體,其中就涉及到了最常用的office軟體。查閱了下資料,發現Android中最傳統的直接解析讀取word,excel的方法主要用了java裡第三方包,比如利用tm-extractors-0