请问如何合并若干个OfficeMath对象?要求保留原有的格式,包括括号这些属性
Could you please provide more information about the specific Aspose product you are using and the programming language you are working with? This will help us provide a more accurate answer.
我使用的是aspose word java产品
@qhkyqhfe 您可以使用以下简单代码来连接 OfficeMath 节点:
Document doc = new Document("C:\\Temp\\in.docx");
// Get two top level OfficeMath objects.
// For demonstration purposes there are two paragraph with OfficeMath objects.
OfficeMath math1 = (OfficeMath)doc.getFirstSection().getBody().getFirstParagraph().getChild(NodeType.OFFICE_MATH, 0, true);
OfficeMath math2 = (OfficeMath)doc.getFirstSection().getBody().getLastParagraph().getChild(NodeType.OFFICE_MATH, 0, true);
// Append content of one OfficeMath to another.
while (math2.hasChildNodes())
math1.appendChild(math2.getFirstChild());
// Remove the second OfficeMath.
math2.remove();
doc.save("C:\\Temp\\out.docx");
不好意思。还有一个问题。如何根据一个字符串创建出一个OfficeMath对象,在不使用DocumentBuilder的情况下。之前您给我的例子是通过DocumentBuilder的insertField方法实现的。但是实际用起来DocumentBuilder并不方便。
我尝试用Paragraph的appendField方法直接将表达式的字符串添加到域里,但是报错了。错误是 Bookmark相关的错误
@qhkyqhfe 您可以考虑使用以下代码来插入字段,而无需使用 DocumentBuilder:
new FieldBuilder(FieldType.FIELD_EQUATION)
.addSwitch("\\f")
.addArgument("(d,dx)(u+v)")
.addArgument("=")
.addSwitch("\\f")
.addArgument("(du,dx)+")
.addSwitch("\\f")
.addArgument("(dv,dx)")
.buildAndInsert(doc.getFirstSection().getBody().getFirstParagraph());
或
doc.getFirstSection().getBody().getFirstParagraph().appendField("EQ \\f(d,dx)(u + v) = \\f(du,dx) + \\f(dv,dx)");