Я создаю документ Word, используя C# и Word Interop плюс шаблон слов по умолчанию. Однако в некоторых случаях код должен создать заголовок документа, содержащий длинное слово (имя файла другого файла, в котором не содержатся пробелы), и мне нужно регулировать шрифт заголовка, чтобы слово не было разделено на две строки. Я прочитал слово Interop, не имеет средств для измерения ширины диапазона в документе, и трюк заключается в создании текстовой бокса, добавлении текста и сообщите форме автофиту, чтобы соответствовать форме. Затем я могу проверить ширину формы по максимальной ширине страницы и уменьшить размер шрифта, пока не будет подходит. Код, который у меня есть: < /p>
var Heading = Document.Sections[1];
var PageWidth = Heading.PageSetup.PageWidth - Application.CentimetersToPoints(2); // 2 cm margin
var FontSize = Heading.Range.Font.Size;
while (FontSize >= 10)
{
var TempShape = Document.Shapes.AddTextbox(
Orientation: MsoTextOrientation.msoTextOrientationHorizontal,
Left: 0, Top: 0, Width: 10, Height: 10);
TempShape.TextFrame.AutoSize = 1;
TempShape.TextFrame.TextRange.Text = Document.Sections[1].Range.Text;
TempShape.TextFrame.TextRange.Font.Size = FontSize;
// Set margins to zero to avoid extra padding
TempShape.TextFrame.MarginLeft = 0;
TempShape.TextFrame.MarginRight = 0;
TempShape.TextFrame.MarginTop = 0;
TempShape.TextFrame.MarginBottom = 0;
var ShapeWidth = TempShape.Width;
TempShape.Delete();
if (ShapeWidth
Однако ширина формы все еще 10, когда я выполняю тест по размеру страницы. Есть идеи, что я делаю не так, или это не правильный подход?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-document