diff --git a/src/main/resources/freemarker/descriptorlist/booklet.ftl b/src/main/resources/freemarker/descriptorlist/booklet.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..9ac3acf2d6373728235508f5d65c58e838247ce2
--- /dev/null
+++ b/src/main/resources/freemarker/descriptorlist/booklet.ftl
@@ -0,0 +1,98 @@
+<#macro isPublished published what>
+ <#if published>
+
+ <#else>
+
Note: This ${what} is not published.
<#lt>
+ #if>
+#macro>
+
+
+<#assign vocabprinted = { "dummy":true } />
+<#macro printVocabulary vocabulary>
+ <#compress>
+ **Note:** This descriptor uses the **${vocabulary.title}** controlled vocabulary
+ <#if vocabulary.publisher??>
+ published by **${vocabulary.publisher}**
+ <#else>
+ maintained by **${vocabulary.owner.name}**
+ #if>.
+ #compress>
+
+
+
+ <#if vocabprinted[vocabulary.uuid]??>
+ <#else>
+ ${vocabulary.description!}<#lt>
+ <#assign vocabprinted = vocabprinted + { vocabulary.uuid:true } />
+ #if>
+
+#macro>
+
+<#macro printDescriptor descriptor>
+ # ${descriptor.title} <#if descriptor.uom??>[${descriptor.uom}]#if><#lt>
+
+ <@isPublished published=descriptor.published what="descriptor" />
+
+ <#if descriptor.description??>
+ ${descriptor.description}<#lt>
+ <#else>
+ > No description.<#lt>
+ #if>
+
+
+ <#list descriptor.terms>
+ <#compress>
+ |Code|Term|Description|
+ |---|---|---|
+ <#items as term>
+ |**${term.code}**|${term.title}|${term.description!}|
+ #items>
+ #compress>
+ #list>
+
+ <#if descriptor.vocabulary??>
+ <@printVocabulary vocabulary=descriptor.vocabulary />
+ #if>
+#macro>
+
+
+ ${descriptorList.title} <#lt>
+
+ ${descriptorList.versionTag}
+ <#if descriptorList.publisher??>
+ **${descriptorList.publisher}** <#lt>
+ <#else>
+ ${descriptorList.owner.name} <#lt>
+ #if>
+
+
+
+${descriptorList.description!}
+
+<@isPublished published=descriptorList.published what="descriptor list" />
+
+
+Version: ${descriptorList.versionTag} <#lt>
+<#if descriptorList.publisher??>
+Published by: **${descriptorList.publisher}** <#lt>
+<#else>
+Maintained by: ${descriptorList.owner.name} <#lt>
+#if>
+Last modified: ${descriptorList.lastModifiedDate?date} <#lt>
+Date registered: ${descriptorList.createdDate?date} <#lt>
+Record: ${descriptorList.uuid} v${descriptorList.version} <#lt>
+
+
+<#list descriptorList.descriptors>
+
+ <#items as descriptor>
+
+ <@printDescriptor descriptor=descriptor />
+
+ #items>
+
+<#else>
+
+> The descriptor list does not declare any descriptors.
+
+#list>
diff --git a/src/main/resources/freemarker/html.ftl b/src/main/resources/freemarker/html.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..814f2a4bd5c62ca05ad1558efca25de9d9162508
--- /dev/null
+++ b/src/main/resources/freemarker/html.ftl
@@ -0,0 +1,92 @@
+
+
+
+ ${title}
+
+
+
+
+
+
+
+
+ For internal use only. Do not distribute.
+
+
+${html}
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/sitemesh3.xml b/src/main/webapp/WEB-INF/sitemesh3.xml
index 3a6b329d1019c9c5ff799ddd2b475669ad7aab1c..7c83a521f1e8a0a7a1cac4740b13b55aadbf2015 100644
--- a/src/main/webapp/WEB-INF/sitemesh3.xml
+++ b/src/main/webapp/WEB-INF/sitemesh3.xml
@@ -23,6 +23,7 @@
text/html
+