How to convert Word, Excel, PowerPoint files to PDF files in C# and .NET
Complete code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            convDir.DataSource = Enum.GetNames(typeof(SautinSoft.UseOffice.eDirection));
            convDir.DataBind();
        }
        resultMessage.Text = "";
        fileMessage.Text = "";
    }
    protected void convDir_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (uploadedDocument.PostedFile.FileName.Length == 0)
        {
            resultMessage.Text = "Please select an input document at first!";
            return;
        }
    }
    protected void convert_Click(object sender, EventArgs e)
    {
        if (uploadedDocument.PostedFile.FileName.Length == 0)
        {
            resultMessage.Text = "Please select an input document at first!";
            return;
        }
        // 1. Prepare a directory for converting and storing temporary files
        // Remove all files in this directory
        string workDirectory = @"/converted/";
        string workPath = Server.MapPath(".") + workDirectory;
        Directory.CreateDirectory(workPath);
        string[] allFiles = Directory.GetFiles(workPath, "*.*");
        foreach (string file in allFiles)
            File.Delete(file);
        
        // 2. Save a document from FileUpload control to a temporary file: "Hour-Min-Sec-MSec.xxx", e.g. "9-34-12-807.doc".
        // Because UseOffice .Net can convert only documents as files
        string fileName = String.Format("{0: h-m-s-f}", DateTime.Now);
        string tempFilePath = Path.Combine(workPath, fileName + Path.GetExtension(uploadedDocument.PostedFile.FileName));
        File.WriteAllBytes(tempFilePath, uploadedDocument.FileBytes);
        resultMessage.Text = "Converting ...";
        // 3. Get a converting direction which user has just choosed
        // Get a file extension for a resulting file.
        string ext = ".rtf";
        //get extension
        int pos = convDir.Text.LastIndexOf('_');
        pos++;
        ext = (convDir.Text.Substring(pos, convDir.Text.Length - pos)).ToLower();
        if (ext.CompareTo("text") == 0)
        {
            ext = "txt";
        }
        ext = "." + ext;
        // 4. Create a path for a resulted file.
        string resultPath = Path.Combine(workPath, Path.ChangeExtension(uploadedDocument.FileName, ext));
        
        // 5. Launch UseOffice .Net and start converting
        SautinSoft.UseOffice u = new SautinSoft.UseOffice();
        //only Word										   
        if (convDir.Text == "DOC_to_RTF" || convDir.Text == "DOCX_to_RTF" || convDir.Text == "DOC_to_HTML" || convDir.Text == "DOCX_to_HTML" || convDir.Text == "DOC_to_Text" || convDir.Text == "HTML_to_DOC" || convDir.Text == "HTML_to_RTF" || convDir.Text == "HTML_to_Text" || convDir.Text == "RTF_to_Text" || convDir.Text == "RTF_to_HTML" || convDir.Text == "RTF_to_DOC" || convDir.Text == "DOC_to_PDF" || convDir.Text == "DOCX_to_PDF" || convDir.Text == "RTF_to_PDF")
        {
            u.InitWord();
        }
        //only Excel
        if (convDir.Text == "XLS_to_HTML" || convDir.Text == "XLS_to_XML" || convDir.Text == "XLS_to_CSV" || convDir.Text == "XLS_to_Text")
        {
            u.InitExcel();
        }
        //Word + Excel
        if (convDir.Text == "XLS_to_RTF" || convDir.Text == "XLS_to_PDF" || convDir.Text == "XLSX_to_RTF" || convDir.Text == "XLSX_to_PDF")
        {
            u.InitWord();
            u.InitExcel();
        }
        //only PowerPoint
        if (convDir.Text == "PPT_to_PDF" || convDir.Text == "PPT_to_HTML" || convDir.Text == "PPT_to_RTF" || convDir.Text == "PPTX_to_PDF")
        {
            u.InitPowerPoint();
        }
        SautinSoft.UseOffice.eDirection convDirection = (SautinSoft.UseOffice.eDirection)Enum.Parse(typeof(SautinSoft.UseOffice.eDirection), convDir.SelectedValue);
        if (File.Exists(resultPath))
        {
            File.Delete(resultPath);
        }
        // 6. Convert a temporary file to a desired result
        int result = u.ConvertFile(tempFilePath, resultPath, convDirection);        
        
        switch (result)
        {
                // 7. Show a resulted file as a link
            case 0: resultMessage.Text = "Converting successfully!";
                string href = Request.UrlReferrer.AbsoluteUri;
                href = href.Remove(href.LastIndexOf("/"));                
                href+= workDirectory + Path.GetFileName(resultPath);
                fileMessage.NavigateUrl = href;
                fileMessage.Target = "_blank";
                fileMessage.Text = Path.GetFileName(resultPath);
                break;
            case 1: resultMessage.Text = "Can't open input file."; break;
            case 2: resultMessage.Text = "Can't create output file."; break;
            case 3: resultMessage.Text = "Converting error!"; break;
            default: break;
        }
        
        //u.KillProcesses("WINWORD");
        //u.KillProcesses("EXCEL");
        //u.KillProcesses("POWERPNT");
        u.CloseOffice();
        //Remove temporary file
        File.Delete(tempFilePath);
    }    
}
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.IO
Imports System.Drawing
Partial Public Class _Default
	Inherits System.Web.UI.Page
	Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
		If Not IsPostBack Then
			convDir.DataSource = System.Enum.GetNames(GetType(SautinSoft.UseOffice.eDirection))
			convDir.DataBind()
		End If
		resultMessage.Text = ""
		fileMessage.Text = ""
	End Sub
	Protected Sub convDir_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
		If uploadedDocument.PostedFile.FileName.Length = 0 Then
			resultMessage.Text = "Please select an input document at first!"
			Return
		End If
	End Sub
	Protected Sub convert_Click(ByVal sender As Object, ByVal e As EventArgs)
		If uploadedDocument.PostedFile.FileName.Length = 0 Then
			resultMessage.Text = "Please select an input document at first!"
			Return
		End If
		' 1. Prepare a directory for converting and storing temporary files
		' Remove all files in this directory
		Dim workDirectory As String = "/converted/"
		Dim workPath As String = Server.MapPath(".") & workDirectory
		Directory.CreateDirectory(workPath)
		Dim allFiles() As String = Directory.GetFiles(workPath, "*.*")
		For Each file As String In allFiles
			System.IO.File.Delete(file)
		Next file
		' 2. Save a document from FileUpload control to a temporary file: "Hour-Min-Sec-MSec.xxx", e.g. "9-34-12-807.doc".
		' Because UseOffice .Net can convert only documents as files
		Dim fileName As String = String.Format("{0: h-m-s-f}", DateTime.Now)
		Dim tempFilePath As String = Path.Combine(workPath, fileName & Path.GetExtension(uploadedDocument.PostedFile.FileName))
		File.WriteAllBytes(tempFilePath, uploadedDocument.FileBytes)
		resultMessage.Text = "Converting ..."
		' 3. Get a converting direction which user has just choosed
		' Get a file extension for a resulting file.
		Dim ext As String = ".rtf"
		'get extension
		Dim pos As Integer = convDir.Text.LastIndexOf("_"c)
		pos += 1
		ext = (convDir.Text.Substring(pos, convDir.Text.Length - pos)).ToLower()
		If ext.CompareTo("text") = 0 Then
			ext = "txt"
		End If
		ext = "." & ext
		' 4. Create a path for a resulted file.
		Dim resultPath As String = Path.Combine(workPath, Path.ChangeExtension(uploadedDocument.FileName, ext))
		' 5. Launch UseOffice .Net and start converting
		Dim u As New SautinSoft.UseOffice()
		'only Word										   
		If convDir.Text = "DOC_to_RTF" OrElse convDir.Text = "DOCX_to_RTF" OrElse convDir.Text = "DOC_to_HTML" OrElse convDir.Text = "DOCX_to_HTML" OrElse convDir.Text = "DOC_to_Text" OrElse convDir.Text = "HTML_to_DOC" OrElse convDir.Text = "HTML_to_RTF" OrElse convDir.Text = "HTML_to_Text" OrElse convDir.Text = "RTF_to_Text" OrElse convDir.Text = "RTF_to_HTML" OrElse convDir.Text = "RTF_to_DOC" OrElse convDir.Text = "DOC_to_PDF" OrElse convDir.Text = "DOCX_to_PDF" OrElse convDir.Text = "RTF_to_PDF" Then
			u.InitWord()
		End If
		'only Excel
		If convDir.Text = "XLS_to_HTML" OrElse convDir.Text = "XLS_to_XML" OrElse convDir.Text = "XLS_to_CSV" OrElse convDir.Text = "XLS_to_Text" Then
			u.InitExcel()
		End If
		'Word + Excel
		If convDir.Text = "XLS_to_RTF" OrElse convDir.Text = "XLS_to_PDF" OrElse convDir.Text = "XLSX_to_RTF" OrElse convDir.Text = "XLSX_to_PDF" Then
			u.InitWord()
			u.InitExcel()
		End If
		'only PowerPoint
		If convDir.Text = "PPT_to_PDF" OrElse convDir.Text = "PPT_to_HTML" OrElse convDir.Text = "PPT_to_RTF" OrElse convDir.Text = "PPTX_to_PDF" Then
			u.InitPowerPoint()
		End If
		Dim convDirection As SautinSoft.UseOffice.eDirection = CType(System.Enum.Parse(GetType(SautinSoft.UseOffice.eDirection), convDir.SelectedValue), SautinSoft.UseOffice.eDirection)
		If File.Exists(resultPath) Then
			File.Delete(resultPath)
		End If
		' 6. Convert a temporary file to a desired result
		Dim result As Integer = u.ConvertFile(tempFilePath, resultPath, convDirection)
		Select Case result
				' 7. Show a resulted file as a link
			Case 0
				resultMessage.Text = "Converting successfully!"
				Dim href As String = Request.UrlReferrer.AbsoluteUri
				href = href.Remove(href.LastIndexOf("/"))
				href &= workDirectory & Path.GetFileName(resultPath)
				fileMessage.NavigateUrl = href
				fileMessage.Target = "_blank"
				fileMessage.Text = Path.GetFileName(resultPath)
			Case 1
				resultMessage.Text = "Can't open input file."
			Case 2
				resultMessage.Text = "Can't create output file."
			Case 3
				resultMessage.Text = "Converting error!"
			Case Else
		End Select
		'u.KillProcesses("WINWORD");
		'u.KillProcesses("EXCEL");
		'u.KillProcesses("POWERPNT");
		u.CloseOffice()
		'Remove temporary file
		File.Delete(tempFilePath)
	End Sub
End Class
If you need a new code example or have a question: email us at support@sautinsoft.com or ask at Online Chat (right-bottom corner of this page) or use the Form below: