鸿蒙富文本 RichEditor使用getspan获取富文本内容转换html的方法

目前在官方文档还没有对应api,下面是自己做的一个示例

// 将 富文本的 spans 转换为 HTML
SpansToHtml(spans: RichEditorImageSpanResult[]): string {
  let html = ''
  spans.forEach(span => {
    let spanToHtml = ''
    // 如果是文字
    if (typeof (span as RichEditorImageSpanResult)['value'] != 'undefined') {
      let item = span as RichEditorImageSpanResult
      let text: string = (span as RichEditorImageSpanResult)['value']
      let Size = '<p  class="article-detail-c-text" style="display:inline;"><font style="font-size:16px";>' //设置字体
      let Weight = '<b style="font-weight: bold">'
      let Italic = '<i <b style="font-style: italic">'
      // 处理各种样式
      if (item['textStyle']) {
        if (item['textStyle']['fontSize']) {
          Size =
            `<p  class="article-detail-c-text" style="display:inline;"><font style = "font-size:${item['textStyle']['fontSize']}px";>`
          spanToHtml = Size + text + '</font></p>'
        } else if (item['textStyle']['fontStyle']) {
          spanToHtml = Italic + spanToHtml + '</i>'
        } else if (item['textStyle']['fontWeight']) {
          spanToHtml = Weight + spanToHtml + '</b>'
        }
      } else {
        spanToHtml =
          `<p  class="article-detail-c-text" style="display:inline;"><font style="font-size:16px";>${text}</font></p>`
      }
    }
    // 图片类型
    else {
      let imgurl = (span as RichEditorImageSpanResult)['valueResourceStr']
      spanToHtml =
        `<img src='${imgurl}?x-oss-process=image/resize,w_750'><font style="font-size:14px";></font><p  class="article-detail-c-text" style="display:inline;"><font style="font-size:14px";>\n\n</font></p>`
    }
    html += spanToHtml
  })
  LogUtil.info(`富文本转换HTML` + html)
  return html
}

根据业务需求自行更改拼接字段

提供的参考引用中未提及鸿蒙系统富文本文本截断并带有标签的相关实现方法。不过,可从通用思路给出一些可能的实现方向。 对于富文本组件 RichText 可以解析并显示 HTML 格式文本,若要实现文本截断,可借助 CSS 中的 `text - overflow` 属性,此属性能在文本溢出容器时显示省略号。示例代码如下: ```html <style> .truncate { width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } </style> <RichText> <div class="truncate"> <!-- 这里放置带有标签的富文本内容 --> <p>这是一段带有标签的富文本内容,可能会很长很长很长很长很长。</p> </div> </RichText> ``` 在上述代码里,通过定义一个名为 `truncate` 的 CSS 类,设定了固定宽度、不换行、溢出隐藏以及用省略号显示溢出部分的样式。把富文本内容置于带有该类的 `div` 标签内,就能实现文本截断。 若要在代码里动态处理文本截断,可通过 JavaScript 或 TypeScript 来操作 DOM 元素,获取富文本内容,然后按需求进行截断处理。示例代码如下: ```typescript // 获取富文本元素 const richTextElement = document.querySelector('.truncate'); // 获取富文本内容 const richTextContent = richTextElement.innerHTML; // 设定最大长度 const maxLength = 50; if (richTextContent.length > maxLength) { // 截断文本 const truncatedContent = richTextContent.slice(0, maxLength) + '...'; // 更新富文本内容 richTextElement.innerHTML = truncatedContent; } ``` 在上述代码中,先获取富文本元素,接着获取内容,再判断内容长度是否超出最大长度,若超出则进行截断并添加省略号,最后更新富文本内容
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值