首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Apache POI识别隐藏文本Word 2003/2007

使用Apache POI识别隐藏文本Word 2003/2007
EN

Stack Overflow用户
提问于 2011-08-23 17:36:31
回答 2查看 1.1K关注 0票数 2

我正在将Word (2003和2007)文档转换为HTML格式。我已经设法从Word文档中读取了文本、格式等。但是文档包含一些隐藏的文本,比如“Header Change History”,这些文本不需要显示在页面上。有没有办法从Word文档中识别隐藏的文本。

任何帮助都是非常有价值的。

EN

回答 2

Stack Overflow用户

发布于 2012-08-07 14:57:11

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

代码语言:javascript
复制
XWPFRun cr;
if (cr.getCTR().getRPr().getVanish() != null){
   // it is hidden
}

这是从对XML进行逆向工程中获得的,至少在我的使用中它似乎是有效的。将非常高兴获得额外的(更有见地的)输入,以及一种在旧的二进制文件格式中做同样事情的方法。

票数 3
EN

Stack Overflow用户

发布于 2012-11-22 12:09:59

下面的代码片段有助于识别文本是否隐藏

POIFSFileSystem fs = null;

代码语言:javascript
复制
    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;
                }

            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7158955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档