如何向 HTML 剪贴板数据添加空格以便 WinWord 在粘贴时插入它们?

How to add spaces to HTML clipboard data so that WinWord inserts them on pasting?

在我的应用程序中,您可以将数据复制到剪贴板。数据以 HTML 格式复制到剪贴板,以便在粘贴到可以处理来自剪贴板的 HTML 数据的其他应用程序(例如 WinWord)时保留格式信息。

例子(4个字,最后2个加粗):

<span>This is </span><b>bold text</b>

结果:在 WinWord 中正确粘贴了文本,并保留了格式(粗体)。

示例(5 个空格):

<span>     </span>

结果: WinWord 中没有粘贴任何内容。

问题:如何实现WinWord保留第二个例子中的空格?

我尝试将它们编码为 &nbsp;,但当段落标记被激活时,WinWord 将它们显示为一个圆圈。那看起来有点丑。

我通过将 CSS 值 white-space:pre 添加到 <span> 标签来解决这个问题。

虽然 white-space:pre-wrap 似乎是正确的值,但它被 WinWord 忽略了。

更新:

我还分析了 WinWord 如何创建其剪贴板数据。几个 space 的 HTML 看起来像这样:

<span style='font-size:11.0pt;line-height:105%;font-family:"Calibri",sans-serif;mso-fareast-font-family:Calibri;mso-bidi-font-family:"Times New Roman";mso-ansi-language:DE;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'>
    <span style='mso-spacerun:yes'>         </span>
</span>

注:

  • space 位于单独的 <span> 标签中,其样式属性包含自定义 key/value 对 mso-spacerun:yes.
  • HTML 是 UTF-8 编码的,space 的字符代码是 U+00A0(没有中断 space)。