提供附件:
1.doc.zip (5.9 KB)
代码:
private static void SaveToDocxTeset() {
URL mainClassURL = Main.class.getProtectionDomain().getCodeSource().getLocation();
String current = “/” + FilenameUtils.getPath(mainClassURL.getPath());
String lincenseFile = current + “license.xml”;
if (!Utils.setLicense(lincenseFile)) {
System.out.println(“license set error!”);
return;
}
try {
Document mInWordDoc = new Document("/data/temp/1.doc");
ArrayList<FieldStart> hyperlinkStarts = new ArrayList<FieldStart>();
NodeCollection starts = mInWordDoc.getChildNodes(NodeType.FIELD_START, true);
for (FieldStart start : (Iterable<FieldStart>) starts) {
if (start.getFieldType() == FieldType.FIELD_HYPERLINK) {
hyperlinkStarts.add(start);
Node currentNode = start.getNextSibling();
while (currentNode.getNodeType() != NodeType.FIELD_SEPARATOR) {
currentNode = currentNode.getNextSibling();
currentNode.getPreviousSibling().remove();
}
Node fieldSeparator = currentNode;
while (currentNode.getNodeType() != NodeType.FIELD_END) {
if (currentNode.getNodeType() == NodeType.RUN) {
Run run = (Run) currentNode;
run.getFont().setColor(Color.BLACK);
run.getFont().setUnderline(Underline.NONE);
}
currentNode = currentNode.getNextSibling();
}
fieldSeparator.remove();
currentNode.remove();
}
}
for (FieldStart start : hyperlinkStarts) {
start.remove();
}
mInWordDoc.save("/data/temp/1.docx", SaveFormat.DOCX);
} catch (Exception e) {
e.printStackTrace();
}
}
错误信息:
java.lang.IllegalStateException: Invalid document model. Operation can not be completed.
at com.aspose.words.zz3D.zzZZ6(Unknown Source)
at com.aspose.words.zz3D.zzZ(Unknown Source)
at com.aspose.words.zz3D.zzZ(Unknown Source)
at com.aspose.words.zz3D.zzZ(Unknown Source)
at com.aspose.words.FieldChar.getField(Unknown Source)
at com.aspose.words.zzZEY.zzU(Unknown Source)
at com.aspose.words.zzZEY.zzW(Unknown Source)
at com.aspose.words.zz8C.visitFieldEnd(Unknown Source)
at com.aspose.words.FieldEnd.accept(Unknown Source)
at com.aspose.words.CompositeNode.acceptChildren(Unknown Source)
at com.aspose.words.CompositeNode.acceptCore(Unknown Source)
at com.aspose.words.Paragraph.accept(Unknown Source)
at com.aspose.words.CompositeNode.acceptChildren(Unknown Source)
at com.aspose.words.CompositeNode.acceptCore(Unknown Source)
at com.aspose.words.Body.accept(Unknown Source)
at com.aspose.words.zz8C.zzW(Unknown Source)
at com.aspose.words.zz8D.zz3t(Unknown Source)
at com.aspose.words.zz8C.write(Unknown Source)
at com.aspose.words.zz72.zzZ(Unknown Source)
at com.aspose.words.zzZHA.zzZ(Unknown Source)
at com.aspose.words.Document.zzZ(Unknown Source)
at com.aspose.words.Document.zzZ(Unknown Source)
at com.aspose.words.Document.save(Unknown Source)
at com.aspose.words.Document.save(Unknown Source)
如果代码改成下面这种,就不会报错:
try {
Document mInWordDoc = new Document("/data/temp/1.doc");
mInWordDoc.save("/data/temp/1.docx", SaveFormat.DOCX);
} catch (Exception e) {
e.printStackTrace();
}