從偽word格式的doc檔案中提取文字內容

2021-08-26 21:11:49 字數 1926 閱讀 9574

最近做的乙個程式中,需要把從51job匯出來的簡歷進行解析,51job支援doc和mht格式。開始時以為該doc檔案是word檔案,於是採用apache poi中提供的wordextractor來進行,從word檔案中提取文字內容。

import org.apache.poi.hwpf.extractor.wordextractor;

wordextractor wordextractor = new wordextractor(new fileinputstream(tempfile));

content = wordextractor.gettext();

測試時,發現總是報異常

invalid header signature; read 0x7265762d656d696d, expected 0xe11ab1a1e011cfd0
用notepad++開啟看了一下,發現是個文字檔案

mime-version: 1.0

from: 《由 網才@51job 生成》

date: 13 apr 2012 17:20:13 +0800

subject: resume

content-type: multipart/related; boundary=--boundary_578_1d3227f5-c157-41cf-b651-c43d296bd49f

----boundary_578_1d3227f5-c157-41cf-b651-c43d296bd49f

content-type: text/html; charset=gb2312

content-transfer-encoding: quoted-printable

=d3=a6=c6=b8=d6=b0=ce=bb=a3=ba這表明51job生成的doc檔案本質上是個mht檔案。因此,也得到乙個啟示:下次如果專案中需要匯出word格式檔案,也可用mht格式來冒充,反正word也可以正常開啟。

現在的問題變成了,怎麼從mht中提取html內容了。在iteye上找到了,還挺好用,

使用方法如下:

string htmlfile = tempfile.substring(0, tempfile.length() - 4) + ".html";

log.debug("html=" + htmlfile);

html2mhtcompiler.mht2html(tempfile, htmlfile);

這樣之後,htmlfile指定的檔案中儲存的就是提取出來html內容。在實際的測試中,發現需要對**做一下小的修改,在類html2mhtcompiler第441行附近。

mimemultipart mp = (mimemultipart) content;  

mimebodypart bp1 = (mimebodypart) mp.getbodypart(0);

string strencodng = getencoding(bp1);

string strtext = gethtmltext(bp1, strencodng);

if (strtext == null)

return;

因為我碰到兩種情況:

1. strencodng 可能為空;

2. strencodng 不為空時,字串可能帶有雙引號;

這兩種情況都會導致後面的 gethtmltext 呼叫丟擲異常。

可修改如下:

string strencodng = getencoding(bp1);

if (strencodng == null) else

string strtext = gethtmltext(bp1, strencodng);

至少在我測試的doc/mht檔案中能正確處理。

Word文件中的格式標記大全

在word中有很多的格式設定,很多格式設定都會有一些標記,這些標記是隱藏的,在列印文件時是不會列印出來的,但是它們卻起著結構化文件的大作用。如果你在編輯文件,不妨點選格式標記開關,看看都有哪些格式標記,如下圖。在常用工具欄上有個按鈕,用來開啟和關閉顯示文件中的隱藏格式標記,你不妨點選它,開啟顯示,看...

gd格式的檔案轉換為word檔案的方法

gd格式轉換word的方法 首先雙擊gd檔案 然後在軟體視窗中,單擊檔案選單,選擇列印選項 接著將檔案另存為對話方塊中,並設定檔名和儲存位置,型別為xps檔案 最後選擇要轉換的xps格式檔案,並將檔案型別設定為docx即可。雙擊gd檔案,用閱讀器開啟預覽。軟體視窗中,單擊檔案選單,選擇列印選項。列印...

word文件中的煩人的格式問題。。

最近寫 的時候,用的官方給的word模板,可是有些模板對於格式要求太為嚴格,對齊,上下分開什麼的,很多需要注意的。要想讓 美觀一點,還是需要多嘗試的,畢竟word的功能非常強的 其實excel也挺強的。但是需要我們乙個個去發掘並加以利用。我這裡列舉幾個少為人知,但關鍵時刻又非常重要的功能,以後再不斷...