3

.pptxOpenXMLSDK2.0を使用して既存のPowerPoint2010ファイルを分析しようとしています。

私が達成しようとしているのは

  • スライドを順番に列挙します(PPTXに表示されるとおり)
  • 各スライドからすべてのテキストビットを抽出する

私はこれまでに始めて取得しました-SlidePartsから列挙できます-しかし、これを順序付けられたPresentationPart列挙にする方法を見つけることができないようです-スライドはかなり任意の順序で返されています...

これらのスライドをPPTXファイルで定義された順序で取得するためのトリックはありますか?

using (PresentationDocument doc = PresentationDocument.Open(fileName, false))
{
   // Get the presentation part of the document.
   PresentationPart presentationPart = doc.PresentationPart;

   foreach (var slide in presentationPart.SlideParts)
   {
        ...
   }
}

SlideID数字などのようなものを見つけたいと思っていSequenceました-Linq式で使用できるアイテムやプロパティ

.OrderBy(s => s.SlideID)

そのslidepartsコレクションに。

4

2 に答える 2

6

それは私が望んでいたよりも少し複雑です-そして、ドキュメントは時々少し大ざっぱです....

SlideIdList基本的に、上でを列挙し、そこからOpenXML プレゼンテーションの実際のスライドPresentationPartを取得するために XML-foo を実行する必要がありました。SlideId

次のようなもの:

using (PresentationDocument doc = PresentationDocument.Open(fileName, false))
{
    // Get the presentation part of the document.
    PresentationPart presentationPart = doc.PresentationPart;

    // get the SlideIdList
    var items = presentationPart.Presentation.SlideIdList;

    // enumerate over that list
    foreach (SlideId item in items)
    {
        // get the "Part" by its "RelationshipId"
        var part = presentationPart.GetPartById(item.RelationshipId);

        // this part is really a "SlidePart" and from there, we can get at the actual "Slide"
        var slide = (part as SlidePart).Slide;

        // do more stuff with your slides here!
    }
}
于 2013-02-20T18:07:38.023 に答える
2

私が見つけた最も近いものはこのスニペットでした:

[ISO /IEC29500-1第1版]

sld(プレゼンテーションスライド)

この要素は、スライドリスト内のスライドを指定します。スライドリストは、スライドの順序を指定するために使用されます。

[例:スライドの順序を使用した次のカスタムショーについて考えてみます。

<p:custShowLst>
  <p:custShow name="Custom Show 1" id="0">
    <p:sldLst>
      <p:sld r:id="rId4"/>
      <p:sld r:id="rId3"/>
      <p:sld r:id="rId2"/>
      <p:sld r:id="rId5"/>
    </p:sldLst>
  </p:custShow>
</p:custShowLst>In the above example the order specified to present the slides is slide 4, then 3, 2 and finally 5. end example]

クラスMSDNドキュメントslide

rId##スライドには、##がスライドの番号である形式のr:idがあるようです。多分それはあなたを再び動かすのに十分ですか?

于 2013-02-19T22:29:01.327 に答える