package org.docx4j.samples;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.docx4j.model.fields.merge.DataFieldName;
import org.docx4j.model.fields.merge.MailMerger.OutputField;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
/**
* Example of how to process mailing labels with MERGEFIELD / NEXT
*
* See http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/MERGEFIELD.html
*
*/
public class FieldsMailMergeNext {
public static void main(String[] args) throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(
new java.io.File(
System.getProperty("user.dir") + "/template.docx"));
List<Map<DataFieldName, String>> data = new ArrayList<Map<DataFieldName, String>>();
// Instance 1
Map<DataFieldName, String> map = new HashMap<DataFieldName, String>();
map.put( new DataFieldName("Anrede"), "Daffy duck");
map.put( new DataFieldName("Vorname"), "Plutext");
data.add(map);
// Instance 2
map = new HashMap<DataFieldName, String>();
map.put( new DataFieldName("Anrede"), "Jason");
map.put(new DataFieldName("Vorname"), "Collins Street");
data.add(map);
// How to treat the MERGEFIELD, in the output?
org.docx4j.model.fields.merge.MailMerger.setMERGEFIELDInOutput(OutputField.REMOVED);
org.docx4j.model.fields.merge.MailMergerWithNext.performLabelMerge(wordMLPackage, data);
wordMLPackage.save(new java.io.File(
System.getProperty("user.dir") + "/OUT_FieldsMailMerge.docx") );
}
}