docx_template 0.3.0-nullsafety docx_template: ^0.3.0-nullsafety copied to clipboard
A Docx template engine.
docx_template_dart #
A Docx template engine
Generates docx from template file (see template.docx in repo root) with content controls. First, Enable developer mode in MS Word to see content controls tags. Then, Go to the Developer tab and enable Design Mode. Tags will appear, then click Properties to open a window with options, where tag is the name of the tag, for example: list, table, text, plain, img. Title - name of the block, for example: cars. If we set the tag equal to 'list' and the title equal to 'cars', then we must use the corresponding ListContent ('cars', [here contents]), for the 'text' tag and the title equal to 'block_name' we use TextContent('block_name', 'Example text') etc.
Example #
final f = File("template.docx");
final docx = await DocxTemplate.fromBytes(await f.readAsBytes());
/*
Or in the case of Flutter, you can use rootBundle.load, then get bytes
final data = await rootBundle.load('lib/assets/users.docx');
final bytes = data.buffer.asUint8List();
final docx = await DocxTemplate.fromBytes(bytes);
*/
// Load test image for inserting in docx
final testFileContent = await File('test.jpg').readAsBytes();
Content c = Content();
c
..add(TextContent("docname", "Simple docname"))
..add(TextContent("passport", "Passport NE0323 4456673"))
..add(TableContent("table", [
RowContent()
..add(TextContent("key1", "Paul"))
..add(TextContent("key2", "Viberg"))
..add(TextContent("key3", "Engineer")),
RowContent()
..add(TextContent("key1", "Alex"))
..add(TextContent("key2", "Houser"))
..add(TextContent("key3", "CEO & Founder"))
..add(ListContent("tablelist", [
TextContent("value", "Mercedes-Benz C-Class S205"),
TextContent("value", "Lexus LX 570")
]))
]))
..add(ListContent("list", [
TextContent("value", "Engine")
..add(ListContent("listnested", [
TextContent("value", "BMW M30"),
TextContent("value", "2GZ GE")
])),
TextContent("value", "Gearbox"),
TextContent("value", "Chassis")
]))
..add(ListContent("plainlist", [
PlainContent("plainview")
..add(TableContent("table", [
RowContent()
..add(TextContent("key1", "Paul"))
..add(TextContent("key2", "Viberg"))
..add(TextContent("key3", "Engineer")),
RowContent()
..add(TextContent("key1", "Alex"))
..add(TextContent("key2", "Houser"))
..add(TextContent("key3", "CEO & Founder"))
..add(ListContent("tablelist", [
TextContent("value", "Mercedes-Benz C-Class S205"),
TextContent("value", "Lexus LX 570")
]))
])),
PlainContent("plainview")
..add(TableContent("table", [
RowContent()
..add(TextContent("key1", "Nathan"))
..add(TextContent("key2", "Anceaux"))
..add(TextContent("key3", "Music artist"))
..add(ListContent(
"tablelist", [TextContent("value", "Peugeot 508")])),
RowContent()
..add(TextContent("key1", "Louis"))
..add(TextContent("key2", "Houplain"))
..add(TextContent("key3", "Music artist"))
..add(ListContent("tablelist", [
TextContent("value", "Range Rover Velar"),
TextContent("value", "Lada Vesta SW Sport")
]))
])),
]))
..add(ListContent("multilineList", [
PlainContent("multilinePlain")
..add(TextContent('multilineText', 'line 1')),
PlainContent("multilinePlain")
..add(TextContent('multilineText', 'line 2')),
PlainContent("multilinePlain")
..add(TextContent('multilineText', 'line 3'))
]))
..add(TextContent('multilineText2', 'line 1\nline 2\n line 3'))
..add(ImageContent('img', testFileContent));
final d = await docx.generate(c);
final of = File('generated.docx');
if (d != null) await of.writeAsBytes(d);