样式化Microsoft-Word生成的HTML

时间:2011-01-30 19:50:31

标签: html css ms-word generated-code

唉。 Word因其臃肿,错综复杂,不符合标准的非语义HTML而臭名昭着。不幸的是,我有一位教授要求我们按照非常严格的标准生成大纲。我宁愿不用手写,所以我决定做一些对同学有用的东西。我在Mac上使用NeoOffice中的简单编号列表创建了大纲,将其导出为HTML,并编写了相当多的CSS来设置样式。然后,我有人在Word for Windows中创建一个有序列表,将其导出为html,并将其发送给我以检查兼容性。在向下滚动数英里之后,试图压制一个颤抖,我看到了一个问题。 Word未使用<ol><li>。它使用了嵌套<span> s的山脉和wazoo的类。我讨厌看到我的所有工作都浪费掉,但这个内容是不可能的 - 我必须在文档到文档的基础上进行设计,而不是使用通用样式表。

理想情况下,Word会使用标准标记生成HTML,以便我可以像任何其他列表一样设置样式,但似乎并非如此。如何让它生成实际使用<ul><li>而不是<span>的列表,或者至少修改我的代码中的某些内容以某种方式使用它创建列表的奇怪方式?

9 个答案:

答案 0 :(得分:3)

写Winword及其HTML代的人都很聪明。如果以纯粹的方式使用HTML功能很容易,他们就会这样做。

Word是关于创建纸张优化的布局。它支持HTML不支持的标签停止和多级编号等概念,或者只是刚开始。因此,Word文档的HTML版本不是“好”的HTML,而是试图准确地保留Word文档的功能。

当Word重新打开已保存的HTML文件时,它会对文档进行一些巧妙的逆向工程,因此在Word中呈现的内容与它的启动非常相似。同样,如果您将HTML作为片段插入到网页中,保留Word CSS,结果非常忠实。在这种情况下,网页的底层CSS与Word的CSS之间存在文化冲突,需要付出一些努力来充分利用糟糕的工作。 Word HTML也不使用UTF-8,这需要一些处理。

HTMLTidy可用于删除Word标记,但在此之后需要进行一些按摩以便在网页中进行良好的渲染。我已经在一个产品上工作了15年,它将Word和网页混合在一起,如果你对CSS进行微调,结果会非常好。

我们使用Word是因为我们正在创建纸质版本,并从Word编写的报告中导入文本,而不是因为我们找不到专用的HTML编辑器。

我不建议使用Word来创建整洁的纯粹HTML。你不会用开罐器打开一瓶酒,对吗?

如果符合以下条件,生活会更加简单: a)微软在其高度混乱的“子弹和数字”功能上重新设计了无数选项, b)HTML提供原生的,功能正常的多级编号支持,而不是当前可用的思考后方法。这个领域的HTML的弱点可以在Google Docs中提供的脆弱的编号选项中看到。

使用HTML 5进行了大量改进,也许我们希望HTML 6能够帮助理解文字处理器/ HTML编辑器的界限。

答案 1 :(得分:1)

使用此资源http://word2cleanhtml.com/将Word文档转换为干净的HTML。在我看来非常有用。

答案 2 :(得分:0)

如果您可以使用Windows PC,请使用Notepad ++(http://notepad-plus-plus.org/)粘贴代码,然后选择插件来格式化代码。

答案 3 :(得分:0)

使用WYSIWYG编辑器作为列表生成器。这将消除用户处理原始CSS的需要,代价是将它们带出Microsoft Word的舒适区。

答案 4 :(得分:0)

Word的查找和替换的创造性使用也可能有效。例如,使用NotePad打开HTML文件,将文本复制并粘贴回Word文档。打开查找和替换。如果HTML看起来像这样(例如),那么“这是第一行文本”是第一个行项目:

<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span...(Cut due to berevity)...
-height:115%'>This is the first line of text<o:p></o:p></span></p>

然后在\<p*line-height:115%'\上找到并替换为通配符,并替换为空。它可能需要一系列的查找/替换。 HTML标记很丰富,但其他一切都相同,至少是一致的。

答案 5 :(得分:0)

如果你有方便的Dreamweaver,有一个神奇的“清理单词HTML”按钮,在这种情况下可以创造奇迹。

答案 6 :(得分:0)

MSWord与作者一样聪明 - 只有在MSWord中创建有序列表时才将其转换为HTML。这意味着列表必须按照MSWord构造进行格式化,而不是如何在页面上显示。许多人将使用制表符和其他格式创建“显示”为“排序”或“无序”的列表,而不使用MSWord列表功能。保存为HTML会尝试在写入时保存它,而不是如何显示它。

答案 7 :(得分:0)

通过一些研究,似乎将文档转换为HTML的方法并不实用。 Word在单个文档的文件保存和HTML生成方法中变得过于多变,更不用说不同版本的Word之间的差异了。与Wyatt的建议类似,可能有一些方法可以清理代码,但它们都不是完美的。围绕API进行挖掘可能会提供一种更轻松地解析这一问题的方法,但事实证明这在实践中同样令人费解。似乎使用word作为列表生成工具简直是不现实的。

答案 8 :(得分:0)

您可以在“开发者”标签下的“工作”中将外部样式表链接到HTML文档 - &gt;文件模板 - &gt;链接的CSS。然后,您可以使用它来覆盖Word生成的几乎任何样式。

信用:https://superuser.com/questions/65107/how-to-apply-external-css-stylesheet-to-document-in-microsoft-word/65144#65144

注意:我使用Word 2013执行此操作,但它不是新功能。