【问题标题】:How to add spaces to HTML clipboard data so that WinWord inserts them on pasting?如何在 HTML 剪贴板数据中添加空格,以便 WinWord 在粘贴时插入它们?
【发布时间】:2017-11-24 14:57:57
【问题描述】:

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

示例(4 个字,最后 2 个粗体):

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

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

示例(5 个空格):

<span>     </span>

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

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

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

【问题讨论】:

  • 我的直觉是这是正确的行为——你为什么要复制一个空元素(甚至没有任何格式)?我认为大多数应用程序都不会粘贴任何内容。如果你真的必须,你需要拦截复制操作并在元素为空时插入一些文本,然后再传输到剪贴板 - 这是可能的,但并不容易。
  • @TonyDuffill:我的应用程序是一个文本编辑器,它已经拦截了剪贴板复制操作并自行为剪贴板构建 HTML。例如,您可以将文本 a b c d(a b c d(因此所有空格都减少为一个)。你是对的,在浏览器中也使用&lt;span&gt;-tag 省略了这些空格,因为它们不被视为相关内容。我的问题更像是:如何创建强制空格的 HTML?

标签: html ms-word clipboard clipboarddata


【解决方案1】:

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

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

更新:

我还分析了 WinWord 如何创建其剪贴板数据。几个空格的 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>

注意:

  • 空格位于单独的&lt;span&gt; 标记中,其样式属性包含自定义键/值对mso-spacerun:yes
  • HTML 是 UTF-8 编码的,空格的字符代码是 U+00A0(没有换行符)。

【讨论】:

  • 好消息! - 有趣的解决方案 - 我不会得到那个 - 虽然我仍然想知道你为什么要复制未格式化的空格。但一切顺利,托尼
  • @TonyDuffill:可能是用户想要这样做。 :-)
猜你喜欢
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 2017-06-18
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多