Ceci est malheureusement une limitation de PowerPoint et un endroit inhabituel (à mon avis) où LibreOffice fait effectivement mieux.
Vous remarquerez que si vous cliquez dans le texte PowerPoint, insérez un espace, puis supprimez-le, que le texte sera automatiquement mis à jour. Cela peut ne pas résoudre le problème, mais il indique la cause.
Dans le code XML situé derrière la diapositive, la taille de police "auto-ajustée" actuelle de la zone de texte est en cache. LibreOffice recalcule automatiquement ce chiffre mis en cache lorsque la présentation s'ouvre; PowerPoint ne fonctionne pas. Le calcul de la taille de police "auto-ajustée" est le travail du moteur de rendu, qui a accès aux tailles de police, aux sauts de lignes/mots, etc. python-pptx
n'inclut pas de moteur de rendu ni n'a accès à un moteur de rendu (aucun n'existe pour Python autant que je sache). Donc, le mieux qu'il peut faire est de l'estimer et il préfère ne pas le faire, car cela commence à être rendu. Cependant, il existe une fonctionnalité expérimentale sous la forme de la méthode .fit_text() qui peut vous permettre d'y parvenir en grande partie. Fondamentalement, cette capacité était si désirée que quelqu'un était prêt à parrainer une solution de «meilleurs efforts», ce que représente cette méthode. La documentation de ce lien explique comment l'utiliser et ses limites.
Notez que cette méthode est expérimentale, ce qui signifie qu'elle ne sera pas considérée comme un bug si elle ne fonctionne pas comme vous le souhaitez. Vous êtes libre de l'élaborer si vous pouvez faire mieux.
Merci pour la réponse! Mais je cours mon code sur une machine CentOS. Et fit_text a essayé d'obtenir l'information de police qui jette l'erreur "Unsupported Operating System" pour moi. J'ai également lu quelque part qu'il y a une demande de traction qui attend d'être fusionnée, ce qui va résoudre ce problème. Mais jusque-là, je ne peux pas utiliser fit_text. : / – yashdosi