2016-11-01 12 views
1

python-pptxを使って自動化された、同じPPTXドキュメント内の他のスライドにハイパーリンクを追加する方法を探しています。以下は私のテストでしたが、うまくいきませんでした。オンラインでの検索では、ActionSetting、part、target_slide、rels、rPr.add_ihlinkClickなどを使用していくつかのソリューションをヒントしましたが、これらをまとめて理解することはできませんでした。同じPowerPointドキュメント内の他のスライドへのハイパーリンクの作成

基本的に、所望の結果は、スライド番号によって他のスライドにジャンプしたり、(そのようなものが存在する場合)のIDを摺動するテキストを作成することである

p = table.rows[1].cells[1].text_frame.paragraphs[0] 
    r = p.add_run() 
    r.text = "Testing" 
    r.hyperlink.address = "/ppt/slides/rels/slide1.xml" 
+0

「うまくいきませんでした」について詳しく説明できますか? –

+0

PowerPointのオブジェクトモデルを介して(これはPythonでは同じではないかもしれませんが)、ハイパーリンクの '.SubAddress'プロパティは' slide.SlideID'、 'slide.SlideNumber'、' slide.Name'に基づいてコンマで区切られた文字列として割り当てられます、 'slide.SlideIndex'です。 –

+0

ありがとうございます。私はこのためにpython-pptxを補完するためにCOMオートメーションを使用することを検討するかもしれません。提供された答えは、私がまだ快適でないXML操作を直接提案しました – idazuwaika

答えて

1

python-pptxActionSettingビットが読み出されるように見え - ただ今のところ。したがって、あなたが探しているものに対して直接的なAPIサポートはありません。あなたがこれらを書くことができるようにするには、拡張機能/回避策を書く必要があります。

ここで特徴空間を設定するアクションのかなり固体分析があります: http://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html

私の記憶が正しければ、唯一の本当のトリックは、ターゲットのスライドのために内部ターゲット「URL」を取得しているが。 PowerPoint UIを使用して手作業で内部リンクを作成し、opc-diagで生成するXMLを調べます。それが一般的なケースを解決しなかったとしても、動作するものに到達するのはかなり簡単かもしれません。

+0

UIを使用して作成し、スライドフォルダ内のXMLファイルを見るときにこれを観察しました。使用可能な内部リンクのようではありませんか? idazuwaika

+0

@idazuwaikaこれはハイパーリンク(クリックアクション)要素です。これは 'r:id =" rId2 "'属性を介して*関係*要素にリンクします。したがって、スライドのrels部分を見て、一致するr:idを持つ関係を見つけなければなりません。 relsファイルのパーツ名はスライドと同じですが、 '.rels 'は' slide1.xml.rels'と同様です。これは実際のURLが 'Target'属性にある場所です。 – scanny

+0

ありがとうございます。私はPPTXフォーマットをより詳細に調べるのに時間を費やす必要があるように見えます。私が必要とする多くのソリューションは、この直接的なXML操作に依存しています。 – idazuwaika

関連する問題