2016-10-11 2 views
0

Ich habe ein komplettes HTML-Dokument und muss es in die Zwischenablage kopieren, damit es in Microsoft Word und andere Anwendungen eingefügt werden kann. Jetzt habe ich herausgefunden, dass der offensichtliche Weg nicht funktioniert und ich muss einen speziellen Header vor dem HTML-Inhalt hinzufügen. Leider scheinen alle Proben ungültige Kopfdaten zu haben, so dass ich nicht davon lernen kann. Und alles, was ich finden kann, ist ein kryptischer Beispielcode, der alle möglichen komplizierten Anwendungsfälle behandelt, aber das hilft mir nicht weiter. Und es gibt keine lesbare Erklärung der Header-Nummern irgendwo.Korrekte Kopfzeile zum Kopieren von HTML in die Zwischenablage

hier ist also ein Beispiel-HTML-Dokument, das ich als String in .NET haben:

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

Wenn dieses Fragment, was wirklich erforderlich ist, könnte ich diese Kommentare in meinem Dokument gerade innerhalb des <body> Element hinzufügen.

Der Header soll wie das irgendwie aussehen:

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

Was sind die richtigen Zahlen für 1 sind, 2, 3 und 4? Wie werden sie berechnet, wenn man die UTF-8-Codierung und alles was benötigt wird, betrachtet? Bitte geben Sie eine einfache Textbeschreibung oder einen Algorithmus oder einen einfachen C# -Code für nur diesen einfachen Fall an, nichts Besonderes mit Schnickschnack. Ich kann mich von dort anpassen.

+0

Es würde helfen, wenn Sie auf den kryptischen Beispiele zeigen könnte man gesehen haben. Normalerweise wird das Zwischenablageformat getrennt von den Daten selbst gespeichert. – Brad

+0

Ich denke, Sie beziehen sich darauf: https://msdn.microsoft.com/en-us/library/windows/desktop/ms649015(v=vs.85).aspx Beachten Sie, dass das CF_HTML Zwischenablage-Format ein ist Beispiel für das Zwischenablageformat, auf das ich Bezug genommen habe. Die Daten in der Zwischenablage müssen sowohl Text im richtigen Format UND mit diesem Typ sein, oder es wird nur als Textstring eingefügt. – Brad

+0

BTW, diese Seite hat die Beschreibung aller Felder in der Kopfzeile, also denke ich, das ist was du willst. – Brad

Antwort

0

Okay, also habe ich herausgefunden, dass die Fragment-Sache nicht erforderlich ist. Der Header weist die folgenden Zahlen:

  • 1 und 3: die Länge des Headers selbst (Zero-Padding erforderlich ist vorhersagbare Ergebnisse zu erzielen, da sonst die Kopflänge ändert sich nach der Zahl setzen, so dass die Zahlen ungültig)
  • 2 und 4: die Länge des Headers + die Anzahl der UTF-8-Byte des gesamten HTML-Dokument

Dies kann in Word und Excel eingefügt werden. Keine Fragmente oder HTML-Kommentare erforderlich.

Probe C# -Code:

int start = header.Length; 
int end = header.Length + Encoding.UTF8.GetByteCount(html); 
Verwandte Themen