2013-03-31 3 views
8

वर्तमान में मेरे पास सी # में एक डब्ल्यूपीएफ एप्लीकेशन है, लेकिन मुझे अपनी विंडो में पावरपॉइंट प्रस्तुति को एम्बेड करने के किसी भी उपयोगी तरीके खोजने के लिए अविश्वसनीय रूप से मुश्किल लग रहा है।मैं एक और विंडो खोलने के बिना एक WPP अनुप्रयोग में PowerPoint प्रस्तुति को कैसे एम्बेड कर सकता हूं?

एक समाधान मैं यहाँ पाया: Embedding a Powerpoint show into a C# application

यह समाधान किसी अन्य विंडो में PowerPoint रन होने की समस्या को बनाया है, लेकिन सिर्फ WPF आवेदन के भीतर अपनी यूआई प्रदर्शित करते हैं। इसका मतलब था कि जब WPF विंडो केंद्रित थी, तो PowerPoint प्रस्तुति नहीं थी, और खेलना बंद कर दिया। खिड़की बंद होने पर पावरपॉइंट क्रैशिंग की समस्या भी थी।

एक अन्य समाधान मैंने पाया यहाँ था: http://www.codeproject.com/Articles/118676/Embedding-PowerPoint-presentation-player-into-a-WP

समाधान लोकप्रिय था, लेकिन मैं इसके साथ काम करना मुश्किल पाया। मुझे कोई Win32 प्रोग्रामिंग, या सी ++ नहीं पता है, इसलिए मुझे इसे संशोधित करना बेहद मुश्किल लगता है। मैं इसे PowerPoint (मूल प्रोजेक्ट में एक इच्छित फ़ंक्शन) की दूसरी प्रति प्रदर्शित करने से रोकने में कामयाब रहा, लेकिन मुझे अभी तक PowerPoint प्रस्तुति को स्वचालित रूप से खोलने का कोई तरीका नहीं मिला है।

तो मुझे जो चाहिए वह स्वचालित रूप से PowerPoint प्रस्तुति को स्वचालित रूप से और पृष्ठभूमि में खोलने का एक तरीका है (मैं नहीं चाहता कि PowerPoint UI किसी भी बिंदु पर प्रदर्शित किया जाए), और इसे स्वचालित रूप से चलाने की अनुमति दें (और प्रतिक्रिया न दें इनपुट करने के लिए) जबकि आवेदन चल रहा है। यह आश्चर्यजनक होगा अगर मैं इसे सी # और डब्ल्यूपीएफ में रख सकता हूं, और Win32 और C++ से निपटना नहीं है।

क्या यह संभव है? इस बिंदु पर मैं वास्तव में PowerPoint एकीकरण सिरदर्द की वजह से इस परियोजना को पछतावा कर रहा हूं।

+1

फिर भी एक और तरीका एक और करने के लिए अपनी प्रस्तुति परिवर्तित एक वीडियो की तरह प्रारूप, जिसे WPF MediaPlayer के साथ खेला जा सकता है। यह सहायक हो सकता है: http://stackoverflow.com/questions/13311579/ – Joulukuusi

+0

यह एक अच्छा विचार है। मैं उसमें देख लूंगा। –

+0

@Joulukuusi आपका समाधान वह था जो हमारे लिए सबसे अच्छा काम करता था। कृपया एक उत्तर दें ताकि मैं आपको बक्षीस दे सकूं। –

उत्तर

9

आप ऑन-द-मक्खी एक वीडियो प्रारूप करने के लिए अपनी प्रस्तुति में परिवर्तित कर सकते:

// not tested as I don't have the Office 2010, but should work 
private string GetVideoFromPpt(string filename) 
{ 
    var app = new PowerPoint.Application(); 
    var presentation = app.Presentations.Open(filename, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); 

    var wmvfile = Guid.NewGuid().ToString() + ".wmv"; 
    var fullpath = Path.GetTempPath() + filename; 

    try 
    { 
     presentation.CreateVideo(wmvfile); 
     presentation.SaveCopyAs(fullpath, PowerPoint.PpSaveAsFileType.ppSaveAsWMV, MsoTriState.msoCTrue); 
    } 
    catch (COMException ex) 
    { 
     wmvfile = null; 
    } 
    finally 
    { 
     app.Quit(); 
    } 

    return wmvfile; 
} 

और फिर आप MediaElement के साथ अदा कर सकता है:

<MediaElement Name="player" LoadedBehavior="Manual" UnloadedBehavior="Stop" /> 

public void PlayPresentation(string filename) 
{ 
    var wmvfile = GetVideoFromPpt(filename); 
    player.Source = new Uri(wmvfile); 
    player.Play(); 
} 

जब आप खेल रहे हों तो File.Delete(wmvfile) को न भूलें वीडियो!

+1

जब तक आपको अपनी प्रस्तुति के लिए उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है, यह एक सुंदर सभ्य समाधान है। –

2

/एस ध्वज के साथ कमांड लाइन के माध्यम से प्रेजेंटेशन लॉन्च करना स्प्लैश स्क्रीन लॉन्च किए बिना स्लाइड शो चलाएगा।

powerpnt.exe /s c:\path\to\your\presentation.pptx 

