jtd格式檔案轉換解析
年後到現在的都在忙的專案中本人主要負責的模組就是文件解析這一部分,做的時候是各種踩坑各種鬧心啊,好歹是終於結束了,現在把專案中各種文件的解析做個總結,以備後用,這次專案中主要解析的文檔包括office文件、pdf、csv、rtf、txt、jtd以及eml、msg和pst格式的郵件,還有rar和zip壓縮包的解壓,其實還有一個mlf格式的文件,但是這個經過我的研究以及公司大佬的研究,暫時沒法攻克難關,所以這種格式的文件就只能暫時先放棄了,其他的解析都是做出來了的,主要就是這些,後面我會一個一個的全部總結出來,關於文件的解析本人使用的是apache的Tika做的。
今天我們就先來看這個jtd檔案的解析,可能有人不知道這個jtd檔案是什麼,我這裡先做個解釋:
jtd格式文件是由日本的文字处理软件一太郎生成的文件格式
可以理解成jtd格式檔案就是我們平常用的word,只不要需要用一太郎軟體才能編輯打開,給大家看一下這個一太郎軟體長什麼樣子:
剛看到這個需求的時候很尷尬啊,這個怎麼做,還是日本的軟體,查資料也看不懂啊,在百度和stackoverflow上查也沒查到,這時候多虧了公司一位能看的懂日語的大佬啊,這位大佬在一個日文的網站上找到了解決辦法,網址是http://d.hatena.ne.jp/satorufujimori/20070227/1172549793
解決方法就是使用vbs腳本,將jtd格式檔案轉換為txt文件,然後再解析對應的txt取得到內容,網站上的腳本如下所示:
//taro2txt.vbs Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open "c:\taro\a.jtd" taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1 taro.Quit
大家注意其中的10,這是個標識符,10表示將jtd格式檔案轉換成txt格式的文件,如果想要將jtd格式文件轉換成其他格式的文件需要將10換成其他的標識符,但是比較尷尬的是我們並沒有找到具體的文檔說明到底哪個數字表示哪種文檔,然後當時我從0試到100,亂七八糟的格式出來了一大堆,有用的只有這個10,也就是只能將jtd格式的文件轉換成txt格式的文件,這樣的話原本文件中的圖片就都消失了,但是我們的業務是將文件內容讀取出來,入solr做檢索的,所以沒有圖片就沒有圖片了,後來也就採用了這種辦法來解決問題。
透過上面腳本是可以轉換不帶密碼的jtd文件為txt文件,但是賊尷尬的是我們的jtd格式的文件是帶有密碼的,這個就尷尬了,不過幸好最後也解決了,我忘了當時是怎麼解決的,但是解決辦法如下所示:
//taro2txt.vbs Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open "c:\taro\a.jtd",password//在此处加上密码 taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1 taro.Quit
腳本完成後直接點擊運行就可以將特定的jtd文件轉換成txt文件,然後再去處理txt檔案提取內容即可(txt格式檔案內容提取後面會在另外的文章中說明)。
上面的問題解決了,但是還有問題,我總不能為所有的jtd文件都建一個腳本文件吧,況且客戶那邊有哪些文件我也不知道,所以就想著給vbs腳本傳遞參數,雖然不會vbs的語法,但是按照網上說的照貓畫虎還是寫出來了,具體的腳本內容如下所示:
Option Explicit Dim a0 : a0 = WScript.Arguments(0) Dim a1 : a1 = WScript.Arguments(1) Dim a2 : a2 = WScript.Arguments(2) Dim taro ExchangeFile a0, a1, a2 Sub ExchangeFile(src,dest,password) Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open src,password taro.ActiveDocument.SaveAs dest, "", "", "", 10, "" taro.Quit End Sub
其中a0表示的是jtd文件的路徑,a1表示要產生的txt格式檔案的路徑,a2表示jtd檔的密碼,其實就是傳遞參數呼叫函數的過程。
腳本完善以後就是使用java呼叫vbs腳本的問題,這個問題我在stackoverflow上找到了答案,呼叫方法如下所示:
public static void main(String[] args) { try { Runtime.getRuntime().exec( "wscript D:/Send_Mail_updated.vbs" ); } catch( IOException e ) { System.out.println(e); System.exit(0); } }
透過以上的一系列步驟就可以成功的將jtd文件轉換成txt文件,但是這其中有幾個問題:
透過java程式呼叫vbs腳本並沒有回傳值表示txt檔是否真的產生了,如果密碼是錯的是無法產生對應的txt檔案的,我的處理方法每隔一段時間去查看一下txt檔案是否生成了,一定次數後就判斷轉換失敗,次數是根據檔案大小判斷的,如10M的檔案就每隔5秒檢查一次,一共檢查10次,如果沒生成txt檔案就判定失敗,這樣做在嘗試密碼的時候就十分浪費時間,並且還可能會出現文件比較大,或者機器配置不夠好,本來能夠產生txt檔案的,但是檢查時間過了直接判定為不能正確轉換;
#每次執行vbs腳本的時候都會打開一太郎軟體,並且在嘗試密碼的時候,如果密碼錯誤就會在部署應用程式的伺服器上出現一個windows的錯誤彈窗,雖然最後一太郎的進程會被殺掉,但是在沒有被殺掉之前客戶是能明顯看到一太郎程式和錯誤提示的,這個是很尷尬的事情;
如果jtd檔案過大,例如檔案達到30M的時候,腳本的轉換速度就很慢很慢了,在問題2中也說到了在檔案的轉換過程中客戶是能在伺服器上看到一太郎程式的,如果客戶在此期間直接把一太郎幹掉了,那麼檔案的轉換肯定是失敗的;
以上的問題暫時還沒有解決,後面還要看在客戶那邊部署以後的使用情況,如果客戶那邊的jtd格式文件都是10M以下的,那麼應該是沒有太大的問題的,但是如果文件超過了30M,轉換的過程肯定會慢,而且隨時面臨著在轉換過程中一太郎軟體被幹掉的風險,具體怎麼樣還需要看客戶的試用情況了吧。
關於jtd格式的檔案解析暫時就說到這裡,至於jtd格式檔案轉換成txt格式檔案後內容的提取我會在後面寫的。
以上是jtd格式檔案轉換解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在電腦中刪除或解壓縮資料夾,時有時會彈出提示對話框“錯誤0x80004005:未指定錯誤”,如果遇到這中情況應該怎麼解決呢?提示錯誤碼0x80004005的原因其實很多,但大部分因為病毒導致,我們可以重新註冊dll來解決問題,下面,小編給大夥講解0x80004005錯誤代碼處理經驗。有使用者在使用電腦時出現錯誤代碼0X80004005的提示,0x80004005錯誤主要是由於電腦沒有正確註冊某些動態連結庫文件,或電腦與Internet之間存在不允許的HTTPS連接防火牆所引起。那麼如何

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

