2017-11-23 15 views
1

私は謝罪しましたが、私は解決策を探していましたが、それを理解するのに十分な文書を見つけることができません。私は学校に必要なデフォルトのスライドレイアウトをインポートしようとしていますが、特別な背景とタイトルブロックとサブタイトルブロックがあります。私はこれをインポートするとき、のpython-PPTXだけで自動的にこれら二つのテキストブロックのプレースホルダ0と1を作成することになり仮定が、私は試してみて、プレースホルダを編集するとき、私は属性のエラーを取得:Python PPTXスライドレイアウトのインポート

AttributeError: 'Presentation' object has no attribute 'placeholders' 

次のように私のコードがあります:

from pptx import Presentation 
prs = Presentation('SeniorDesignTitleSlide.pptx') 

Presentation_Title = prs.placeholders[0] 
Presentation_Subtitle = prs.placeholders[1] 
Presentation_Title.text = 'This Is a Test' 
Presentation_Subtitle.text = 'Is This Working?' 

prs.save('SlideLayoutImportTest.pptx') 

編集[0]:私はちょうどその特定のプレゼンテーションを開封しておりますが、どのように私はアクセスし、それにだ単一のスライドを編集するには実現していますか?

編集[1]:2015年からこの機能を拡張したpython-pptxについての記事がいくつか見つかりましたが、実際に発生した情報はありません。

python-pptxはインポートされたスライドレイアウトのプレースホルダをどのように割り当てますか?それともこれを行うのですか?それは.potxファイルである必要がありますか?

ありがとうございます。

答えて

2

プレースホルダはプレゼンテーションオブジェクトではなくスライドオブジェクトに属します。最初のことはスライドを取得することです。

スライドは、多くの場合、プレースホルダを含むいくつかの出発形状を得るためにそれ本質的クローンスライドレイアウトから作成されます。

最初の手順では、どのスライドレイアウトを使用するかを判断します。これを行う最も簡単な方法は、「開始」プレゼンテーション(「テンプレート」プレゼンテーションとも呼ばれる)を開いて、表示>マスター>スライドマスター...メニューオプションを使用してスライドマスターとレイアウトを調べることです。

最初のレイアウトから0から始まる番号を探し、そのスライドレイアウトののインデックスを表示します。

次に、あなたのコードは次のようなものになります。

を次のように私のコードは次のとおりです。

from pptx import Presentation 

prs = Presentation('SeniorDesignTitleSlide.pptx') 

slide_layout = prs.slide_layouts[0] # assuming you want the first one 
slide = prs.slides.add_slide(slide_layout) 

Presentation_Title = slide.placeholders[0] 
Presentation_Subtitle = slide.placeholders[1] 
Presentation_Title.text = 'This Is a Test' 
Presentation_Subtitle.text = 'Is This Working?' 

prs.save('SlideLayoutImportTest.pptx') 

placeholdersコレクションは限りインデックスによるアクセスが行くようdict、とてもとして使用0と1のように振る舞います上記のインデックスはあなたのケースで正確に一致する可能性は低いです(0はおそらく動作しますが、タイトルは常に0です)。

ドキュメントのこのページでは、あなたのテンプレートが利用できる持っている指標ものを発見する方法を説明します:http://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html

ページ1つは、プレースホルダの概念の詳細を持って前に: http://python-pptx.readthedocs.io/en/latest/user/placeholders-understanding.html

+0

Scanny、ありがとうございました。私はもっ​​と明確にすべきだったが、プレゼンテーションを一から作成し、11のレイアウトを使うときは、実際にはpptxの経験が少しあります。しかし、プレゼンテーションを開き、プレゼンテーション内のスライドにスライドレイアウト0(タイトル)を追加すると、そのタイトルスライドは、プレースホルダの背景と位置をシニアデザインテンプレートファイルから採用しますか? – CBK

+0

また私はあなたをアップヴォートするだろうが、私はまだその15の評判を持っていない。: – CBK

+0

@CBKスライドにはレイアウトが表示されるので、タイトルスライドには背景とプレースホルダを採用したタイトルスライドが作成されますが、これらのアイテムはレイアウト上に配置する必要があります。彼らはあなたにスライドの例がある.pptxを与えますが、それらのレイアウトは作成していません)、継承の振る舞いを得るためにレイアウトを自分で作成または更新する必要があります。 – scanny

関連する問題