मैं WPF एम्बेड समाधान आप का उल्लेख या this approach पर एक नज़र ले जा गया है से कुछ के साथ की कोशिश करेंगे कि संगीत समारोह में।

मुझे डब्ल्यूपीएफ के बारे में बहुत कुछ पता है, इसलिए उम्मीद है कि कोई भी इन सभी टुकड़ों को शामिल करने का बेहतर उत्तर प्रदान कर सकता है।

1

मुझे यह वास्तव में पसंद नहीं है, और मुझे यकीन नहीं है कि यह आपकी स्थिति पर लागू होता है। आपको प्रस्तुति तक पहुंच की आवश्यकता होगी, निश्चित रूप से बहुत कुछ है। यह है हालांकि आसान और हल्का वजन।

मेरा मूल विचार किसी भी तरह से एचटीएमएल में पावरपॉइंट प्रस्तुति को एम्बेड करना था और इसे प्रदर्शित करने के लिए वेबब्रोसर नियंत्रण का उपयोग करना था। ऐसा करने के लिए number of ways लगता है।

मैंने प्रस्तुतिकरण को सीधे एचटीएमएल के रूप में सहेजने और सहेजने का फैसला किया, जो संभव हो गया (कम से कम PP2010 के लिए), हालांकि लेआउट अच्छा हो सकता है। एक और दृष्टिकोण (जैसे Google डॉक्स) कुछ अच्छा उत्पन्न कर सकता है। मैंने निम्नलिखित link से निम्नलिखित लिया।

  • PowerPoint 2010 में, प्रस्तुति है कि आप एचटीएमएल
  • Alt + F11 को निर्यात करना चाहते हैं खुला है।
  • Ctrl + G दबाएं।
  • तत्काल फलक में, निम्नलिखित टाइप करें, और फिर Enter दबाएं: ActivePresentation.SaveAs "<Drive>:\users\<username>\desktop\<filename>.htm", ppSaveAsHTML, msoFalse

    नोट एकल फ़ाइल वेब पेज का उपयोग करके बचाने के लिए (* .mht; * .mhtml) फ़ाइल स्वरूप, htm की जगह mht के साथ फ़ाइल नाम के अंत में, और ppSaveAsWebArchive के साथ ppSaveAsHTML को प्रतिस्थापित करें।

यदि आप htm में यह निर्यात करते हैं, आप अतिरिक्त फ़ाइलों का एक बहुत कुछ मिलता है, mht में यह सिर्फ एक एकल फाइल है, ताकि मुझे बेहतर उपयुक्त है। मुझे पूरा यकीन है कि अगर आपको अपने समाधान के साथ जेनेरिक जाना है तो कोड में इस चरण को स्वचालित करना भी संभव होगा।

वेबब्रोसर नियंत्रण में एचटीएमएल फ़ाइल को प्रदर्शित करने के लिए आसान हिस्सा है, मैंने इसे सुविधाजनक के लिए अपने ड्रॉपबॉक्स में अपलोड किया है और केवल स्रोत सेट किया है (यदि आप देखना चाहते हैं तो मैं इसे कुछ दिनों तक छोड़ दूंगा इसे सीधे)।

तुरंत स्लाइड शो शुरू करने के लिए, मुझे इसे और कुछ देखना होगा।

<WebBrowser x:Name="webbrowser" Source="https://dl.dropbox.com/u/27614341/test.mht"/> 

enter image description here

+0

वेबब्राउज़र में PowerPoint प्रस्तुति प्रदर्शित करते समय, मैं स्लाइड की संख्या जैसे जानकारी तक कैसे पहुंच सकता हूं? –

+0

ओह, कभी भी बुरा मत मानो। अब मुझे लगता है कि एचटीएमएल में रूपांतरण के दौरान '3 का स्लाइड 1 भाग' जोड़ा गया है। –

1

एक WPF नियंत्रण है जिसे DocumentViewer कहा जाता है।

  1. पहले पीपीटीएक्स को .xps फ़ाइल प्रारूप में परिवर्तित किया जाना चाहिए।
  2. फिर दस्तावेज़व्यूअर की Document संपत्ति पर बांधें।

Here सी तेज में XPS के लिए कार्यालय दस्तावेजों (pptx सहित) कन्वर्ट करने के लिए कड़ी है।

XAML

<DocumentViewer Name="myDocumentViewer" Margin="0,0,0,59"> 

</DocumentViewer> 

नियंत्रण से Document संपत्ति से आबद्ध (ध्यान दें ConvertPptxDocToXPSDoc XPS के लिए pptx कन्वर्ट करने के लिए तरीका है कि)

myDocumentViewer.Document = this.ConvertPptxDocToXPSDoc(this.FileName, this.newXPSDocumentName).GetFixedDocumentSequence(); 
+1

अगर प्रस्तुतिकरण लगता है तो यह काम नहीं करेगा, लेकिन अन्यथा यह एक अच्छा विचार है। – Joulukuusi

+0

क्या आप निम्नलिखित पोस्ट देख रहे हैं? [पोस्ट 1] (http://stackoverflow.com/q/11432875/873979) [पोस्ट 2] (http://www.codeproject.com/Articles/118676/Embedding-PowerPoint-Presentation-player-into-a-WP) – Haritha

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