2017-11-24 10 views
0

私のアプリケーションでは、データをクリップボードにコピーすることができます。データはクリップボードにHTML形式でコピーされるので、クリップボードからHTMLデータを処理できる他のアプリケーション(WinWordなど)に貼り付けるときにはフォーマット情報が保持されます。HTMLクリップボードデータにスペースを追加してWinWordが貼り付け時に挿入する方法?

例(4ワード、最後の2太字):

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

結果:テキストが正しくWinWordのに貼り付けられ、フォーマット(太字)が保存されます。

例(5つのスペース):

<span>  </span> 

結果:何もWinWordの中に貼り付けられていません。

質問:2番目の例では、WinWordがスペースを保持する方法はありますか?

&nbsp;としてエンコードしようとしましたが、段落記号が有効になっているときに、WinWordで円として表示されます。そして、それは一見醜い。

+0

私の本能は、これが正しい動作であるということでしょう。なぜ、空の要素を(何もフォーマットしていなくても)コピーしたいのですか?私はほとんどのアプリケーションが何も貼り付けることに抵抗すると思います。本当に必要な場合は、コピー操作を傍受し、要素が空であればテキストを挿入してクリップボードに転送する必要があります。これは可能ですが簡単ではありません。 –

+0

@TonyDuffill:私のアプリケーションは、すでにクリップボードコピー操作をインターセプトし、クリップボードのHTMLを独自に構築するテキストエディタです。たとえば、アプリケーションからクリップボードにテキスト「a b c d」(< - 文字の間に5つのスペースがあります)をコピーすることができます。しかし、Wordに貼り付けると、 'a b c d 'として追加されます(したがって、すべてのスペースは1つに縮小されます)。ブラウザーで ''タグを使用すると、それらのスペースは関連するコンテンツと見なされないので省略されます。私の質問はより似ています:どのようにスペースを強制するHTMLを作成できますか? –

答えて

0

私はCSS値white-space:pre<span>タグに追加することでこれを解決しました。

white-space:pre-wrapは正しい値のようですが、WinWordでは無視されます。

UPDATE:

私はまた、WinWordのは、そのクリップボードのデータを作成する方法を分析しました。

<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> 

注:

  • スペースはカスタムキー/値のペアmso-spacerun:yesを含むスタイル属性を使用して別の<span>タグに配置されているいくつかのスペースのHTMLは次のようになります。
  • HTMLはUTF-8でエンコードされ、スペースのcharコードはU + 00A0(ブレークスペースなし)です。
+0

良いニュース! - 興味深い解決策 - 私はそれを持っていないだろう - まだあなたがフォーマットされていないスペースをコピーしたいと思うのは不思議です。しかし、すべてのベスト、トニー –

+0

@トニーDuffill:それは、それをしたいかもしれないユーザーです。 :-) –

関連する問題