diff --git a/templated_docs/__init__.py b/templated_docs/__init__.py
index 1e646e0..2b12ea7 100644
--- a/templated_docs/__init__.py
+++ b/templated_docs/__init__.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-
+import codecs
 from multiprocessing import Process, Queue
 import os.path
 import re
@@ -22,11 +22,11 @@
 from pylokit import Office
 
 import logging
+
 log = logging.getLogger(__name__)
 
 __version__ = '0.3.1'
 
-
 IMAGES_CONTEXT_KEY = '_templated_docs_imgs'
 
 
@@ -51,6 +51,7 @@ def fix_inline_tags(content):
     broken Django constructs. To remedy that, we find all the Django tags and
     variables and fix entities inside them.
     """
+
     def repl(match):
         text = match.group(0)
         text = text.replace('', ' ')
@@ -112,41 +113,50 @@ def fill_template(template_name, context, output_format='odt'):
 
     source_file = find_template_file(template_name)
     source_extension = os.path.splitext(source_file)[1]
-    source = zipfile.ZipFile(source_file, 'r')
-
     dest_file = NamedTemporaryFile(delete=False, suffix=source_extension)
-    dest = zipfile.ZipFile(dest_file, 'w')
-
-    manifest_data = ''
-    for name in source.namelist():
-        data = source.read(name)
-        if name.endswith('.xml'):
-            data = smart_str(data)
-
-        if any(name.endswith(file) for file in ('content.xml', 'styles.xml')):
-            template = Template(fix_inline_tags(data))
-            data = template.render(context)
-        elif name == 'META-INF/manifest.xml':
-            manifest_data = data[:-20]  # Cut off the closing  tag
-            continue  # We will append it at the very end
-        dest.writestr(name, smart_bytes(data))
-
-    for _, image in context.dicts[0].get(IMAGES_CONTEXT_KEY, {}).items():
-        filename = os.path.basename(image.name)
-        ext = os.path.splitext(filename)[1][1:]
-        manifest_data += ('\n'
-                          ) % locals()
-        image.open()
-        dest.writestr('Pictures/%s' % filename, image.read())
-        image.close()
-
-    manifest_data += ''
-    dest.writestr('META-INF/manifest.xml', manifest_data)
-
-    source.close()
-    dest.close()
+
+    if zipfile.is_zipfile(source_file):
+        with zipfile.ZipFile(source_file, 'r') as source:
+            with zipfile.ZipFile(dest_file, 'w') as dest:
+                manifest_data = ''
+                for name in source.namelist():
+                    data = source.read(name)
+                    if name.endswith('.xml'):
+                        data = smart_str(data)
+
+                    if any(name.endswith(file) for file in (
+                        'content.xml', 'styles.xml'
+                    )):
+                        template = Template(fix_inline_tags(data))
+                        data = template.render(context)
+                    elif name == 'META-INF/manifest.xml':
+                        # Cut off the closing  tag
+                        manifest_data = data[:-20]
+                        continue  # We will append it at the very end
+                    dest.writestr(name, smart_bytes(data))
+
+                for _, image in context.dicts[0].get(
+                    IMAGES_CONTEXT_KEY, {}
+                ).items():
+                    filename = os.path.basename(image.name)
+                    ext = os.path.splitext(filename)[1][1:]
+                    manifest_data += ('\n'
+                                      ) % locals()
+                    image.open()
+                    dest.writestr('Pictures/%s' % filename, image.read())
+                    image.close()
+
+                manifest_data += ''
+                dest.writestr('META-INF/manifest.xml', manifest_data)
+
+    else:
+        with codecs.open(source_file, 'rb', 'utf-8') as source:
+            template = Template(source.read())
+            dest_file.write(smart_bytes(template.render(context)))
+            dest_file.close()
 
     if source_extension[1:] != output_format:
         results = Queue()
diff --git a/tests/test_app/templates/correct_template.fodt b/tests/test_app/templates/correct_template.fodt
new file mode 100644
index 0000000..2f0e7ae
--- /dev/null
+++ b/tests/test_app/templates/correct_template.fodt
@@ -0,0 +1,247 @@
+
+
+
+ LibreOffice/5.2.7.2$Linux_X86_64 LibreOffice_project/20m0$Build-2Морозов АлександрМорозов Александр2016-07-13T10:10:00Z2016-07-13T10:11:00Z1PT60S
+ 
+  
+   0
+   0
+   36768
+   16850
+   true
+   false
+   
+    
+     view2
+     10883
+     2501
+     0
+     0
+     36767
+     16849
+     0
+     1
+     false
+     100
+     false
+    
+   
+  
+  
+   false
+   
+   false
+   false
+   false
+   false
+   false
+   true
+   true
+   false
+   
+   true
+   
+   false
+   false
+   true
+   false
+   true
+   false
+   1699386
+   false
+   false
+   true
+   false
+   false
+   true
+   true
+   true
+   true
+   true
+   true
+   true
+   false
+   false
+   1
+   false
+   true
+   false
+   
+   false
+   false
+   false
+   
+   false
+   false
+   false
+   
+   false
+   0
+   false
+   
+   0
+   true
+   false
+   false
+   false
+   false
+   false
+   false
+   false
+   true
+   1699386
+   false
+   false
+   false
+   high-resolution
+   true
+   true
+   true
+   false
+   false
+   false
+   false
+   false
+   false
+   false
+   false
+   false
+   true
+   false
+   0
+   true
+   false
+  
+ 
+ 
+  
+   
+  
+ 
+ 
+  
+  
+ 
+ 
+  
+   
+   
+    
+   
+   
+  
+  
+   
+    
+   
+   
+  
+  
+   
+  
+  
+   
+  
+  
+  
+   
+   
+  
+  
+  
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+   
+    
+     
+    
+   
+  
+  
+  
+  
+  
+   
+  
+ 
+ 
+  
+   
+  
+  
+   
+  
+  
+   
+    
+   
+   
+   
+  
+  
+   
+    
+   
+   
+   
+  
+ 
+ 
+  
+  
+ 
+ 
+  
+   
+    
+    
+    
+    
+   
+   {{ name }}
+  
+ 
+
\ No newline at end of file
diff --git a/tests/test_app/tests.py b/tests/test_app/tests.py
index feb5e95..36a8b8b 100644
--- a/tests/test_app/tests.py
+++ b/tests/test_app/tests.py
@@ -16,3 +16,11 @@ def test_fill_correct_template(self):
         filename = fill_template('correct_template.odt', {'name': 'John'},
                                  output_format='pdf')
         os.unlink(filename)
+
+    def test_fill_flat_correct_template(self):
+        """
+        test for flat file format fodt
+        """
+        filename = fill_template('correct_template.fodt', {'name': 'John'},
+                                 output_format='pdf')
+        os.unlink(filename)