2016-10-11 4 views
0

完全なHTMLドキュメントがあり、クリップボードにコピーしてMicrosoft Wordや他のアプリケーションに貼り付ける必要があります。今私は、明らかな方法がうまくいかず、HTMLコンテンツの前に特殊なヘッダーを追加する必要があることを理解しました。残念なことに、すべてのサンプルが無効なヘッダーデータを表示しているので、私はそれから学ぶことができません。私が見つけられるのは、あらゆる種類の複雑なユースケースを処理する暗黙のサンプルコードですが、それでも私は役に立ちません。ヘッダー番号はどこにでもわかりやすい説明がありません。クリップボードにHTMLをコピーするための正しいヘッダー

だからここに私は.NETで文字列として持つサンプルHTMLドキュメントです:

<!doctype html> 
<html> 
<body> 
<table> 
    <tr> 
    <td>Col 1</td> 
    <td>Col 2</td> 
    </tr> 
</table> 
</body> 
</html> 

は、このフラグメントの事が本当に必要とされている場合は、私はちょうど<body>要素内の私の文書でそれらのコメントを追加できます。

ヘッダは次のように何とか見えるようになっている:

Version:0.9 
StartHTML:1 
EndHTML:2 
StartFragment:3 
EndFragment:4 
StartSelection:3 
EndSelection:4 

1、2、3、および4の正しい数字は何ですか? UTF-8エンコーディングとそれを必要とすることを考慮して、どのように計算されますか?プレーンテキストの説明やアルゴリズム、またはシンプルなC#コードだけを提供してください。私はそこから適応することができます。

+0

あなたが見てきた不可解な例を指すことができれば、それは役立つだろう。通常、クリップボード形式はデータ自体とは別に保存されます。 – Brad

+0

私はあなたがこれを参照していると思う:https://msdn.microsoft.com/en-us/library/windows/desktop/ms649015(v=vs.85).aspx CF_HTMLクリップボード形式は、私が参照したクリップボード形式の例。クリップボード上のデータは、正しい形式のテキストであり、この種類のテキストである必要があります。または、テキスト文字列として貼り付けられます。 – Brad

+0

ところで、そのページにはヘッダーのすべてのフィールドの説明があるので、これはあなたが望むものだと思います。 – Brad

答えて

0

わかりましたので、フラグメントのことは必要ではないとわかりました。

  • 1および3:予測可能な結果を​​得るためにゼロ詰めが必要です。そうでなければ、数字を入れた後にヘッダーの長さが変わり、数字が無効になります。
  • 2及び4:ヘッダの長さ+全体HTML文書

のUTF-8バイトの数このWordやExcelに貼り付けることができます。フラグメントやHTMLコメントは必要ありません。

サンプルC#コード:

int start = header.Length; 
int end = header.Length + Encoding.UTF8.GetByteCount(html); 
関連する問題