@akashkaware,
You can try any of the following workarounds to fix the output:
- By taking out the BookmarkStart nodes from inside the FORMTEXT fields.
Java code:
Map<String, String> bookmarkValueMap = new HashMap<String, String>();
bookmarkValueMap.put("OFFEN_NAME", "JOHN SMITH");
bookmarkValueMap.put("DOB", "2020/03/03");
bookmarkValueMap.put("MIN", "00043948487");
bookmarkValueMap.put("CRT_DATE_REQ", "2005/06/06");
bookmarkValueMap.put("COURT_DATE", "2005/06/06");
bookmarkValueMap.put("COURT", "BIG COURT VALUE");
bookmarkValueMap.put("OFFENCES", "OFFENCES");
bookmarkValueMap.put("STAFF_NAME", "ROGER DINTWIT");
Document doc = new Document("C:\\Temp\\eclipse-aspose-workspace\\SARN_beforeReplacement_9.docx");
for (Field field : doc.getRange().getFields()) {
if (field.getType() == FieldType.FIELD_FORM_TEXT_INPUT) {
FieldFormText fieldFormText = (FieldFormText) field;
BookmarkStart bookmarkStart = null;
if (fieldFormText.getStart().getNextSibling().getNodeType() == NodeType.BOOKMARK_START) {
bookmarkStart = (BookmarkStart) fieldFormText.getStart().getNextSibling();
}
if (bookmarkStart != null) {
fieldFormText.getStart().getParentNode().insertBefore(bookmarkStart, fieldFormText.getStart());
}
}
}
BookmarkCollection bookMarkCollection = doc.getRange().getBookmarks();
bookMarkCollection.forEach(bookMark -> {
System.out.println(bookMark.getName());
if (bookmarkValueMap.containsKey(bookMark.getName())) {
String replacementText = bookmarkValueMap.get(bookMark.getName());
try {
bookMark.setText(replacementText);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
doc.save("C:\\temp\\eclipse-aspose-workspace\\awjava-20.9.docx");
- If there are fields in your Word document, it would be better to use the form fields instead of bookmarks.
Java code:
Map<String, String> bookmarkValueMap = new HashMap<String, String>();
bookmarkValueMap.put("OFFEN_NAME", "JOHN SMITH");
bookmarkValueMap.put("DOB", "2020/03/03");
bookmarkValueMap.put("MIN", "00043948487");
bookmarkValueMap.put("CRT_DATE_REQ", "2005/06/06");
bookmarkValueMap.put("COURT_DATE", "2005/06/06");
bookmarkValueMap.put("COURT", "BIG COURT VALUE");
bookmarkValueMap.put("OFFENCES", "OFFENCES");
bookmarkValueMap.put("STAFF_NAME", "ROGER DINTWIT");
Document doc = new Document("C:\\Temp\\eclipse-aspose-workspace\\SARN_beforeReplacement_9.docx");
FormFieldCollection formFieldCollection = doc.getRange().getFormFields();
formFieldCollection.forEach(bookMark -> {
if (bookmarkValueMap.containsKey(bookMark.getName())) {
String replacementText = bookmarkValueMap.get(bookMark.getName());
try {
bookMark.setTextInputValue(replacementText);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
doc.save("C:\\temp\\eclipse-aspose-workspace\\awjava-20.9-2nd.docx");