vue 项目将编辑框输入的html带样式下载成文档

文章目录

1.需求:

  • 利用markdown插件,将生成的html带样式保存成文档

2.代码

   // 获取编辑框的 html
  handleSave(): void {
    const renderContent = (this.$refs.editor as any).d_render
    // 处理得到的<html> 标签
    const htmlElement = document.createElement('html')
    htmlElement.setAttribute('lang', 'zh-CN')
    const headElement = document.createElement('head')
    const bodyElement = document.createElement('body')
    const metaElement = document.createElement('meta')
    metaElement.setAttribute('charset', 'utf-8')
    headElement.appendChild(metaElement)
    const styles = this.addStyle() 
    headElement.appendChild(styles)
    bodyElement.innerHTML = renderContent
    htmlElement.appendChild(headElement)
    htmlElement.appendChild(bodyElement)
    const contents = htmlElement.outerHTML // 从html对象取出字符串
    this.download('hello.html', contents) // 下载
    console.log(htmlElement, contents)
  }
//  生成要下载的样式
  addStyle() {
    const style = document.createElement('style')
    style.type = 'text/css'
    try {
      style.appendChild(
        document.createTextNode(
          '.hljs-center{text-align: center;}.hljs-left{text-align:left}.hljs-right{text-align:right} table {     border-spacing: 0;border-collapse: collapse;display: inline-block;overflow: auto;} table tr { background-color: #fff;border-top: 1px solid #c6cbd1} table td, table th { padding: 6px 13px; border: 1px solid #dfe2e5;}'
        )
      )
    } catch (ex) {
      // style.styleSheet.cssText = 'body{background-color:red}' //针对IE
    }
    return style
  }
 // 利用a标签下载文档
  download(filename: any, content: string) {
    const element = document.createElement('a')
    // encodeURIComponent() 函数可把字符串作为 URI 组件进行编码
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))
    element.setAttribute('download', filename)
    element.style.display = 'none'
    document.body.appendChild(element)
    element.click()
    document.body.removeChild(element)
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值