Это, к сожалению, ограничение PowerPoint и необычное (по моему опыту) место, где LibreOffice действительно работает лучше.
Вы заметите, что если вы щелкнете в тексте PowerPoint, вставьте пробел и затем удалите его, чтобы текст автоматически автоподтверждался. Это может не решить проблему, но это указывает на причину.
В XML-документе, расположенном за слайдом, текущий размер шрифта «автоматически установлен» в текстовом поле cached. LibreOffice автоматически пересчитывает эту кешированную цифру при открытии презентации; PowerPoint нет.
Расчет размера шрифта «автоматически установлен» - это работа механизма рендеринга, которая имеет доступ к размерам шрифта, разрыву строки/слова и т. Д. python-pptx
не включает механизм рендеринга и не имеет доступа к одному (насколько я знаю) для Python нет. Поэтому лучшее, что он может сделать, это оценить его, и он предпочитает не делать этого, так как это входит в рендеринг.
Однако есть экспериментальная функция в виде метода .fit_text(), который может помочь вам в большей части пути. В принципе, эта способность была настолько желанной, что кто-то был готов спонсировать решение «наилучшим образом», что и представляет этот метод. Документация по этой ссылке объясняет, как использовать ее и ее ограничения.
Обратите внимание, что этот метод является экспериментальным, то есть он не будет считаться ошибкой, если он не работает так, как вам нужно. Вы можете разработать его, если сможете сделать лучше.
Спасибо за ответ! Но я запускаю свой код на машине CentOS. И fit_text попытался получить информацию о шрифте, которая вызывает ошибку «Неподдерживаемая операционная система» для меня. Я также где-то читал, что есть запрос на перенос, ожидающий объединения, который исправит эту проблему. Но до тех пор я не могу использовать fit_text. : / – yashdosi