Package org.docx4j.model.fields
Class AbstractMerger
java.lang.Object
org.docx4j.model.fields.AbstractMerger
- Direct Known Subclasses:
FORMTEXTMerger,MailMerger
- Since:
- 11.5.12
- Author:
- jharrop
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classIf we're converting MERGEFIELD to FORMTEXT, it is desirable to make the w:fldChar/w:ffData/w:name unique within the docx (though Word 2010 can still open the docx if they aren't), and to remove spaces -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static MailMerger.OutputFieldprotected WordprocessingMLPackage -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static voidcanonicaliseStarts(ComplexFieldLocator fl, List<FieldRef> fieldRefs) getConsolidatedResultCrude(List<Map<DataFieldName, String>> data, boolean processHeadersAndFooters) A "poor man's" approach, which generates the mail merge results as a single docx, and just hopes for the best.protected static StringgetTextInsideContent(ContentAccessor paragraph) Parse through all content inside the paragraph to concatenate all values inside a textvoidperformMerge(Map<DataFieldName, String> data, boolean processHeadersAndFooters) Perform merge on a single instance.performOnInstance(List<Object> contentList, Map<DataFieldName, String> datamap, AbstractMerger.FormTextFieldNames formTextFieldNames) protected static voidrecursiveRemove(ContentAccessor content, Object needToBeRemoved) To remove an object from the docx templateprotected static voidRemove the field but preserve the paragraph and content around itprotected static voidsetFormFieldProperties(FieldRef fr, String ffName, String ffTextInputFormat) static voidsetOutputField(MailMerger.OutputField fieldFate) What to do with the MERGEFIELD in the output docx.
-
Field Details
-
input
-
fieldFate
-
-
Constructor Details
-
AbstractMerger
-
-
Method Details
-
getConsolidatedResultCrude
public WordprocessingMLPackage getConsolidatedResultCrude(List<Map<DataFieldName, String>> data, boolean processHeadersAndFooters) throws Docx4JExceptionA "poor man's" approach, which generates the mail merge results as a single docx, and just hopes for the best. Images and hyperlinks should be ok. But numbering will continue, as will footnotes/endnotes.- Parameters:
input-data-processHeadersAndFooters- process headers and footers in FIRST section only. If you have multiple sections in your input docx, performMerge is a better approach- Returns:
- Throws:
Docx4JException- Since:
- 11.5.12
-
performMerge
public void performMerge(Map<DataFieldName, String> data, boolean processHeadersAndFooters) throws Docx4JExceptionPerform merge on a single instance. This is the best approach, if your input has headers/footers in multiple sections. If you are using MergeDocx, you can use that to join the instances into a single docx. WARNING: The input docx will be modified, so input a copy if that is a problem. This is left to the user, since that can potentially be more efficient, than doing it here.- Parameters:
input-data-processHeadersAndFooters-- Throws:
Docx4JException
-
performOnInstance
protected abstract List<Object> performOnInstance(List<Object> contentList, Map<DataFieldName, String> datamap, AbstractMerger.FormTextFieldNames formTextFieldNames) throws Docx4JException- Throws:
Docx4JException
-
canonicaliseStarts
protected static void canonicaliseStarts(ComplexFieldLocator fl, List<FieldRef> fieldRefs) throws Docx4JException - Parameters:
fl-fieldRefs-- Throws:
Docx4JException
-
removeSimpleField
Remove the field but preserve the paragraph and content around it- Parameters:
fr-
-
getTextInsideContent
Parse through all content inside the paragraph to concatenate all values inside a text- Parameters:
paragraph- The paragraph which contains (or not) data- Returns:
- All text inside the paragraph
-
recursiveRemove
To remove an object from the docx template- Parameters:
content- Body (or other part) of the templateneedToBeRemoved- The object that will be removed from the content
-
setOutputField
What to do with the MERGEFIELD in the output docx. Default is REMOVED. KEEP_MERGEFIELD will allow you to perform another merge on the output document. The AS_FORMTEXT options convert the MERGEFIELD to a FORMTEXT field. This is convenient if you want users to be able to edit the field, where editing is restricted to forms.- Parameters:
fieldFate-
-
setFormFieldProperties
-