Djangoueditor(富文本) 纯文字提取及导出word实现下载

富文本在存储时是带有HTML代码的,因此在将富文本导出word文档时需要将富文本内容提取为纯文本

纯文字提取有两种方法推荐第二种

方法一:

后台导入包

from django.template.defaultfilters import striptags   #提取富文本文字
需要提取处调用
text = striptags(obj_wen.ued) #obj_wen.ued为富文本存储在数据库中的名

                          原文本

                   输出纯文本

通过对比,该方法可以提取纯文本但对英文过滤不佳
方法二
采用djangoueditor官方文档的方法
在富文本编辑页面在前端获取纯文本内容然后通过表单存入后台
function getPlainTxt() {
        text = UE.getEditor('id_content').getPlainTxt();   //获取富文本编辑器中纯文本
        //document.getElementById("wenben").innerHTML=text;
        $("#wenben").attr("value",text);  //赋值给value传入后台
    }
id_content为前端ueditor   id 可通过打开该页面按F12查看  如图:
 

提取结果

该方法基本完美解决英文纯文本提取,该方法需要注意在调用提取纯文字时需要在作者编辑完后开始,可写在表单提交时

导出为word并实现下载基本一致

首先导入python word包

from docx import Document 
然后构建文档
    document = Document()  #docx函数
    document.add_heading(obj_wen.biaoti, 0)  #写入标题
    text = (obj_wen.textfield)  #数据库纯文本
    #text = striptags(obj_wen.ued)  #此为方法一  obj_wen.ued 为需要导出的ueditor在数据库存储的内容
    document.styles['Normal'].font.name = u'黑体'   #字体格式黑体
    p = document.add_paragraph()    
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER  #居中
    run = p.add_run(text)     #写入文字
导入包实现下载文件名实现中文
from django.utils.http import urlquote   #中文文件名
    response = HttpResponse(content_type='application/octet-stream')   #缓存申明 octet-stream为文件类型
    response['Content-Disposition']='attachment;filename="%s.doc"'% urlquote(obj_wen.biaoti)    #下载说明 文件名 
    document.save(response) #文件保存入缓存
    return response
前端调用即可实现下载

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

希望对你有所帮助!

posted @ 2019-11-02 19:42  shance-丁多斌  阅读(2255)  评论(0编辑  收藏  举报