2011-08-15 11 views
5

मैंने Open XML SDK 2.0 for Microsoft Office के साथ प्रयोग करना शुरू किया।एमएस ओपन एक्सएमएल एसडीके का उपयोग कर .pptx फ़ाइल से छवियों को मैं कैसे पुनर्प्राप्त कर सकता हूं?

मैं वर्तमान में कुछ चीजों को करने में सक्षम हूं जैसे प्रत्येक स्लाइड में सभी ग्रंथों को पुनर्प्राप्त करना, और प्रस्तुति का आकार प्राप्त करना। उदाहरण के लिए, मैं बाद में ऐसा करता हूं:

using (var doc = PresentationDocument.Open(pptx_filename, false)) { 
    var presentation = doc.PresentationPart.Presentation; 

    Debug.Print("width: " + (presentation.SlideSize.Cx/9525.0).ToString()); 
    Debug.Print("height: " + (presentation.SlideSize.Cy/9525.0).ToString()); 
} 

अब मैं किसी दिए गए स्लाइड में एम्बेडेड छवियों को पुनर्प्राप्त करना चाहता हूं। क्या कोई जानता है कि यह कैसे करें या मुझे इस विषय पर कुछ दस्तावेज़ों को इंगित कर सकते हैं?

+0

मैं उत्सुक हूं - क्यों "/ 9525.0"? ईएमयू-टू-पॉइंट्स के लिए मानक विभाजक "/ 12700" है। –

उत्तर

1

सबसे पहले आप SlidePart हड़पने के लिए की जरूरत है, जिसमें आप से छवियों को प्राप्त करना चाहते हैं:

public static SlidePart GetSlidePart(PresentationDocument presentationDocument, int slideIndex) 
{ 
    if (presentationDocument == null) 
    { 
     throw new ArgumentNullException("presentationDocument", "GetSlidePart Method: parameter presentationDocument is null"); 
    } 

    // Get the number of slides in the presentation 
    int slidesCount = CountSlides(presentationDocument); 

    if (slideIndex < 0 || slideIndex >= slidesCount) 
    { 
     throw new ArgumentOutOfRangeException("slideIndex", "GetSlidePart Method: parameter slideIndex is out of range"); 
    } 

    PresentationPart presentationPart = presentationDocument.PresentationPart; 

    // Verify that the presentation part and presentation exist. 
    if (presentationPart != null && presentationPart.Presentation != null) 
    { 
     Presentation presentation = presentationPart.Presentation; 

     if (presentation.SlideIdList != null) 
     { 
      // Get the collection of slide IDs from the slide ID list. 
      var slideIds = presentation.SlideIdList.ChildElements; 

      if (slideIndex < slideIds.Count) 
      { 
       // Get the relationship ID of the slide. 
       string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId; 

       // Get the specified slide part from the relationship ID. 
       SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); 

       return slidePart; 
      } 
     } 
    } 

    // No slide found 
    return null; 
} 

तो फिर तुम Picture वस्तु जो छवि आप फ़ाइल के आधार पर तलाश कर रहे हैं में शामिल होंगे के लिए खोज करने की जरूरत है छवि का नाम:

Picture imageToRemove = slidePart.Slide.Descendants<Picture>().SingleOrDefault(picture => picture.NonVisualPictureProperties.OuterXml.Contains(imageFileName)); 
+0

स्लाइडरपार्ट को वास्तविक छवि में कैसे परिवर्तित करें जो छवि सूची में हो सकता है? –

+1

यह कोड मानता है कि आप छवि का फ़ाइल नाम जानते हैं - है ना? क्या होगा यदि मैं सिर्फ पीपीटीएक्स फ़ाइल या पीपीटीएक्स फ़ाइल में सभी छवियों में पहली छवि को पुनर्प्राप्त करना चाहता हूं? –

+0

क्या सभी स्लाइडों को छवि (ओं) या svg में परिवर्तित करने का कोई तरीका है? – sridharnetha

0

OPENXML प्रारूपों से छवियाँ होने का सबसे आसान तरीका:

pptx फ़ाइल के मीडिया फ़ोल्डर से छवियों को निकालने के लिए किसी भी ज़िप संग्रह लाइब्रेरी का उपयोग करें। इसमें दस्तावेज़ में छवियां होंगी। इसी प्रकार, आप मैन्युअल रूप से एक्सटेंशन .pptx को .zip में प्रतिस्थापित कर सकते हैं और मीडिया फ़ोल्डर से छवियां प्राप्त करने के लिए निकाल सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे