martedì 14 settembre 2010

Esportare un documento word 2010 in pdf tramite .Net 4 VB.Net e C#

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_esportare-un-file-docx-in-pdf-tramite-c-_959.aspx


Introduzione
In questo articolo, vedremo come convertire un file DOCX in formato PDF, utilizzando il linguaggio Visual Basic .Net versione 2010 e C# versione 4 (2010) del pacchetto Microsoft Office 2010.
Si fa presente che per esportare in formato PDF, dobbiamo aver scaricato dal sito Microsoft il componente aggiuntivo per i formati PDF scaricabile dal seguente sito http://www.microsoft.com/downloads/details.aspx?familyid=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en


Creazione del progetto.


Si crea un nuovo progetto di tipo Windows application, nella form che viene creata aggiungiamo un pulsante, in modo che tramite l’evento click del pulsante possiamo richiamare la funzione per la conversione in formato PDF.
Impostiamo la proprietà Name del pulsante in BtnConverti, mentre la proprietà text impostiamo il valore “Converti”.
Tramite il menu Progetto selezioniamo la voce “aggiungi riferimento”, nella finestra che viene aperta (figura 1) , selezioniamo il nome del componente denominato “Microsoft Word 14 object Library” , come mostrato in figura 1.



Figura 1



In questo modo abbiamo aggiunto nel nostro progetto un riferimento alla libreria di Microsoft Word 2010.


Stesura di codice
Passiamo in visualizzazione codice, aggiungiamo lo spazio dei nomi (namespace) per gestire le classi, enumerazioni e le interfacce di Microsoft Word 2010. Si fa notare che si è creato un alias, in modo che alcune classi non vadano in conflitto con la classe Form.
Qui di seguito si riporta il codice per lo spazio dei nomi.


VB.Net


Imports Microsoft.Office.Interop.Word




C#


using Microsoft.Office.Interop.Word;


using System.Windows.Forms;


using AppWord = Microsoft.Office.Interop.Word; //alias




Per utilizzare Word da .Net, dobbiamo creare due oggetti, uno per la gestione dell’applicazione Word, e quindi l’istanza di una classe di tipo application, e l’altro di tipo document per gestire il documento.
Qui di seguito, si riporta il codice completo per esportare il file Docx in formato PDF.


VB.Net


Dim wordApplication As New AppWord.Application()


Dim wordDocument As New Document()



'Creo i percorsi e nomi dei file docx e pdf


Dim NomeFileDocx As Object = "C:\FileDocx.docx"



Dim NomeFilePDF As String = "C:\varie\FilePDF.pdf"


'formato di esportazione


Dim FormatoExport As WdExportFormat = WdExportFormat.wdExportFormatPDF


Try


' valorizzo l'oggetto document con l'apertura del documento che voglio stampare


wordDocument = wordApplication.Documents.Open(NomeFileDocx)



'se non è null e quindi un oggetto valorizzato, effetto l'esportazione in formato PDF


If Not wordDocument Is Nothing Then


'Parametri


'1=nome file di esportazione, 2=formato, 3=aprire dopo l'esportazione 4=ottimizzato per la stampa 5= quale pagina stampare se tutto documento o altre modalità 6=da 7=a, 8= contenuto


wordDocument.ExportAsFixedFormat(NomeFilePDF, FormatoExport, False, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument, 0, 0, WdExportItem.wdExportDocumentContent, True, True, WdExportCreateBookmarks.wdExportCreateWordBookmarks, True, True, False)


End If



Catch ex As Exception


'errore nella fase di esportazione


MessageBox.Show("Si è verificato un errore: " + ex.Message)


Finally


'chiudo il documento e rilascio le risorse



If Not wordDocument Is Nothing Then


wordDocument.Close()


wordDocument = Nothing


End If



'chiudo l'applicazione word e rilascio le risorse


If Not wordApplication Is Nothing Then



wordApplication.Quit()


wordApplication = Nothing


End If




'libero la memoria


GC.Collect()


GC.WaitForPendingFinalizers()



GC.Collect()



GC.WaitForPendingFinalizers()



End Try



C#



AppWord.Application wordApplication = new AppWord.Application();


Document wordDocument = null;



//Creo i percorsi e nomi dei file docx e pdf


object NomeFileDocx = @"C:\FileDocx.docx";



string NomeFilePDF = @"C:\varie\FilePDF.pdf";


//formato di esportazione


WdExportFormat FormatoExport = WdExportFormat.wdExportFormatPDF;



try


{



// valorizzo l'oggetto document con l'apertura del documento che voglio stampare



wordDocument = wordApplication.Documents.Open(ref NomeFileDocx);




//se non è null e quindi un oggetto valorizzato, effetto l'esportazione in formato PDF


if (wordDocument != null)


{


//Parametri


//1=nome file di esportazione, 2=formato, 3=aprire dopo l'esportazione 4=ottimizzato per la stampa 5= quale pagina stampare se tutto documento o altre modalità 6=da 7=a, 8= contenuto


wordDocument.ExportAsFixedFormat(NomeFilePDF, FormatoExport, false, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument, 0, 0, WdExportItem.wdExportDocumentContent, true, true, WdExportCreateBookmarks.wdExportCreateWordBookmarks, true, true, false);



}



}



catch (Exception ex)


{



// errore nella fase di esportazione


MessageBox.Show("Si è verificato un errore: " + ex.Message);



}



finally


{



//chiudo il documento e rilascio le risorse



if (wordDocument != null)


{


wordDocument.Close();


wordDocument = null;


}



//chiudo l'applicazione word e rilascio le risorse


if (wordApplication != null)


{


wordApplication.Quit();


wordApplication = null;


}




//libero la memoria


GC.Collect();



GC.WaitForPendingFinalizers();



GC.Collect();



GC.WaitForPendingFinalizers();



}



}



Esaminiamo in dettaglio il codice appena illustrato.
Nelle prime righe, vengono creati due oggetti, uno di tipo application e l’altro di tipo documento.
Le variabili riportano i percorsi dei file, ed un enumeratore per il tipo di formato.
Tramite il metodo Open dell’ogggetto di tipo application, si istanza l’oggetto di tipo documento con il documento aperto, questo nuovo oggetto ci permetterà di esportare il documento creato in formato pdf, tramite il metodo “ExportAsFixedFormat”.
Il metodo richiede diversi parametri, quali il percorso e nome del file pdf, il formato se aprire il documento dopo aver effettuato l’esportazione, ottimizzato per la stampa, quale parte del documento stampare, se tutto o una determinata parte, le eventuali pagine ( in questo caso sono due i parametri e nel nostro esempio sono stati indicati 0, in questo modo esporta tutto il documento), il contenuto, se inserire i segnalibri, font e gli eventuali tag del documento.
Terminata l’esportazione, nella parte finally, si verificano che gli oggetti document ed application siano valorizzati, in caso affermativo, si chiudono e si libera la memoria.



Conclusioni
L’articolo, ha voluto fornite un valido spunto su come utilizzare nelle applicazioni Windows di .Net 4 il pacchetto Microsoft Office 2010, sia per il linguaggio di programmazione Visual Basic e sia per C#.
In questo esempio si è visto come convertire un documento word in PDF, sempre se sul pc è installato il componete per l’esportazione.

Nessun commento: