2013-07-01 43 views
0

我遇到了一种情况,我从web服务接收到一个ms-word(docx)文档作为流/ bytearray。docx文件中缺少的属性

然后我尝试重新创建该文件,并赋予它与以前相同的名称和内容。

如果我比较原始文件和下载后创建的文件,那么它们是相同的。

但是,当我尝试打开新的单词我得到一个错误,如果接受riscs我可以打开它。

如果我在窗口中查看文件属性,新的缺少大量的信息。

任何人都知道如何重新创建属性,以便文件可以打开没有错误?


只是一个额外的资料片。如果我使用的.doc(word97-2003)记录所有工作正常,唯一的.docx文件是一个问题(也是原来的.xlsx和所有的办公文件,2007 - 2010年)。

这是我的代码创建文件..

​​

我比较原始的和在记事本++重新创建文件,并得到了结果,他们是相同的。

这是我如何看到一些属性丢失。

Image of properties

这些都是警告我从搭话:

如果我按在第一确定,是在第二我反正可以打开该文档。

Word Warnings

+0

您应该包含重新创建文件的代码。可以帮助人们弄清楚发生了什么。 – Henrik

+0

如何比较原始文件和下载的文件?什么属性告诉你这些文件完全相同? – cyroxx

+0

如果你已经解决了你的问题,请发表一个答案。这是在SO上接受的方式。另外,不要编辑你的标题解决。 – maxf130

回答

0

SOLUTION

原来有与性没有问题。

只是在提供文档数据的服务的某个地方在文件数据的末尾添加了一个额外的空白字符。

这导致预期文件长度与实际文件长度不匹配,因此办公室组件在尝试打开文档时抱怨。

这也阻止了文件的属性被解析。

什么是非常烦人的是,文件比较工具没有抓住这一点。 (或者,可能需要对尾部空格进行一些配置,而不是忽略)

0

如果你被要求“接受风险”,然后从互联网下载,而不是错误的文件时,这听起来更像是默认的Word行为。您可以从Word选项,信任中心(假设您使用的是Word 2007或更高版本)更改Word的行为。

所以我怀疑缺少的属性是一个问题。通过在构建新文档之前更改系统时钟(基于以前的文档内容),可以更改要重新创建的文档的创建日期。我不推荐这些步骤。