public void ConvertToPdf(FileInfo file)
        {
            string ext = Path.GetExtension(file.Extension);

            if (Convert.ToString(ext).ToUpper() == ".MSG")
            {
                string fileprefix = GetFilenamePrefix(file);
                this.ExtractFilesFromOutlookMsg(file.FullName, fileprefix);
            }
            else if (Convert.ToString(ext).ToUpper() == ".PDF" ||
                     Convert.ToString(ext).ToUpper() == ".JPG" ||
                     Convert.ToString(ext).ToUpper() == ".JPEG" ||
                     Convert.ToString(ext).ToUpper() == ".PNG" ||
                     Convert.ToString(ext).ToUpper() == ".GIF" ||
                     Convert.ToString(ext).ToUpper() == ".TIF" ||
                     Convert.ToString(ext).ToUpper() == ".BMP")
            {
                string fileprefix = GetFilenamePrefix(file);
                diTempoutput = new DirectoryInfo(ConfigHelper.GetConfigSetting("TempFile") + fileprefix + @"\Output\");
                if (!Directory.Exists(ConfigHelper.GetConfigSetting("TempFile") + fileprefix + @"\Output"))
                {
                    diTempoutput = CreateDirectorywithfolder("TempFile", fileprefix, FolderType.folderwithoutput);
                }

                File.Copy(file.FullName, diTempoutput.FullName + @"\" + file.Name);
            }
            else
            {
                Byte[]         bytes          = File.ReadAllBytes(file.FullName);
                String         filebytestring = Convert.ToBase64String(bytes);
                CloudConverter cloudConverter = new CloudConverter();
                cloudConverter.file         = filebytestring;
                cloudConverter.apikey       = ConfigHelper.GetConfigSetting("apikey");
                cloudConverter.inputformat  = Convert.ToString(ext).Replace(".", "");
                cloudConverter.outputformat = "pdf";
                cloudConverter.input        = ConfigHelper.GetConfigSetting("input");
                cloudConverter.filename     = file.Name;
                cloudConverter.timeout      = "30000";
                cloudConverter.wait         = ConfigHelper.GetConfigSetting("wait");
                cloudConverter.download     = "inline";
                cloudConverter.save         = "true";

                ConvertFromDoc(cloudConverter, file);
            }
        }
        public async Task ConvertFromDoc(CloudConverter cloudConverter, FileInfo fileinfo)
        {
            try
            {
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri(ConfigHelper.GetConfigSetting("BaseAddress"));
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www.form-urlencoded"));
                    StringContent content = new StringContent(JsonConvert.SerializeObject(cloudConverter), Encoding.UTF8, "application/json");
                    Debug.WriteLine(fileinfo.Name + " is start to converting.");
                    Console.WriteLine(fileinfo.Name + " is start to converting.");
                    HttpResponseMessage response = client.PostAsync(client.BaseAddress, content).Result;
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        System.Uri url        = response.RequestMessage.RequestUri;
                        string     fileprefix = GetFilenamePrefix(fileinfo);
                        if (!Directory.Exists(ConfigHelper.GetConfigSetting("TempFile") + fileprefix))
                        {
                            DirectoryInfo diTemp = CreateDirectorywithfolder("TempFile", fileprefix, FolderType.folderwithprefix);
                            diTempoutput = CreateDirectorywithfolder("TempFile", fileprefix, FolderType.folderwithoutput);
                        }
                        else if (!Directory.Exists(ConfigHelper.GetConfigSetting("TempFile") + fileprefix + @"\Output"))
                        {
                            diTempoutput = CreateDirectorywithfolder("TempFile", fileprefix, FolderType.folderwithoutput);
                        }
                        string fileName = ConfigHelper.GetConfigSetting("TempFile") + fileprefix + @"\Output\"
                                          + Path.GetFileNameWithoutExtension(cloudConverter.filename) + ".pdf";
                        string[] InputFiles = Directory.GetFiles(ConfigHelper.GetConfigSetting("InputFile"));

                        foreach (string file in InputFiles)
                        {
                            if (file.Contains("inprogress"))
                            {
                                File.Delete(file);
                                break;
                            }
                        }
                        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                        using (WebResponse responsestream = (HttpWebResponse)request.GetResponse())
                        {
                            using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                            {
                                byte[] bytes = ReadFully(responsestream.GetResponseStream());
                                stream.Write(bytes, 0, bytes.Length);
                            }
                        }

                        Console.WriteLine(fileinfo.Name + " is converted.");
                    }
                    else
                    {
                        Console.WriteLine(fileinfo.Name + " is fail to convert.");
                        string fileprefix = GetFilenamePrefix(fileinfo);
                        int    Count      = GetErrorCount(fileprefix);
                        string filename   = cloudConverter.filename;

                        filename = fileprefix + ".inprogress." + Count + ".txt";
                        if (!File.Exists(ConfigHelper.GetConfigSetting("InputFile") + filename))
                        {
                            int Counter = Count + 1;
                            filename = fileprefix + ".inprogress." + Counter + ".txt";
                            using (var myFile = File.Create(ConfigHelper.GetConfigSetting("InputFile") + filename))
                            {
                                // interact with myFile here, it will be disposed automatically
                            }
                        }
                        else
                        {
                            Count = Count + 1;
                            if (Count > 3)
                            {
                                string[] Templfiles = Directory.GetFiles(ConfigHelper.GetConfigSetting("TempFile") + fileprefix);
                                foreach (string file in Templfiles)
                                {
                                    FileInfo Processedfile = new FileInfo(file);
                                    File.Move(file, ConfigHelper.GetConfigSetting("ProcessErrorFile") + Processedfile.Name);
                                }

                                //Getting Inbound Directory to coonvert file from Inbound
                                DirectoryInfo InboundDirectory    = new DirectoryInfo(ConfigHelper.GetConfigSetting("InputFile"));
                                List <string> InputFilesToProcess = GetDirectoryFiles(InboundDirectory, DirectoryFileType.InboundFileWithPrefix, fileprefix);
                                foreach (string item in InputFilesToProcess)
                                {
                                    FileInfo Processedfile = new FileInfo(item);
                                    File.Delete(item);
                                }
                            }
                            File.Delete(ConfigHelper.GetConfigSetting("InputFile") + fileprefix + ".inprogress." + (Count - 1) + ".txt");
                            using (var myFile = File.Create(ConfigHelper.GetConfigSetting("InputFile") + fileprefix + ".inprogress." + (Count) + ".txt"))
                            {
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppDomain currentDomain                     = AppDomain.CurrentDomain;
                UnhandledExceptionEventArgs arges           = new UnhandledExceptionEventArgs(ex, false);
                ExceptionHelper             exceptionHelper = new ExceptionHelper();
                ExceptionHelper.LogWebException(null, arges);
            }
        }