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页面:
这很好。我还获得了以下docx文档:
$ libreoffice test-table.docx
哪个不好。
我将docx文件导出为pdf文件,并得到以下输出:
$ evince test-table.pdf
请注意,我们在图像中看到的是整个页面,无法滚动。第二列中的日期根本不存在。有什么想法吗?
编辑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
我们可以看到所有数据都存在。所以我想这与信息的显示方式有关。