2012-10-03 38 views
3

我使用OpenXml以这种方式创建自定义PowerPoint演示文稿:我在演示文稿中放置了一个关键字,在OpenXml过程中发现它并更改了文本值。一切工作正常,但合适的选择一开始不工作。 文本框有选项“自动调整:在溢出时收缩文本;在形状中包装文本:打开” 经过我的过程后,新文本出现在正确的位置,但自动调整未完成,我需要单击文本框并单击为看到自动调整工作做一个输入。我认为PowerPoint只会在修改后检查选项。使用OpenXml在Powerpoint上更改文本值不适合

我想要的是在过程结束时调用autofit选项。谁能帮我?

我希望你明白我想要做什么。

谢谢。

回答

5

仅仅使用OpenXML是不可能的。根据需要,<a:normAutofit/>标记由客户端应用程序(如PowerPoint)用于使文本变大或变小。 OpenXML实际上并没有渲染任何东西,所以直到客户端完成,它才会读取文本,就好像它不是自动拟合的。

有几个选项可以控制这个 - 但他们都不是很好。一种方法是在PowerPoint中使用VSTO或VBA来检查打开的PPTX上的所有形状,并且如果它们具有AutoFit标记,则重新渲染它们。第二种方法是根据形状的宽度&高度自己完成所有字体测量,然后将字体比例设置为适当的百分比。另一种方法是制作一个足够大的文本框,以适应您将要插入的最大量的文本,然后关闭自动分类。

对不起,这不会立即帮助你。我对这个问题做了大量的研究,这都是坏消息。

+0

感谢您的回答,显然您找到了与我相同的信息。我想自己做所有的字体测量,但对于一个简单的选项来说,它变得有点复杂。最后,我创建的解决方案是使用剪切条目字符串,如果它对于形状来说太大。再次感谢您的研究。 –

+0

我也研究过这个问题,发现了以下内容:如果您从标记中删除,则Powerpoint会在您打开文档时再次呈现文本框。 – Hans

+0

@Hans:我刚测试过这个,但没有奏效。事实上,它不适用于或不适用''。另外,即使它做了轻微的工作(例如,您将它设置为在客户端中呈现),然后您重新编辑了''标签以获得大量文本,fontcopy =“85000”lnSpcReduction =“不使用''中的10000“'。它需要在客户端重新渲染,然后这两个属性会改变。 –

相关问题