代码之家  ›  专栏  ›  技术社区  ›  PhilChuang

以编程方式调整字体大小以适应Word中文本框内的文本

  •  1
  • PhilChuang  · 技术社区  · 16 年前

    我使用Document.Shapes.AddTextbox方法在文档中创建一个文本框,然后用文本填充它。我希望能够通过编程确定文本是否适合文本框,如果不适合,则减小字体大小,直到它适合为止。

    我尝试了两种不同的方法:

    1) 使用bool Shape.TextFrame.overflow属性

    while (textbox.TextFrame.Overflowing) // adjust font size
    

    然而,即使当我打开文档时,我可以看到文本符合框中的要求,这也会返回TRUE。

    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几乎总是在框内,尽管当我打开文档时,我看不到字符,因为它不适合框内。

    所以我这里的想法已经没有了,我在问是否有其他人以前也经历过这个问题,他们是否有处理不准确混乱的建议,即互操作这个词?

    1 回复  |  直到 16 年前
        1
  •  1
  •   PhilChuang    16 年前

    我想出了一个解决办法。

    当我想出一种方法来消除Word的疯狂时,它就开始了。当我得到一个字符的X/Y坐标,并且该字符位于文本框区域之外时,Word实际上返回正确的X值,但Y值是文本框上最后一行可见的Y值。