7

向我的网站发送内容的人使用 Word,因此我得到了很多 Word 文档以转换为 HTML。我只想保留基本格式 - 标题、列表和强调 - 没有图像。

当我用 Libre Office “另存为 HTML” 转换它们时,生成的文件很大,例如,112K 的 doc 文件变成了 450K 的 HTML,其中大部分是无用的 FONT 和 SPAN 标签(出于某种原因,每个标点符号都被括起来在它自己的范围内!)。

我尝试了这个脚本:http ://www.techrepublic.com/blog/opensource/how-to-convert-doc-and-odf-files-to-clean-and-lean-html/3708基于 tidy 和 sed,并且它减小了大小到大约 150K,但是仍然有很多无用的 SPAN。

我试图复制并粘贴到 Kompozer——一个 HTML 编辑器,然后另存为 HTML;但它将我所有的非拉丁(希伯来)字母转换为诸如“ְ”之类的实体,从而将大小增加到 750K!

我尝试了docvert:https ://github.com/holloway/docvert/issues/6 ,但发现它需要一个python库,它需要另一个库等,这似乎是一条无穷无尽的依赖之路......

有没有一种简单的方法可以从 Office 文档创建干净的 HTML?

4

6 回答 6

1

我意识到这个问题很老,但其他答案从未真正回答过这个问题。如果您不反对编写一些 PHP 代码,CubicleSoft Ultimate Web Scraper Toolkit 有一个名为 TagFilter 的类:

https://github.com/cubiclesoft/ultimate-web-scraper/blob/master/support/tag_filter.php

您传入两件事:一组选项和要解析为 HTML 的数据。

为了清理损坏的 HTML,来自 TagFilter::GetHTMLOptions() 的默认选项将作为一个很好的起点。这些选项构成了有效 HTML 内容的基础,并且不做任何其他事情,将任何输入数据清理为其他工具(如 Simple HTML DOM)可以在 DOM 模型中正确解析的内容。

但是,使用该类的另一种方法是修改默认选项并将“回调”选项添加到选项数组。对于 HTML 中的每个标签,都会调用指定的回调函数。回调预计会返回如何处理每个标签,这就是 TagFilter 真正发挥作用的地方。您可以保留任何给定的标签及其部分或全部属性(或修改它们),去掉标签但保留内部内容,保留标签但去掉内容,修改内容(用于结束标签),或摆脱标签和内部内容。这种方法允许对最复杂的 HTML 进行极其精细的控制,并一次性处理输入。请参阅同一存储库的测试套件以了解 TagFilter 的用法。

唯一的缺点是回调必须跟踪它在每次调用之间的位置,而像 Simple HTML DOM 这样的东西会基于类似 DOM 的模型来选择事物。但这只是一个缺点,如果正在处理的文档有'id's和'class'es之类的东西......大多数Word / Libre HTML内容都没有,这意味着就DOM处理工具而言,它是一个巨大的无法识别/无法解析的HTML去。

于 2015-04-11T21:38:27.733 回答
1

我一直在使用http://word2cleanhtml.com/直到我意识到 MS Word 本身提供了将文档另存为 HTML 的选项。

选择此选项后,.docx 文件变为 .html,并且是我见过的最好的 html 版本的 word 文档。它肯定比所有这些在线工具都要好。

于 2013-09-28T07:17:50.697 回答
0

在您的情况下,您可能需要逐行转换 word 文档的主要部分,然后返回并清理任何其他标签。如果你不介意这种方法,那么考虑这个解决方案......

  1. 将您的 word doc 保存为网页后,在 Notepad++ 中打开该网页。
  2. 然后对该文档使用替换功能
  3. 在查找内容框中,输入 <[^>]+>
  4. 在同一窗口的搜索模式中,选择“正则表达式”

现在您所要做的就是单击查找下一个,直到找到要替换的标签,然后为需要替换的每个标签单击替换。确保“替换为:”框为空。

不知道有没有更方便的方式,但是这种方式是100%免费的,简单的通过Notepad++进行HTML标签清理处理。

至于将内联样式转换为外部 CSS(我建议将其作为替换不必要标签后的第二个过程),试试这个应用程序...... http://inlinecssextractor.com/home.html

祝你好运

于 2013-01-24T20:57:54.000 回答
0

我发现这两种清洁剂非常有效。首先,我通过

http://textism.com/wordcleaner/

然后我使用一些正则表达式将一些项目符号段落项转换为列表(li)。然后我运行了结果

http://infohound.net/tidy/

用无序列表 (ul) 标签包装列表项并清除其他错误。我对从 1.5M 到 225k 的结果感到非常满意。

于 2013-04-19T22:02:23.243 回答
0

这是一组 PowerShell 脚本,它们将清理 Word-Filtered HTML 并在大约 95% 的时间正确标记超级/下标。(不,没有比这更好的了,Word 是为印刷而设计的。)

https://github.com/suzumakes/replaceit

自述文件中有说明,如果您碰巧遇到任何需要捕获的其他字符或提出任何调整/改进,我很高兴看到您的拉取请求。

于 2015-07-10T16:15:01.447 回答
0

ophir.php在从 .odt 文件生成干净的 HTML 方面做得非常好。您需要一个 php 托管环境来运行它。

于 2015-08-06T19:46:05.057 回答