【问题标题】:Identify hidden text Word 2003/2007 using Apache POI使用 Apache POI 识别隐藏文本 Word 2003/2007
【发布时间】:2012-11-22 12:09:59
【问题描述】:

我正在将 Word(2003 和 2007)文档转换为 HTML 格式。我已经设法从 Word 文档中读取文本、格式等。但是该文档包含一些隐藏文本,例如“标题更改历史记录”,不需要在页面上显示。有什么方法可以识别 Word 文档中的隐藏文本。

任何帮助都会非常有价值。

【问题讨论】:

  • 根据我在 POI 文档中看到的内容,您只能读取和操作标头,但没有检索历史记录的选项。如果有人能指出相关的参考资料,很高兴承认错误。

标签: java ms-word apache-poi


【解决方案1】:

我不确定这是否是一个完整(甚至准确)的解决方案,但是对于DOCX格式的文件,似乎可以检查一个字符运行是否被隐藏了

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

通过对 XML 进行逆向工程得到这个,至少在我的使用中它似乎有效。很高兴获得额外的(更明智的)输入,以及以旧的二进制文件格式做同样事情的方法。

【讨论】:

    【解决方案2】:

    以下代码 sn-p 有助于识别文本是否隐藏

    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;
                    }
    
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多