Word-generierten HTML-Code programmgesteuert säubern und Stile beibehalten?

8

In meiner jetzigen Firma haben wir dieses Jahrzehnt alt ... nennen wir es ein " Hallo Welt " Anwendung.

Während wir eine neuere Version erstellen möchten, möchten wir auch ältere Einträge beibehalten. Diese älteren Einträge enthalten abscheuliches Word-generiertes HTML, das zuvor noch nie gefiltert wurde.

Wenn wir zu einem neueren System wechseln, würde ich es vorziehen, diesen HTML-Code zu bereinigen und zu filtern, damit die Website so weit wie möglich den HTML-Standards entspricht.
Aber nur diesen Code wie Jeff Atwood beschrieben in seinem Blog oder auf irgendeine andere Weise, die ich kenne, würde auch den Stil und die Formatierung ruinieren.

Nun, das könnte unsere Benutzer dazu bringen, sich zu empören, und dann wird die Hölle los - keine gute Idee.

Die Frage ist also: Kann der HTML-Code von Word bei gleichzeitiger Grundformatierung gesäubert werden? (z. B. farbig, kursiv, fett gedruckt usw.)

Vorzugsweise unter Verwendung von öffentlich verfügbarem Code oder einer Bibliothek wie HTML Tidy würden Beispiele in C # sehr geschätzt.

    
GeReV 10.05.2010, 21:46
quelle

8 Antworten

3

Es gibt ein paar Optionen, aber Sie können Jeff Atwoods als einen guten Ausgangspunkt verwenden, um Ihren eigenen zu programmieren. Wenn ja, erhalten Sie wahrscheinlich eine fein abgestimmte Kontrolle über das Ergebnis - beachten Sie jedoch, dass die Ergebnisse nie 100% genau sind, da all dieser zusätzliche ms-Code tatsächlich vorhanden ist, um so viel Originalität wie möglich sicherzustellen ( zumindest in IE für Rundauslösezwecke). Aber der meiste Code draußen behält die meisten Formatierungen bei.

Hier sind einige Codebibliotheken, die hilfreich sein könnten:

Wenn Sie nur eine Batchverarbeitung wünschen (und sich nicht um eine Codebasis kümmern), Office 2000 HTML Filter 2.0 ist wahrscheinlich das beste Beste - lesen Sie mehr dazu auf TechRepublic .

    
Todd Main 14.05.2010, 22:25
quelle
2

ordentlich funktioniert für die Bereinigung und Regularisierung der HTML-Syntax.

Es ist sehr konfigurierbar, so dass es für eine Batch-Bereinigung wahrscheinlich ist Das Befehlszeilen-Tool wird tun, was Sie brauchen. Das hast du nicht Tidylib selbst programmieren.

Wenn Sie mehr aufwändige Säuberungen des Inhalts vornehmen müssen - nicht nur die Syntax - einige xslt Prozessoren (zum Beispiel xsltproc) habe eine '-html' Option: Eingabedateien werden stattdessen vom HTML Parser analysiert eines XML-Parsers. Sie können dann xslt verwenden, um das zu transformieren oder neu anzuordnen Inhalt, dann Ausgabe mit dem HTML-Serializer.

    
Steven D. Majewski 14.05.2010 20:36
quelle
2

Diese SO-Frage stellt ein ähnliches Problem dar, obwohl dort keine programmgesteuerte Bereinigung erforderlich ist.

Eine der Antworten erwähnt, dass Office 2007 einen Menüeintrag für Publish- & gt; Blog enthält, der Berichten zufolge gute Ergebnisse liefert und schnell ist. Sie könnten ein Makro aus Word erstellen, um diesen Befehl aufzurufen, und anschließend das Makro programmgesteuert aufrufen. Sie können COM oder VBScript verwenden, um Word zu starten und das Makro auszuführen, oder winword.exe mit der Option / m ausführen. Befehlszeilenoptionen zu winword.exe werden hier angegeben.

    
mdma 14.05.2010 20:40
quelle
1

Haben Sie ein Budget dafür. Dies könnte funktionieren . Probiere Bevor du kaufst.

    
scope_creep 10.05.2010 22:13
quelle
1

Schauen Sie sich FCKEditor an, es ist ein JavaScript-basierter Editor, so dass Sie die Quelle betrachten können Sie erhalten viele Hinweise, worauf Sie beim Entfernen von Word HTML achten sollten.

Sehen Sie sich insbesondere die Datei /editor/dialog/fck_paste.html an. Es gibt eine Funktion, "CleanWord" macht alles. Ich habe es für die Verwendung in meinen eigenen Anwendungen modifiziert (leichte Modifikationen, dh verschiedene Ersetzungen, etc ...), aber es macht eine großartige Arbeit, hässliches Word HTML loszuwerden.

Es verwendet reguläre Ausdrücke zum Suchen und Ersetzen, was bedeutet, dass Sie die Regex einfach hinzufügen und in eine andere Programmiersprache Ihrer Wahl importieren können, um den Batch-Job auszuführen.

    
Anton 14.05.2010 20:05
quelle
1

PSPad enthält einen Ordner, der eine Option "Microsoft Word 2000 sauber" enthält, die ich zuvor für Word-Dokumente verwendet habe und die anpassbar ist.

    
McAden 18.05.2010 05:33
quelle
1

Der HtmlRuleSanitizer (verfügbar auf NuGet ) kann dies für Sie aus der Box tun.

Es verwendet das HTML Agility Pack, um den HTML-Code zu analysieren, und verwendet eine Reihe von Whitelist-basierten Regeln, um die Formatierung beizubehalten. Die Standard-Regelsätze werden praktisch den gesamten MS Word HTML-Code entfernen, während die grundlegenden Dokumentstrukturen wie Header-Tags, fett, kursiv usw. beibehalten werden.

Wenn Sie eine bestimmte MS Word-Formatierung beibehalten möchten, müssen Sie einen Regelsatz für Ihren Anwendungsfall erstellen oder anpassen.

Es wird zum Beispiel leicht die Hunderte Zeilen HTML-Code konvertieren, die MS Word für ein Dokument erzeugen würde, das folgendes enthält:

  

Überschrift eins

     

Absatz

Überschrift   zwei

     

Fett

     

Kursiv

Ein Link

Um nur den folgenden Satz relativ sauberen HTML zu erhalten:

%Vor%

Beachten Sie, dass einige der lästigen Dinge, die MS Word macht, wie das Öffnen und Schließen von Tags sehr oft (siehe die span-Elemente im Beispiel) nicht vollständig bereinigt werden.

    
Christ A 15.07.2015 07:59
quelle
0

Hier finden Sie eine Reihe von PowerShell-Skripts, die Word-gefiltertes HTML bereinigen und Super- / Indices in ungefähr 95% der Fälle korrekt markieren. (Nein, Sie können nicht besser als das, Word ist für den Druck gemacht.)

Ссылка

Die grundlegende Formatierung wird beibehalten, Tags werden zu Tags und Tags werden zu Tags. Ich denke, das ist, was Sie suchen, und obwohl Sie Regex nicht verwenden sollten, um HTML zu analysieren, wird Word-Filtered HTML kaum gefiltert, aber es ist sauber, nachdem diese Powershell-Skripts darauf ausgeführt werden.

Anweisungen gibt es in der ReadMe und wenn Sie zufällig auf zusätzliche Zeichen treffen, die abgefangen werden müssen oder irgendwelche Optimierungen / Verbesserungen ergeben, würde ich mich freuen, Ihre Pull-Anfrage zu sehen.

    
suzumakes 10.07.2015 16:24
quelle

Tags und Links