E' ormai da un pò di tempo che Microsoft ha rilasciato questo il plugin Microsoft Save as PDF or XPS, per permettere la conversione in PDF dei documenti compatibili con i programmi del pacchetto Office 2007.
E siccome il livello di programmabilità di Office è cresciuto notevolemente, sempre attraverso questo plugin e all'installazione degli Interop Assemblies per Office 2007, è possibile effettuare le medesime conversioni via codice, sia da applicazioni ASP.NET che da applicazione Windows.
I requisiti sono:Su MSDN trovate due how-to visuali su come trasformare documenti Word 2007 e Workbook Excel 2007 in formato PDF (o XPS). Per mie necessità, ho sviluppato anche il codice per la trasformazione di presentazioni PowerPoint. Eccolo qua:

using Microsoft.Office.Interop.PowerPoint;

using Microsoft.Office.Core;

private static void ConvertPPT(object inputFile, object outputFile)
{
ApplicationClass powerpoint = new ApplicationClass();
Presentation ppt = null;
object paramMissing = Type.Missing;

try
{

PpFixedFormatType formato = PpFixedFormatType.ppFixedFormatTypePDF;
PpFixedFormatIntent intent = PpFixedFormatIntent.ppFixedFormatIntentPrint;
PpPrintRangeType range = PpPrintRangeType.ppPrintAll;
MsoTriState paramFalse = MsoTriState.msoFalse;
MsoTriState paramTrue = MsoTriState.msoTrue;
PpPrintOutputType outputType = PpPrintOutputType.ppPrintOutputSlides;
PpPrintHandoutOrder handoutOrder = PpPrintHandoutOrder.ppPrintHandoutHorizontalFirst;

ppt = powerpoint.Presentations.Open(inputFile.ToString(), paramFalse, paramFalse, paramFalse);
if (ppt != null)
{
ppt.ExportAsFixedFormat(outputFile.ToString(), formato, intent,
paramTrue, handoutOrder, outputType, paramFalse, null,
range, "", false, false, true, false, true, paramMissing);
}
}
catch (Exception exe)
{
Console.WriteLine(exe.Message + exe.StackTrace);
}
finally
{
if (ppt != null)
{
ppt.Close();
ppt = null;
}
if (powerpoint != null)
{
powerpoint.Quit();
powerpoint = null;
}

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}

Io ho provato il codice anche con documenti abbastanza grossi, con veramente degli ottimi risultati !


TAGS: [Office 2007] [VSTO]
Commenti(2) - Posted @ 9/10/2007 11:23:47 AM - Categoria: .NET General - Permalink - Share on twitter | facebook


COMMENTI
Autore: Filippo - scritto il 3/18/2008 11:37:04 PM
Ciao..

Senti per caso sai come detettare se un PPT e password protected e
1) o non aprirlo
2) aprirlo ma chiudere il "Password Request" window and creare una exception?

Saluti dalla California
Filippo

Autore: Peppe - scritto il 3/20/2008 9:13:00 PM
Ciao Filippo dalla California.. beato te ! :)
Purtroppo non ho mai avuto quel tipo di necessità. Secondo me ci dovrebbe essere il modo di controllare se il documento è protetto da password. Nel modello ad oggetti esposto da PowerPoint hai trovato niente ?

INSERISCI UN COMMENTO

Nome *
Indirizzo e-mail
(non verrà pubblicato)
Commento *