【问题标题】:From MS Word or Libre Office to clean HTML从 MS Word 或 Libre Office 到干净的 HTML
【发布时间】:2013-01-24 07:26:58
【问题描述】:

向我的网站发送内容的人使用 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?

【问题讨论】:

标签: html ms-word web-standards openoffice-writer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我意识到这个问题很老,但其他答案从未真正回答过这个问题。如果您不反对编写一些 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去吧。

    【讨论】:

      【解决方案3】:

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

      1. 将 Word 文档另存为网页后,打开同一个网页 在记事本++中。
      2. 然后对该文档使用替换功能
      3. 在查找内容框中,输入 ]+>
      4. 在相同的搜索模式下 窗口,选择“正则表达式”

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

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

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

      祝你好运

      【讨论】:

      • 使用 Notepad++ 可能是单个文档的解决方案,但是,由于我每周都有新文档,我不想为每个文档一次又一次地重复相同的替换...
      【解决方案4】:

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

      运行了word过滤的html

      http://textism.com/wordcleaner/

      然后我使用一些正则表达式将一些项目符号段落项目转换为列表 (li)。然后我通过

      运行结果

      http://infohound.net/tidy/

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

      【讨论】:

        【解决方案5】:

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

        https://github.com/suzumakes/replaceit

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-25
            • 2012-08-09
            • 2014-07-25
            • 2011-01-05
            • 1970-01-01
            相关资源
            最近更新 更多