我的一个应用程序处理 MS Word 和文档创建/编辑/格式化。我正在使用带有 VS 2008 的 Office 2007,并且我正在针对 Microsoft.Office.Interop.Word 库进行编码,该库似乎适用于 2003 或 2008。
我使用 Document.Shapes.AddTextbox 方法在文档中创建一个文本框,然后用文本填充它。我希望能够以编程方式确定文本是否适合文本框,如果不适合,则减小字体大小直到适合。
我尝试了几种不同的方法:
1) 使用 bool Shape.TextFrame.Overflowing 属性
while (textbox.TextFrame.Overflowing) // adjust font size
但是,即使当我打开文档时我可以看到文本适合框,这也会返回 TRUE。
2) 检查文本最后一个字符的 X/Y 位置,并查看该坐标是否在文本框边界内
lastCharX = System.Convert.ToSingle (tb.TextFrame.TextRange.Characters.Last.get_Information (WdInformation.wdHorizontalPositionRelativeToPage));
lastCharY = System.Convert.ToSingle (tb.TextFrame.TextRange.Characters.Last.get_Information (WdInformation.wdVerticalPositionRelativeToPage));
bool outsideFrameBoundaries = lastCharX + lastCharWidth > frameBoundaryX || lastCharY + lastCharHeight > frameBoundaryY;
但是,这会返回几乎总是在框内的 X/Y,尽管当我打开文档时我看不到该字符,因为它不适合框。
所以我的想法已经用完了,我想问其他人以前是否经历过这个问题,以及他们是否对处理互操作这个词的不准确混乱有任何建议?