web开发---word文档的内容检索和展示
2019-03-02 本文已影响0人
alue
周五快下班接到一个活儿, 描述如下:
办公室之前有很多案例记录, 零散分布在很多docx文档中, 需要设计一个方便内容检索和展示的方案
正好最近业余时间在看Django框架, 就打算将文档上传到web服务器, 然后在页面上提供展示和检索的服务.
目前web开发的思路是这样:
- 建立一个model用于存储docx文件, 字段包括文件名, 日期, 存储路径, 和文字内容. 文字内容用于检索.
- 提供批量上传文件的功能, 后台将各文件相关字段存入数据库
- 提供展示和检索视图
谷歌了一下, 发现有很多docx转html的方法. 实际尝试了两个:pydocx
和mammoth
.
用于测试的docx如下:
用pydocx
转换的代码如下
"""用pydocx转换为html"""
from pydocx import PyDocX
html = PyDocX.to_html("案例测试.docx")
f = open("PyDocX案例测试.html", 'w', encoding="utf-8")
f.write(html)
f.close()
pydocx生成的html
用mammoth
转换的代码如下:
"""用mammoth转换为html"""
import mammoth
with open("案例测试.docx", "rb") as docx_file:
with open('案例测试.html','w',encoding='utf-8') as f:
result = mammoth.convert_to_html(docx_file)
html = result.value # The generated HTML
messages = result.messages # Any messages, such as warnings during conversion
f.write(html)
mammoth生成的html
可见, 默认配置下pydocx
生成的html能够保留颜色,下划线,粗体,斜体,表格,图片等信息. 而mammoth
则没有了表格,颜色,下划线信息.
不过mammoth
有个extract_raw_text
方法,能够提取出文本, 将这些文本存入数据库,可以方便做内容检索.
"""利用extract_raw_text提取docx的文本"""
import mammoth
with open("案例测试.docx", "rb") as docx_file:
result = mammoth.extract_raw_text(docx_file)
text = result.value
print(text)
周末还有别的安排, 下周一开始实现这些功能.