gpt4 book ai didi

ms-word - 防止 Word 2010 保存 o :gfxdata base64 or uuencoded VML?

转载 作者:行者123 更新时间:2023-12-02 03:50:23 25 4
gpt4 key购买 nike

我正在处理 .docx 文件,其中包含多个绘图 Canvas ,其中插入了图像,并在 Word 2010 中绘制了一些线条和箭头。我使用的是 2010 格式,没有兼容模式。

Word 将 o:gfxdata 属性插入到每个 v:shapev:group 元素中,并用 ascii 编码的东西填充它。根据我的阅读,它可能是描述 v:shapev:group 的 VML 副本。我不知道我是否只是不知道要查找什么,但我无法确定此数据的用途,因为它的删除对我在 Word 2003、2007 或 2010 中阅读或编辑文档的能力没有明显影响.

它确实将 document.xml 膨胀到几乎是(表面上的)必要大小的两倍。这相当会减慢 OpenTBS 的处理速度,因此如果可能的话,我想将其删除。有谁知道告诉 Word 2010 停止保存这些额外数据的方法吗?或者它有什么用?除了 this post 之外,我真的很难找到关于它的任何文档。 .

编辑:

这是一个sample .docx . document.xml 约为 141KB,OpenTBS 平均需要 10.35 秒来创建一个将其作为子模板包含在内的文件 21 次。如果我删除所有 o:ogfxdata 属性,文件大小将减少到 ~37KB,OpenTBS 只需要 2.99 秒就可以生成相同的文件。

编辑 2:

经过进一步调查,似乎删除 o:gfxdata 可能会导致安装了较旧兼容包的 Word 2003 反对该文件并出现以下错误:

"This is a pre-release version of the Compatibility Pack and can open pre-release Office 2007 files only. Do you want to check for a newer version of the Compatibility Pack?"

我已经能够通过安装更新​​的兼容包来打开文件 - 虽然它会提示用户不兼容并转换文件以便打开它。这不会损坏我的文件,但需要注意这一点。

最佳答案

属性 o:ogfxdata 在网络上的记录很少。根据您的调查,这是某种兼容性额外信息。

您可以使用 OpenTBS 删除模板中的那些属性。清洁可以在您的模板上完成一次,无需任何合并,然后将清洁后的模板另存为新模板。或者您可以在每次打开模板时执行清洁。

清理 DOCX 文件:

while ($x = clsTbsXmlLoc::FindStartTagHavingAtt($TBS->Source, 'o:gfxdata', 0) ) {
$x->ReplaceAtt('o:gfxdata', '');
$TBS->Source = str_replace(' o:gfxdata=""', '', $TBS->Source);
}

请注意类 clsTbsXmlLoc 由 OpenTBS 提供并且没有记录。代码应该从 OpenTBS 1.8.0 开始工作。 (目前处于稳定测试版)。

我注意到由于属性 o:gfxdata 被删除,当您编辑 docx 时它们不会立即恢复。

关于ms-word - 防止 Word 2010 保存 o :gfxdata base64 or uuencoded VML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com