如何判断 .doc 是不是由 LibreOffice 创建?

Posted

技术标签:

【中文标题】如何判断 .doc 是不是由 LibreOffice 创建?【英文标题】:How can I tell whether a .doc was created by LibreOffice?如何判断 .doc 是否由 LibreOffice 创建? 【发布时间】:2016-07-09 19:05:56 【问题描述】:

我正在寻找一种针对 LibreOffice/Word compatibility bug 的程序化/自动化解决方法,它会导致 LibreOffice 保存的最后一行 .doc 文件在 Word 中查看时被截断。由于文档的数量和纯 Word 用户的数量,这可能比用户教育更容易。

我有数以千计的文档要处理,虽然我可以对所有文档应用“修复”,但我更愿意将其限制为仅由 LibreOffice 保存的文档。

是否有文件的元数据或其他特征可以(在某种程度上可靠地)告诉我 Word 格式的文档是否最初是由 LibreOffice 创建的?

【问题讨论】:

您是否考虑过将所有文档转换为.docx.odt?这些格式更容易操作,因为它们可以解压缩并修改为 XML。 @JimK - 是的,这实际上是我应用于有问题的文档的修复程序 - 但由于我不是文档的创建者(它们来自外部来源),这会很好能够仅对我可以看到需要转换的文件运行批处理操作。否则,我将转换数千个不需要它的人,以便赶上数十个需要它的人! 【参考方案1】:

This answer over at Superuser 建议进行字符串搜索以确定 Microsoft Word 的哪个版本 编辑了该文件。所以我看了一下那里是否还有其他东西,并在版本字符串所在的位置附近找到了字符串

Microsoft Word-Dokument - 在 LibreOffice .doc 文件中

Microsoft Word 97-2003 Document - 在 Microsoft 保存的文件中。

在 Word 中打开和重新保存 LibreOffice .doc 会更改字符串,反之亦然。所以这可能是你的解决方案。

关于是否所有版本的 MS Office 和 Libre/OpenOffice 都使用相同的字符串仍然存在疑问,但至少这是一个开始。

你如何搜索它,我把它留给你。

【讨论】:

以上是关于如何判断 .doc 是不是由 LibreOffice 创建?的主要内容,如果未能解决你的问题,请参考以下文章

awk 如何判断一个字符串是不是为纯数字?

POI中如何判断文件是doc还是docx

qt判断文件是不是存在

如何检测 QString 是不是由所有数字字符组成?

如何判断是不是是 knockout.js 禁用了元素而不是其他东西?

如何判断 RestKit v0.20.2 是不是提供了实体缓存的结果?