你好。我用的是java 24.5 最新版本的jar包,但是没有创建或者修改OfficeMath的api只有识别OfficeMath,还有左对齐右对齐这些。请问是没有这个功能吗?如果没有的话,请问有什么框架和方法可以做这些功能呢
我想问一下 aspose java word 新创建一个OfficeMath对象 这个api是什么
@qhkyqhfe 不幸的是,目前无法创建新的 OfficeMath 节点。目前,已实现导入/导出过程中对这些节点的支持。还可以使用 Justification、DisplayType、MathObjectType 属性。
@qhkyqhfe 您可以使用方程字段创建数学对象,并将其转换为办公数学。此外,您还可以通过 Run 节点更改 OfficeMath 节点的文本,但在这种情况下,创建一个新字段并用旧字段替换可能会更快。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
FieldEQ field = (FieldEQ) builder.insertField(FieldType.FIELD_EQUATION, true);
builder.moveTo(field.getSeparator());
builder.write("\\f(d,dx)(u + v) = \\f(du,dx) + \\f(dv,dx)");
builder.moveTo(field.getStart().getParentNode());
builder.insertParagraph();
doc.save("field.docx");
Document doc = new Document("field.docx");
// Get all EQ Fields in the document.
FieldCollection fields = doc.getRange().getFields();
ArrayList<FieldEQ> eqFields = new ArrayList<>();
for (Field eqField : fields) {
if (eqField.getType() == FieldType.FIELD_EQUATION) {
eqFields.add((FieldEQ) eqField);
}
}
// Convert EQ fields to OfficeMath
for (FieldEQ eq : eqFields) {
OfficeMath math = eq.asOfficeMath();
eq.getEnd().getParentNode().insertAfter(math, eq.getEnd());
eq.remove();
}
doc.save("OfficeMath.docx");
Document doc = new Document("OfficeMath.docx");
OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
for (Run run : (Iterable<Run>) officeMath.getChildNodes(NodeType.RUN, true)) {
System.out.print(run.getText());
}