最近有很多網友問小編,hiberfil.sys是什麼文件? hiberfil.sys佔用了大量的C碟空間可以刪除嗎?小編可以告訴大家hiberfil.sys檔是可以刪除的。下面就來看看詳細的內容。 hiberfil.sys是Windows系統中的隱藏文件,也是系統休眠文件。通常儲存在C盤根目錄下,其大小與系統安裝記憶體大小相當。這個檔案在電腦休眠時被使用,其中包含了當前系統的記憶體數據,以便在恢復時快速恢復到先前的狀態。由於其大小與記憶體容量相等,因此它可能會佔用較大的硬碟空間。 hiber

這篇文章將詳細介紹如何將PHP中的月份轉換為英文月份的方法,同時給出具體的程式碼範例。在PHP開發中,有時候我們需要將數字表示的月份轉換為英文的月份,這在一些日期處理或資料展示的場景下非常實用。以下將從實作原理、具體程式碼範例和注意事項等方面進行詳解。一、實作原理在PHP中,可以透過使用DateTime類別和format方法來實現將數位月份轉換為英文月份。 Date

qq音樂讓大家盡情享受觀影解悶,每天都可以使用這個軟體,輕鬆滿足自己的使用,優質海量的歌曲,任由大家暢聽,也可以下載保存起來,下次聽的時候,不需要網絡,而在這裡下載的歌曲不是MP3格式的,無法在其他平台使用,會員歌曲過期後也沒有辦法再聽了,所以很多小伙伴們,都想要將歌曲轉換成MP3格式的,在這裡小編為你們提供方法,幫助大家都可以使用起來! 1、開啟電腦qq音樂,點選右上角【主選單】按鈕,點選【音訊轉碼】,選擇【新增歌曲】選項,新增需要轉換的歌曲; 2、新增歌曲完畢,點選選擇轉換為【mp3

【PHP中點的意義和用法解析】在PHP中,中點(.)是常用的運算符,用來連接兩個字串或物件的屬性或方法。在本文中,我們將深入探討PHP中點的意義和用法,並透過具體的程式碼範例加以說明。 1.連接字串中點運算子.在PHP中最常見的用法是連接兩個字串。透過將.放置在兩個字串之間,可以將它們拼接在一起,形成一個新的字串。 $string1=&qu

全角英文字母變成半角字母的方法在日常生活和工作中,有時候我們會遇到需要將全角英文字母轉換為半角字母的情況,例如在輸入電腦密碼、編輯文件或設計排版時。全角英文字母和數字是指寬度與中文字符相同的字符,而半角英文字母則是指寬度較窄的字符。在實際操作中,我們需要掌握一些簡單的方法,將全角英文字母轉換為半角字母,以便更方便地處理文字和數字。一、全角英文字母與半角英

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼
