Управление настройками автоматического изменения размера

По умолчанию, когда вы добавляете текстовое поле, Microsoft PowerPoint использует настройку Изменить размер фигуры, чтобы текст помещался для текстового поля — оно автоматически изменяет размер текстового поля, чтобы текст всегда помещался в него.

textbox-in-powerpoint

  • Когда текст в текстовом поле становится длиннее или больше, PowerPoint автоматически увеличивает текстовое поле — увеличивает его высоту — чтобы оно могло содержать больше текста.
  • Когда текст в текстовом поле становится короче или меньше, PowerPoint автоматически уменьшает текстовое поле — уменьшает его высоту — чтобы избавиться от избыточного пространства.

В PowerPoint есть 4 важных параметра или опции, которые управляют поведением автоматического изменения размера для текстового поля:

  • Не изменять размер автоматически
  • Уменьшить текст при переполнении
  • Изменить размер фигуры, чтобы текст помещался
  • Перенос текста в фигуре.

autofit-options-powerpoint

Aspose.Slides для Java предоставляет аналогичные опции — некоторые свойства из класса TextFrameFormat — которые позволяют вам контролировать поведение автоматического изменения размера для текстовых полей в презентациях.

Изменить размер фигуры, чтобы текст помещался

Если вы хотите, чтобы текст в коробке всегда помещался в эту коробку после внесения изменений в текст, вам нужно использовать опцию Изменить размер фигуры, чтобы текст помещался. Чтобы указать эту настройку, установите свойство AutofitType (из класса TextFrameFormat) в Shape.

alwaysfit-setting-powerpoint

Этот код на Java показывает, как указать, что текст должен всегда помещаться в свою коробку в презентации PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);

    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);

    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.Shape);

    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Если текст становится длиннее или больше, текстовое поле будет автоматически изменено (увеличение высоты), чтобы обеспечить размещение всего текста в нем. Если текст становится короче, происходит обратное.

Не изменять размер автоматически

Если вы хотите, чтобы текстовое поле или фигура сохраняли свои размеры, независимо от изменений, внесенных в текст внутри них, вам нужно использовать опцию Не изменять размер автоматически. Чтобы указать эту настройку, установите свойство AutofitType (из класса TextFrameFormat) в None.

donotautofit-setting-powerpoint

Этот код на Java показывает, как указать, что текстовое поле должно всегда сохранять свои размеры в презентации PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);
	
    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);
	
    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.None);
	
    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Когда текст становится слишком длинным для своего поля, он выходит за его пределы.

Уменьшить текст при переполнении

Если текст становится слишком длинным для своего поля, с помощью опции Уменьшить текст при переполнении вы можете указать, что размер и интервал текста должны быть уменьшены, чтобы текст помещался в его коробку. Чтобы указать эту настройку, установите свойство AutofitType (из класса TextFrameFormat) в Normal.

shrinktextonoverflow-setting-powerpoint

Этот код на Java показывает, как указать, что текст должен быть уменьшен при переполнении в презентации PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);
	
    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);
	
    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setAutofitType(TextAutofitType.Normal);
	
    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Перенос текста

Если вы хотите, чтобы текст в фигуре переносился внутри этой фигуры, когда текст превышает границы фигуры (только по ширине), вам нужно использовать параметр Перенос текста в фигуре. Чтобы указать эту настройку, вам нужно установить свойство WrapText (из класса TextFrameFormat) в true.

Этот код на Java показывает, как использовать настройку Перенос текста в презентации PowerPoint:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 30, 350, 100);

    Portion portion = new Portion("lorem ipsum...");
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
    autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion);

    ITextFrameFormat textFrameFormat = autoShape.getTextFrame().getTextFrameFormat();
    textFrameFormat.setWrapText(NullableBool.True);

    pres.save("Output-presentation.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}