Hi,
Our application creates word documents from templates. We were using a third party solution for this. We have decided to move to Aspose.Words java for some reasons. We are finding a problem with respect to existing templates format.
The existing templates use bookmarks to denote start and end of a repeating section for mail merge. But aspose uses tableStart: and tableEnd merge fields. We have hundreds of templates and manually identifing the bookmarks and modifying them to use tableStart and tableEnd merge fields is difficult. We have 2 questions.
- Is it possilbe to programatically identify bookmarkstart and bookmarkend and then in the same place, place tableStart and tableEnd fields?
or
- Can we do the repeating merge with bookmarks indicating start and end positions instead of tableStart and tableEnd
Hi
Thank you for your interest in Aspose.Words for java.
- You can try using the following code to replace BookMarkStart and BookmarkEnd nodes with TableStart and TableEnd mergefields.
//Open document
Document doc = new Document("in.doc");
//Create DocumentBuilder
DocumentBuilder builder = new DocumentBuilder(doc);
String bookmarkName = "myTable";
//Create TableStart merge filed code
String startFieldCode = "MERGEFIELD TableStart:" + bookmarkName + " \\* MERGEFORMAT";
//Create TableStart merge filed value
String startFieldValue = "«TableStart:" + bookmarkName + "»";
//Create TableEnd merge filed code
String endFieldCode = "MERGEFIELD TableEnd:" + bookmarkName + " \\* MERGEFORMAT";
//Create TableEnd merge filed value
String endFieldValue = "«TableEnd:" + bookmarkName + "»";
//Move cursor to BookmarkStart
builder.moveToBookmark(bookmarkName, true, true);
//Insert TableStart field
builder.insertField(startFieldCode, startFieldValue);
//Move cursor to BookmarkEnd
builder.moveToBookmark(bookmarkName, false, false);
//Insert TableEnd field
builder.insertField(endFieldCode, endFieldValue);
//Remove bookmark
doc.getRange().getBookmarks().get(bookmarkName).getBookmarkEnd().remove();
doc.getRange().getBookmarks().get(bookmarkName).getBookmarkStart().remove();
//Save document
doc.save("out.doc");
I hope this could help you.
2. Unfortunately you can’t do the repeating merge with bookmarks.
Best regards.