使用pypandoc将html表转换为docx文件

时间:2018-06-19 16:15:29

标签: python pypandoc

Pandoc不能很好地将HTML表呈现到docx文档中。我得到了请求的内容,我使用模板文件对其进行了呈现。然后我像这样使用pypandoc:

 response = render(                                     
   request,                                      
   'template.html',                      
   {                                             
     "field1": f1,                               
     "field1": f2,     
   }                                             
 )                                               

 import pypandoc                                                                                            
 pypandoc.convert(source=response.content, format='html', to='docx', outputfile='output.docx')  

template.html包含一个表。在docx文件中,我得到一个表格,其内容在下面分开。是否有其他参数可以解决?也许pandoc转换还不支持良好的表格?有功能的例子吗?也许有一种更简单的方法?


编辑1

我提供了更简洁的示例。这是一个测试python代码段:

$ cat test-table.py 
#!/usr/bin/env python
test_table = """
 <p>Table with colgroup and col</p>
 <table border="1">
   <colgroup>
     <col style="background-color: #0f0">
     <col span="2">
   </colgroup>
   <tr>
     <th>Lime</th>
     <th>Lemon</th>
     <th>Orange</th>
   </tr>
   <tr>
     <td>Green</td>
     <td>Yellow</td>
     <td>Orange</td>
   </tr>
   <tr>
     <td>Fruit</td>
     <td>Fruit</td>
     <td>Fruit</td>
   </tr>
 </table>

   """
print("[test_table]")
print(test_table)
import pypandoc
pypandoc.convert(source=test_table, format='html', to='docx', outputfile='test-table.docx')  

## Write to html
with open('test-table.html', 'w') as fh:
  fh.write(test_table)

我打开html文件:

$ firefox test-table.html 

并获得以下html页面:

enter image description here

这很好。我还获得了以下docx文档:

$ libreoffice test-table.docx 

enter image description here

哪个不好。

我将docx文件导出为pdf文件,并得到以下输出:

$ evince test-table.pdf 

enter image description here

请注意,我们在图像中看到的是整个页面,无法滚动。第二列中的日期根本不存在。有什么想法吗?


编辑2

Pandoc已安装在conda环境中:

$ type pandoc
pandoc is hashed (/home/kaligne/local/miniconda3/bin/pandoc)

Pandoc版本为:

$ pandoc -v
pandoc 2.2.1
Compiled with pandoc-types 1.17.4.2, texmath 0.11, skylighting 0.7.0.2
Default user data directory: /home/kaligne/.pandoc
Copyright (C) 2006-2018 John MacFarlane
Web:  http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

编辑3 我将docx文件转换为txt:

$ docx2txt test-table.docx
$ cat test-table.txt 
Table with colgroup and col
Lime
Lemon
Green
Yellow
Fruit
Fruit

我们可以看到所有数据都存在。所以我想这与信息的显示方式有关。

0 个答案:

没有答案