【问题标题】:Losing superscript tag when converting HTML to DOCX using libreoffice使用 libreoffice 将 HTML 转换为 DOCX 时丢失上标标记
【发布时间】:2014-07-12 03:07:54
【问题描述】:

我有以下 HTML:

<html><body><p>n<sup>th</sup></p></body></html>

我正在使用命令:

$ libreoffice --convert-to docx:"MS Word 2007 XML" test.html

将该 HTML 转换为 DOCX 文件。但是我注意到生成的 DOCX 文件实际上并不包含 <sup> 标记。看起来它正在使用位置和大小来复制<w:vertAlign> 标签:

<w:position w:val="8"/><w:sz w:val="19"/>

我需要知道的是如何让 libreoffice 放入 <w:vertAlign> 标签而不是使用位置和大小。

附加信息:

我在粗体和斜体 (<strong><em>) 方面遇到了类似的问题,但如果我将 strongem 标记分别转换为 bi 标记,则能够使转换正常工作。

【问题讨论】:

  • 我在使用 libreoffice 转换为 docx 时遇到了类似的问题,并且花了太多时间试图找出哪些标签转换正确而没有正确转换。我使用以下方法取得了更一致的成功:cloudconvert.org/html-to-docx 如果您时间紧迫,我建议您尝试这种替代方法。具体来说,我知道它可以正确处理 标记。
  • @BrianGilreath 我用我的问题发布的确切 HTML 尝试了你提到的工具。 sup 仍然转换为位置和大小,而不是 vertAlign
  • 这可能是文档类型问题吗?如果你在开始的 html 元素之前声明 html5 doctype,你会得到不同的结果吗?
  • 是否需要通过 libreoffice 进行转换?
  • @albert 我尝试了不同的文档类型,但它们似乎都没有帮助。 @ user3241019 我不需要使用 libreoffice 进行转换,但这是我在一般情况下找到的最佳工具。

标签: html converter docx libreoffice


【解决方案1】:

如果您要编辑 HTML,最好使用适合编辑 HTML 的工具,例如 Notepad++ 或 Sublime(作为示例)。

如果您出于特定原因需要将 HTML 作为 LibreOffice 文档,您可以在记事本中打开 HTML 文件并将其另存为扩展名为 .txt 的文本文件。这应该允许您在 LibreOffice 中打开文档。

【讨论】:

  • 我希望让我们的用户能够编辑 HTML,尽管我们的大多数用户并不熟悉 HTML。我们的大多数用户都非常精通 Microsoft Word,因此将 HTML 转换为 DOCX 以在 word 中进行编辑是有意义的。我已经有了将 DOCX 文件转换回 HTML 的工具。
  • 我已经有一段时间没有接触 HTML 了,所以只是问...记事本太多了,不能让他们学习?这不是一个贬义的问题,只是好奇。学习正确的工具真的是学习编程的开始。还有一些在线工具可让您完全在浏览器中编写代码,例如:scratchpad.io
  • 我们的用户技术背景为零。为了让他们使用记事本,他们首先需要学习如何构建 HTML。我们的工具为他们提供了一种使用他们熟悉的工具(Microsoft Word)编辑文档的方法。我们目前有一个“你的意思编辑器”,它是一个 JS 工具,可以像时尚一样编辑 HTML。但是它很笨重,而且有点麻烦。
【解决方案2】:

您可以尝试使用 TinyMCE(http://www.tinymce.com/) 等 WYSIWYG(所见即所得)编辑器。网上有很多,你也可以找到一些桌面应用程序。但是如果你想在 docx 中转换它,你可以试试这个http://htmltodocx.codeplex.com/ 它是用 php 编写的,使用 PHPWord,效率很高。

【讨论】:

  • 我们已经在使用 WYSIWYG 编辑器 (github.com/wymeditor/wymeditor)[wymeditor]。我们特别尝试使用它,因为与 Microsoft Word 相比,我们的客户使用 WYSIWYG 编辑器不太舒服。我查看了htmltodocx简而言之,但是我们不使用 PHP,也不是我们想要使用的东西。我想做的是找到一种方法来告诉 libreoffice 这些标签应该是什么,并且转换与 libreoffice 一起工作,就像我提出的问题一样。
【解决方案3】:

只需创建一个 Python 脚本,在需要的地方用 <w:vertAlign> 标记替换不需要的标记。

【讨论】:

  • 那你怎么建议我找到乱七八糟的标签,用<w:vertAlign>标签代替呢?考虑到它们几乎肯定会因字体、边距等而有所不同。
【解决方案4】:

如果将 'docx' 替换为 'xml',该命令可以正常工作,如下所示:

libreoffice --convert-to xml:"MS Word 2003 XML" test.html

【讨论】:

  • 不幸的是,我需要生成的文档是 docx 文件,因为当用户完成文档编辑后,我正在使用 PyDocx 将文件转换回 HTML。
  • 我相信 MS Word 可以直接编辑 HTML 文档(如果我错了,请纠正我)。
  • 不太好。我们对生成的 HTML 进行了大量后期处理。不管。如果我不清楚我想要 DOCX 文件的问题,请告诉我,以便我解决。
猜你喜欢
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2018-09-19
  • 2018-01-14
  • 2014-03-17
  • 2016-11-16
  • 2018-12-01
  • 2012-04-23
相关资源
最近更新 更多