{"id":1838,"date":"2016-02-03T07:10:47","date_gmt":"2016-02-03T07:10:47","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=1838"},"modified":"2016-03-18T10:33:54","modified_gmt":"2016-03-18T10:33:54","slug":"high-performance-docx-generation-using-documentassembler","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/high-performance-docx-generation-using-documentassembler\/","title":{"rendered":"High Performance DOCX Generation using DocumentAssembler"},"content":{"rendered":"<p><span class=\"Back\"><a class=\"Back\" href=\"https:\/\/www.ericwhite.com\/blog\/documentassembler-developer-center\/\">Return to the<br \/>DocumentAssembler<br \/>Developer Center<\/a><\/span>Release of DocumentAssembler, a high-performance tool for generating customized documents from any data source that can be serialized as XML. \u00a0DocumentAssembler is in Open-Xml-PowerTools version 4.0, which is <a href=\"https:\/\/github.com\/OfficeDev\/Open-Xml-PowerTools\" target=\"_blank\">available on GitHub<\/a>.<\/p>\n<p><a href=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/02\/0815.DocumentAssembler.PNG-400x0.png\" rel=\"attachment wp-att-1839\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1839\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/02\/0815.DocumentAssembler.PNG-400x0.png\" alt=\"0815.DocumentAssembler.PNG-400x0\" width=\"400\" height=\"295\" srcset=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/02\/0815.DocumentAssembler.PNG-400x0.png 400w, https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/02\/0815.DocumentAssembler.PNG-400x0-300x221.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<p>The DocumentAssembler module processes a template document that contains special strings of text that specify how to pull data from the XML (using XPath expressions) to populate the assembled document. \u00a0It has the following features:<\/p>\n<ul>\n<li>Formatting from the template document flows through to the assembled document. \u00a0This gives you the flexibility you need to format the generated documents as your scenario requires.<\/li>\n<li>Generate tables from repeating data in the XML. \u00a0Formatting of the table from the template document flows through to the generated documents.<\/li>\n<li>Generate repeating content from repeating data in the XML.<\/li>\n<li>Conditionally include content in the generated document based on data in the XML.<\/li>\n<\/ul>\n<p>The following screen-cast demonstrates and discusses DocumentAssembler in depth:<\/p>\n<p><iframe loading=\"lazy\" title=\"DocumentAssembler Overview\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/DbNLe1ba8e0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Return to theDocumentAssemblerDeveloper CenterRelease of DocumentAssembler, a high-performance tool for generating customized documents from any data source that can be serialized as XML. \u00a0DocumentAssembler is in Open-Xml-PowerTools version 4.0, which is available on GitHub. The DocumentAssembler module processes a template document that contains special strings of text that specify how to pull data from the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-1838","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/1838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=1838"}],"version-history":[{"count":4,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/1838\/revisions"}],"predecessor-version":[{"id":2635,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/1838\/revisions\/2635"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=1838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}