@tahir.manzoor 您好
在使用doc.getMailMerge().setFieldMergingCallback()這個callback方法的時候,會出現IllegalAccessError 的錯誤訊息,但我看fieldMerging已經設定為 public狀態,這會是哪邊的問題呢?IllegalAccessError.7z (8.0 KB)
您好,已修改原始碼並上傳如附件asposeHelp.7z (17.0 KB),另想問doc.getMailMerge().setFieldMergingCallback(…),的參數是要餵一個Java inner class才可以嗎?
我们已经使用最新版本的 Aspose.Words for Java 21.9 测试了该场景,但没有发现共享问题。 所以,请使用 Aspose.Words for Java 21.9。
您可以将 Aspose.Words 与 Java API 一起使用。 是的,您可以使用 Java 内部类,如下所示。
doc.getMailMerge().setFieldMergingCallback(new IFieldMergingCallback() {
private DocumentBuilder mBuilder;
public void fieldMerging(FieldMergingArgs e) throws Exception {
if (mBuilder == null)
mBuilder = new DocumentBuilder(e.getDocument());
if ("Fridge".equals(e.getFieldName())) {
Row row = (Row)e.getField().getStart().getAncestor(NodeType.ROW);
if(row != null)
{
mBuilder.moveToMergeField("Fridge");
StructuredDocumentTag checkBox = new StructuredDocumentTag(mBuilder.getDocument(), SdtType.CHECKBOX, MarkupLevel.INLINE);
StructuredDocumentTag checkBox2 = new StructuredDocumentTag(mBuilder.getDocument(), SdtType.CHECKBOX, MarkupLevel.INLINE);
if (e.getFieldValue().equals("Y")){
checkBox.setChecked(true);
checkBox2.setChecked(false);
}else if (e.getFieldValue().equals("N")){
checkBox.setChecked(false);
checkBox2.setChecked(true);
}
mBuilder.insertNode(checkBox);
mBuilder.write("是");
mBuilder.insertNode(checkBox2);
mBuilder.write("否");
}
}
if ("Freezer".equals(e.getFieldName())) {
Row row = (Row)e.getField().getStart().getAncestor(NodeType.ROW);
if(row != null)
{
mBuilder.moveToMergeField("Freezer");
StructuredDocumentTag checkBox = new StructuredDocumentTag(mBuilder.getDocument(), SdtType.CHECKBOX, MarkupLevel.INLINE);
StructuredDocumentTag checkBox2 = new StructuredDocumentTag(mBuilder.getDocument(), SdtType.CHECKBOX, MarkupLevel.INLINE);
if (e.getFieldValue().equals("Y")){
checkBox.setChecked(true);
checkBox2.setChecked(false);
}else if (e.getFieldValue().equals("N")){
checkBox.setChecked(false);
checkBox2.setChecked(true);
}
mBuilder.insertNode(checkBox);
mBuilder.write("是");
mBuilder.insertNode(checkBox2);
mBuilder.write("否");
}
}
}
@Override
public void imageFieldMerging(ImageFieldMergingArgs arg0) throws Exception {
// TODO Auto-generated method stub
}});