2011-08-23 26 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; 
       } 

      } 
相关问题