我正在将Word(2003和2007)文档转换为HTML格式。我已经设法从Word文档中读取文本,格式等。但是该文档包含一些隐藏文本,如“标题更改历史记录”,不需要在页面上显示。有什么方法可以从Word文档中识别隐藏的文本。使用Apache POI标识隐藏文本Word 2003/2007
任何帮助将是非常有价值的。
我正在将Word(2003和2007)文档转换为HTML格式。我已经设法从Word文档中读取文本,格式等。但是该文档包含一些隐藏文本,如“标题更改历史记录”,不需要在页面上显示。有什么方法可以从Word文档中识别隐藏的文本。使用Apache POI标识隐藏文本Word 2003/2007
任何帮助将是非常有价值的。
我不知道这是否是一个完整的(甚至精确)解决方案,但在DOCX格式的文件,似乎你可以检查一个字符运行由
XWPFRun cr;
if (cr.getCTR().getRPr().getVanish() != null){
// it is hidden
}
了隐藏这从反向工程的XML,至少在我的用法似乎工作。对于额外的(更明智的)输入以及以旧的二进制文件格式来做同样的事情的方式会非常高兴。
下面的代码段有助于确定如果文本被隐藏
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;
}
}
从我在POI文档中看到的只能读取和操作标题,但没有检索历史记录的选项。如果有人能够指出相关的参考文献,那么很容易承认错误。 –