9
votes

Protégez-vous de manière programmée HTML générée par des mots tout en préservant des styles?

Dans ma société actuelle, nous avons cette décennie vieille ... appelons-le un " Hello World " Application.

Tout en souhaitant la créer une version plus récente, nous souhaitons également conserver des entrées plus anciennes. Ces anciennes entrées contiennent HTML hideux généré par Word qui n'a jamais été filtré auparavant.

Si et lorsque nous passons à un système plus récent, je préférerais que le HTML nettoyé et filtré pour que le site soit conforme autant que possible des normes HTML.
Cependant, il suffit de nettoyer ce code comme Jeff Atwood a décrit dans son Blog ou de toute autre manière que je sache de ruiner le style et le formatage.

Maintenant, cela pourrait entraîner une révolte de nos utilisateurs, puis tout l'enfer se déchaînera - pas une très bonne idée.

La question est donc la suivante: le code HTML de Word peut être nettoyé tout en préservant la mise en forme de base? (E.g: coloriage, italique, texte en gras, etc.)

Utiliser de préférence le code ou la bibliothèque disponible publiquement, tels que HTML Tidy , exemples de C # serait très apprécié .


3 commentaires

Très probablement, l'exemple de travail que vous obtiendrez sera à Perl. Son traitement de texte puissant et son intégration avec des expressions régulières le rendent génial pour cela. J'ai nettoyé la première page de cette façon, mais je n'ai jamais eu le malheur de ne pas avoir besoin de nettoyer le mot de cette façon.


@ Scope-Creep: D'accord, Normes HTML: p


Désolé Gerev, j'étais un peu bolshie. J'étais une présentation le week-end et la conférence a déclaré que YIP, XHTML comme une norme n'apparaît plus.


8 Réponses :


1
votes

avoir un budget pour cela. Cela pourrait travail . Essayez avant d'acheter.


1 commentaires

@ Scopr-Creep: Merci, mais je cherche une solution que je peux courir localement, pour des lots de milliers de fichiers.



1
votes

Jetez un coup d'œil à FCKeditor , son éditeur basé sur JavaScript, donc En regardant la source pourrait vous donner beaucoup de conseils quant à ce qu'il faut rechercher lors de la suppression de Word HTML.

En particulier, jetez un coup d'œil au fichier, /editor/dialog/fck_paste.html. Il y a une fonction, "nectword" fait tout cela. Je l'ai modifié pour être utilisé dans mes propres applications (de légères modifications, c'est-à-dire. Différents remplacements, etc.), mais il fait un excellent travail de se débarrasser du mot laid HTML.

Il utilise des expressions régulières à trouver et à remplacer, ce qui signifie que vous pouvez facilement extra-le regex et l'importer dans un autre langage de programmation de votre choix pour exécuter le travail de lot.


2 commentaires

De mon expérience avec le plus récent CKEditor, la pâte de la fonction Word ouvre simplement une zone de texte standard qui omet toute la mise en forme. FCKeditor est-il différent à cet égard?


FCKEDITOR est une version plus ancienne. Ils ont changé le nom de CKeditor, car le "FCK" lui a fait ressembler au mot F (le Créateur est brésilien alors ne réalisa pas cela)



2
votes

Tidy fonctionne bien pour nettoyer et régulariser la syntaxe HTML.

C'est très configurable, alors pour un nettoyage par lots, il est probable que L'outil de ligne de commande fera ce dont vous avez besoin. Vous n'avez pas Pour programmer vous-même des tishylib.

Si vous devez faire un nettoyage plus impliqué du contenu - Pas seulement la syntaxe - certains processeurs XSLT (XSLTPROC, pour une) avoir une option '--html': les fichiers d'entrée sont analysés par l'analyseur HTML à la place d'un analyseur XML. Vous pouvez ensuite utiliser XSLT pour transformer ou réorganiser le Contenu, puis sortie avec le sérialiseur HTML.


0 commentaires

2
votes

Cette question à la question pose un problème similaire, bien que là-bas, le nettoyage programmatique n'est pas nécessaire.

L'une des réponses mentionne que Office 2007 dispose d'un élément de menu Publier-> Blog qui produirait de bons résultats et est rapide. Vous pouvez créer une macro du mot pour appeler cette commande, puis appeler programmatiquement la macro. Vous pouvez utiliser COM ou VBScript pour démarrer Word et exécuter la macro, ou exécuter winword.exe avec le commutateur / m. Commutateur de ligne de commande sur winword.exe est donné ici < / a>.


0 commentaires


1
votes

PSPAD inclut Tandy, qui a une option "propre Microsoft Microsoft Word 2000" que j'ai utilisée pour Word documents avant et il est personnalisable.


3 commentaires

Chrome rapporte le téléchargement comme fichier malveillant. Je ne sais pas si c'est ou non mais ne va pas en prendre la chance.


Complètement compréhensible. Cette réponse a été écrite il y a plus de 4 ans. Je suis cependant toujours l'utilise régulièrement. Je dirais que c'est un faux positif mais il y a toujours la possibilité que quelque chose ait changé.


Pour éviter tout risque de "programmes potentiellement indésirables" (A.K.A. PUP'S) qui viennent groupés avec PSPAD, téléchargez l'édition "portable" de PSPAD - qui est juste un fichier zip sans programme d'installation ou de chiot.



0
votes

Voici un ensemble de scripts PowerShell qui nettoieront HTML filtré par mot et étiquetez correctement les super / sous-mecripts environ 95% du temps. (Non, vous ne pouvez pas aller mieux que cela, le mot est fait pour imprimer.)

https://github.com/suzumakes/replace

La mise en forme de base est maintenue intacte, les balises deviennent des balises et des balises deviennent des balises. Je pense que c'est ce que vous recherchez, et même si vous ne devez pas utiliser Regex pour analyser HTML, le HTML filtré de mots est à peine filtré, mais il est propre après que ces scripts PowerShell soient exécutés.

Les instructions sont présentes dans le Readme et si vous rencontrez des caractères supplémentaires à prendre ou à proposer des modifications / améliorations, je serais heureux de voir votre demande de traction.


0 commentaires

1
votes

the HTMLRLULESANIZER (disponible sur Nuget ) peut le faire hors de la boîte.

Il utilise le pack d'agilité HTML pour analyser le code HTML et utilise un ensemble de Règles basées sur la liste blanche pour préserver le formatage. Les ensembles de règles par défaut se débarrasseront de pratiquement tous le code HTML verbeux MS Word MS Word tout en préservant la structure de documents de base comme étiquettes d'en-tête, gras, italique, etc. p>

Si vous souhaitez conserver un style spécifique MS Word, vous voulez Doit créer ou adapter une règle définie pour votre cas d'utilisation. P>

Il convertira par exemple facilement les centaines de lignes de code HTML que MS Word générerait pour un document contenant: p>

en direction d'un h1>

p>

paragraphe p>

Rubrique Deux h2>

gras fort> fort> p>

p>

italique i> i> p>

un lien i> p> p> blockQquote>

à l'ensemble suivant de HTML relativement propre: p>

<html>
<body>
<h1><span>Heading</span> <span>one</span></h1>
<p><span>Paragraph</span></p>
<h2><span>Heading</span> <span>two</span></h2>
<p><span><strong>Bold</strong></span><strong></strong></p>
<p><span><i>Italic</i></span><i></i></p>
<p><i><a href="http://www.google.com/" target="_blank" rel="nofollow">Link</a></i></p>
</body>
</html>


0 commentaires