A word document template plugin to easily populate and generate word documents from templates
Generate From Asset template .docx | Generate From Remote Template .docx | Generate From Local Template .docx |
add docxtpl
plugin to your pubspec.yaml
file
dependencies:
flutter:
sdk: flutter
docxtpl:
python
background i found helpful packages that work around templating
and i thought maybe i can do something like that in flutter
.docx
word document, you insert jinja2
-like tags like {{my-tag-name}}
for example. If you want to put a name
placeholder to populate later using this plugin, do it like {{name}}
directly in the document..docx
(xml formart) and this is your .docx template file (tpl)docxtpl
plugin to generate as many word documents as you want from this tpl file and the fields you will providedocxtpl
pluginBefore: word document template .docx | After(with docxtpl plugin): template .docx |
First import the docxtpl
plugin in your dart file
import 'package:docxtpl/docxtpl.dart';
Make sure you have created your .docx
template file and saved it either in your asset folder
or remote
or in your device local storage
.
docxtpl
can work with generated templates from asset folder
, remote file
and device storage
file.Make sure you have added your .docx word tpl asset file in pubspec.yaml
file
final DocxTpl docxTpl = DocxTpl(
docxTemplate: 'assets/invite.docx', // path where tpl file is
isAssetFile: true, // flag to true for tpl file from asset
);
// fields corresponding to merge fields found to fill the template with
var templateData = {
'name': 'Dart | Flutter Developer',
'event': 'DocxTpl Plugin Contribution',
'venue': 'Github',
'time': 'Anytime',
'row': '1',
'guest': 'Flutter',
'sender': '@DonnC',
};
var response = await docxTpl.parseDocxTpl();
print(response.mergeStatus);
print(response.message);
if(response.mergeStatus == MergeResponseStatus.Success) {
// success, proceed
// get merge fields extracted by the plugin to know which fields to fill
var fields = docxTpl.getMergeFields();
print('Template file fields found: ');
print(fields);
await docxTpl.writeMergeFields(data: templateData);
var savedFile = await docxTpl.save('invitation.docx');
}
...
Api changes are available on CHANGELOG
docxtpl
is a inspiration from python libraries that does almost the same i.e word document templating. It is inspired mainly from python-docx-template and docx-mailmerge.python
)