2011-08-23 237 views
1

我正在將Word(2003和2007)文檔轉換爲HTML格式。我已經設法從Word文檔中讀取文本,格式等。但是該文檔包含一些隱藏文本,如「標題更改歷史記錄」,不需要在頁面上顯示。有什麼方法可以從Word文檔中識別隱藏的文本。使用Apache POI標識隱藏文本Word 2003/2007

任何幫助將是非常有價值的。

+0

從我在POI文檔中看到的只能讀取和操作標題,但沒有檢索歷史記錄的選項。如果有人能夠指出相關的參考文獻,那麼很容易承認錯誤。 –

回答

2

我不知道這是否是一個完整的(甚至精確)解決方案,但在DOCX格式的文件,似乎你可以檢查一個字符運行由

XWPFRun cr; 
if (cr.getCTR().getRPr().getVanish() != null){ 
    // it is hidden 
} 

了隱藏這從反向工程的XML,至少在我的用法似乎工作。對於額外的(更明智的)輸入以及以舊的二進制文件格式來做同樣的事情的方式會非常高興。

1

下面的代碼段有助於確定如果文本被隱藏

POIFSFileSystem FS = NULL;

boolean isHidden = false; 
    try { 
     fs = new POIFSFileSystem(new FileInputStream(filesname)); 
     HWPFDocument doc = new HWPFDocument(fs); 
     WordExtractor we = new WordExtractor(doc); 

     String[] paragraphs = we.getParagraphText(); 

     System.out.println("Word Document has " + paragraphs.length 
       + " paragraphs"); 
     Range range = doc.getRange(); 

     for (int k = 0; k < range.numParagraphs(); k++) { 

      org.apache.poi.hwpf.usermodel.Paragraph paragraph = range 
        .getParagraph(k); 
      paragraph.text().trim(); 
      paragraph.text().replaceAll("\\cM?\r?\n", ""); 

      for (int j = 0; j < paragraph.numCharacterRuns(); j++) { 

       org.apache.poi.hwpf.usermodel.CharacterRun cr = paragraph 
         .getCharacterRun(j); 

       if (cr.isVanished()) { 
        // it is hidden 
        System.out.println("text is hidden "); 
        isHidden = true; 
        break; 
       } 

      } 
相關問題