gfxdata一个base64或容易被解码VML:从节约Ø防止Word 2010?(Prevent

2019-08-08 14:57发布

我与我使用2010格式不兼容模式包含在Word 2010中插入绘制的图像和一些线条和箭头几个绘图画布的.docx文件的工作。

字插入一个o:gfxdata属性到每个v:shapev:group元素,且以ASCII编码的东西填充。 从我读它可能是VML的副本描述v:shapev:group 。 我不知道如果我只是不知道要寻找什么,但我不能确定这是什么数据是其去除对我的阅读或在Word 2003,2007,或2010编辑文档的能力无明显影响。

它溶胀document.xml中几乎两倍的(表观)所需的大小。 这大大减慢OpenTBS”处理,所以我想如果可能的话将其删除。 有谁知道的方式告诉Word 2010中退出保存这些额外的数据? 或者,它是什么呢? 我真的在努力寻找超越其上的任何文件这篇文章 。

编辑:

这里是一个样本.DOCX 。 的document.xml中是〜141KB和OpenTBS花费10.35秒的平均创建包括此作为子模板21次的文件。 如果我删除的所有o:ogfxdata属性,文件的大小减小到〜37KB和OpenTBS花费仅为2.99秒,产生相同的文件。

编辑2:

经过进一步调查,它出现在去除邻:gfxdata可能导致Word 2003与旧安装了兼容性包,反对与以下错误的文件:

“这是兼容包的预发布版本,只能2007个文件打开预发布厅。你要检查兼容包的新版本?”

我已经能够通过安装新的兼容包打开文件 - 尽管它会提示有关不兼容性的用户和文件转换才能打开它。 这并不损害我的文件,但它是值得看出来的。

Answer 1:

属性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的代码应该工作。 (这是目前在稳定的beta版本)。

我注意到,因为属性o:gfxdata被删除,他们不会回来马上当你编辑的docx。



文章来源: Prevent Word 2010 from saving o:gfxdata base64 or uuencoded VML?