2017-01-27 25 views
0

フラスコサーバーでpython-pptxを使用してファイルを作成しようとしています。これはすべて動作していて、ダウンロードでさえも問題になるのは、自分のコードでtext_frame.auto_sizeを使用しようとするときです。 LibreOffice Impressはテキストを完全に表示しますが、MS Powerpointはテキストを正しく表示しません。python-pptxを使用して生成されたpptによるpowerpointとlibreofficeの動作が異なります

のLibreOffice - - ここで

は、問題を説明するイメージです enter image description here

パワーポイント - enter image description here

また、ここで私が使用しているコードがある -

text_box = slide.shapes.add_textbox(left, top, width, height) 
text_frame = text_box.text_frame 
text_frame.word_wrap = True 
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE 

私がここで間違っていることは何ですか?

答えて

0

これは残念なことにPowerPointの制限であり、LibreOfficeが実際に優れている(私の経験上)珍しい場所です。

PowerPointのテキストをクリックしてスペースを挿入して削除すると、テキストが自動的に自動調整されることに気づくでしょう。これは問題を解決することはできませんが、原因を指しています。

スライドの背後にあるXMLでは、テキストボックスの現在の「自動フィット」フォントサイズはで、キャッシュされるのはです。プレゼンテーションが開くと、LibreOfficeはこのキャッシュされた図を自動的に再計算します。 PowerPointはそうではありません。

"自動フィット"フォントサイズの計算は、フォントサイズ、行/改行などにアクセスできるレンダリングエンジンの仕事です。python-pptxにはレンダリングエンジンが含まれていないし、私が知る限り、Pythonには存在しません)。だからそれができるのは、それを見積もることだけで、それがレンダリングになっているからです。

しかし、ほとんどの方法であなたを得ることができる.fit_text()メソッドの形で実験的な機能があります。基本的に、その能力は、その方法が表すものである「最善の努力」の解決策をスポンサーにしてもらいたいという希望を持っていました。そのリンクの文書には、その使用法とその限界が説明されています。

このメソッドは実験的なものであり、必要な方法で機能しない場合はバグとはみなされないことに注意してください。あなたがもっとうまくいくことができれば、あなたはそれを手がけています。

+0

返信いただきありがとうございます!しかし、私はCentOSマシン上で自分のコードを実行しています。そしてfit_textは私に "Unsupported Operating System"エラーを投げるフォント情報を得ようとしました。私はまた、この問題を修正するために結合が待たれているプルリクエストがどこかにあると読んでいます。しかしそれまではfit_textを使うことはできません。 :/ – yashdosi

関連する問題