Программно уберите сгенерированный Word HTML при сохранении стилей?

В моей текущей компании мы имеем в это десятилетие старый..., давайте назовем ее "Привет Мировым" приложением.

Желая создать более новую версию его, мы также хотим сохранить более старые записи. Эти более старые записи содержат отвратительный сгенерированный Word HTML, который никогда не фильтровался прежде.

Если и когда мы перемещаемся в более новую систему, я предпочел бы чистить тот HTML и фильтрованный, чтобы иметь сайт, выполняют стандарты HTML как можно больше.
Однако просто очистка того кода как Jeff Atwood описала в его блоге или любым другим способом, о котором я знаю, также разрушил бы стиль и форматирование.

Теперь, это просто могло бы заставить наших пользователей восставать, и затем весь ад вырвется на свободу - не очень хорошая идея.

Таким образом, вопрос: HTML Word может быть убран при сохранении основного форматирования? (например: окраска, выделенный курсивом, полужирный текст и так далее)

Предпочтительно с помощью общедоступного кода или библиотеки, такой как Опрятный HTML, примеры в C# очень ценились бы.

9
задан Community 23 May 2017 в 12:19
поделиться

6 ответов

Существует несколько вариантов, но вы, конечно, можете использовать вариант Джеффа Этвуда в качестве хорошей отправной точки для написания собственного кода. В этом случае вы, скорее всего, получите тонкий контроль над результатом - учтите, однако, что результаты никогда не будут на 100% точными, поскольку весь этот дополнительный ms-код на самом деле служит для обеспечения максимально возможной верности оригинальному документу (по крайней мере, в IE для целей обхода). Но большинство существующих кодов сохраняют большинство форматирования.

Вот некоторые библиотеки кода, которые могут быть полезны:

Если вам нужна только пакетная обработка (и вас не волнует владение кодовой базой), то Office 2000 HTML Filter 2.0, вероятно, будет лучшим вариантом - подробнее о нем читайте на TechRepublic.

3
ответ дан 4 December 2019 в 20:22
поделиться

У вас есть на это бюджет. Это могло бы работать . Попробуйте перед покупкой.

1
ответ дан 4 December 2019 в 20:22
поделиться

tidy отлично работает для очистки и упорядочивания синтаксиса html.

Он очень настраиваемый, поэтому для пакетной очистки, скорее всего. инструмент командной строки сделает то, что вам нужно. Вам не нужно программировать tidylib самостоятельно.

Если вам нужно произвести более тщательную очистку содержимого - а не только синтаксис - некоторые xslt-процессоры (xsltproc, например) имеют опцию '--html': входные файлы анализируются парсером html вместо вместо парсера xml. Затем вы можете использовать xslt для преобразования или перестановки содержимое, а затем вывести с помощью html-сериализатора.

2
ответ дан 4 December 2019 в 20:22
поделиться

Посмотрите на FCKEditor, это редактор на базе javascript, поэтому просмотр исходного текста может дать вам много подсказок о том, что искать при удалении HTML-слова.

В частности, посмотрите на файл /editor/dialog/fck_paste.html. Там есть функция "CleanWord", которая делает все это. Я модифицировал ее для использования в своих приложениях (небольшие изменения, т.е. различные замены и т.д...), однако она делает отличную работу по избавлению от уродливого HTML Word.

Он делает это с помощью регулярных выражений для поиска и замены, что означает, что вы можете легко дополнить regex и импортировать его в другой язык программирования по вашему выбору для выполнения пакетного задания.

1
ответ дан 4 December 2019 в 20:22
поделиться

Этот вопрос SO ставит аналогичную проблему, хотя здесь программная очистка не требуется.

В одном из ответов упоминается, что в Office 2007 есть пункт меню Publish->Blog, который, как сообщается, дает хорошие результаты и работает быстро. Вы можете создать макрос из Word для вызова этой команды, а затем программно вызвать макрос. Можно использовать COM или VBScript для запуска word и запуска макроса или запустить winword.exe с ключом /m. Переключатели командной строки для winword.exe приведены здесь.

2
ответ дан 4 December 2019 в 20:22
поделиться

PSPad включает tidy, в котором есть опция «Очистить Microsoft Word 2000», которую я раньше использовал для текстовых документов, и ее можно настраивать.

1
ответ дан 4 December 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: