2009-06-24 8 views
7

मैं एक कोड स्निपेट ढूंढ रहा हूं जो यह करता है, अधिमानतः सी # या यहां तक ​​कि पर्ल में।सी # या पर्ल में एचटीएमएल/जेपीईजी के रूप में मैं PowerPoint प्रस्तुति को प्रोग्रामेटिक रूप से खोल और सहेज सकता हूं?

मैं यह नहीं एक बड़ा कार्य आशा;)

+0

मुझे लगता है कि आपकी सर्वश्रेष्ठ शर्त कुछ सी # और पावरपॉइंट इंटरऑप असेंबली होगी ... शायद इसका शोध करने का प्रयास करें। –

+1

क्या प्रोग्राम चलाने वाले कंप्यूटर में PowerPoint स्थापित होगा? सी # समाधान के लिए –

उत्तर

6

रूप Kev अंक बाहर, एक वेब सर्वर पर इस का उपयोग नहीं करते।

#!/usr/bin/perl 

use strict; 
use warnings; 

use Win32::OLE; 
use Win32::OLE::Const 'Microsoft PowerPoint'; 
$Win32::OLE::Warn = 3; 

use File::Basename; 
use File::Spec::Functions qw(catfile); 

my $EXPORT_DIR = catfile $ENV{TEMP}, 'ppt'; 

my ($ppt) = @ARGV; 
defined $ppt or do { 
    my $progname = fileparse $0; 
    warn "Usage: $progname output_filename\n"; 
    exit 1; 
}; 

my $app = get_powerpoint(); 
$app->{Visible} = 1; 

my $presentation = $app->Presentations->Open($ppt); 
die "Could not open '$ppt'\n" unless $presentation; 

$presentation->Export(
    catfile($EXPORT_DIR, basename $ppt), 
    'JPG', 
    1024, 
    768, 
); 

sub get_powerpoint { 
    my $app; 
    eval { $app = Win32::OLE->GetActiveObject('PowerPoint.Application') }; 
    die "[email protected]\n" if [email protected]; 

    unless(defined $app) { 
     $app = Win32::OLE->new('PowerPoint.Application', 
      sub { $_[0]->Quit } 
     ) or die sprintf(
      "Cannot start PowerPoint: '%s'\n", Win32::OLE->LastError 
     ); 
    } 
    return $app; 
} 
22

निम्नलिखित C:\presentation1.ppt खोलने के लिए और आप इंटरॉप विधानसभा पाने के लिए की जरूरत है C:\Presentation1\slide1.jpg आदि

के रूप में स्लाइड की बचत होगी, यह है: हालांकि, निम्नलिखित पर्ल स्क्रिप्ट ऑफ़लाइन फ़ाइल रूपांतरण आदि के लिए बिल्कुल ठीक है Office इंस्टॉल प्रोग्राम में 'टूल्स' के तहत उपलब्ध है, या आप इसे here (office 2003) से डाउनलोड कर सकते हैं। यदि आपके पास कार्यालय का नया संस्करण है तो आपको वहां से अन्य संस्करणों के लिंक ढूंढने में सक्षम होना चाहिए।

using Microsoft.Office.Core; 
using PowerPoint = Microsoft.Office.Interop.PowerPoint; 

namespace PPInterop 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     var app = new PowerPoint.Application(); 

     var pres = app.Presentations; 

     var file = pres.Open(@"C:\Presentation1.ppt", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); 

     file.SaveCopyAs(@"C:\presentation1.jpg", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue); 
    } 
    } 
} 

संपादित करें: Sinan's version निर्यात का उपयोग कर जब से तुम एक आउटपुट संकल्प निर्दिष्ट कर सकते हैं थोड़ा बेहतर विकल्प हो करने के लिए लग रहा है। सी # के लिए, ऊपर की अंतिम पंक्ति को बदलें:

file.Export(@"C:\presentation1.jpg", "JPG", 1024, 768); 
+2

+1 (जब मैं फिर से मतदान कर सकता हूं जो कि आठ घंटे या उससे भी अधिक समय में होना चाहिए ;-) –

+1

यह उत्कृष्ट है। कार्यालय 2010 के सभी उपयोगकर्ताओं और बाद में, लाइब्रेरी 'माइक्रोसॉफ्ट.ऑफिस.कोर' [lib वास्तव में एक COM लाइब्रेरी है] (http://stackoverflow.com/questions/5932794/microsoft-office-core-reference-missing), एक विस्तार नहीं है जिसे लोड किया जाना चाहिए। –

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

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