public bool MoveFile(string fileName, string target)
        {
            string sourceFile = Path.Combine(GetConstants.Home(), GetConstants.Directory("indir"), fileName);
            string targetFile = Path.Combine(GetConstants.Home(), GetConstants.Directory(target), fileName);

            try
            {
                File.Move(sourceFile, targetFile);
            }
            catch
            { return(false); }
            return(true);
        }
        private void CreateTxtFromPDF(string filename)
        {
            //ScanPageStatus scanPageStatus = new ScanPageStatus();

            string tesseractPath = Path.Combine(AssemblyDirectory(), GetConstants.TesseractBinaries());
            string tesseractData = Path.Combine(AssemblyDirectory(), GetConstants.TesseractData());

            try {
                using (OCRProcessor processor = new OCRProcessor(tesseractPath))
                {
                    //Stream pdfStream2 = filename; // FileUpload1.PostedFile.InputStream;

                    // Read in PDF image file, and convert to searchable TXT pdf file
                    PdfLoadedDocument IDoc = new PdfLoadedDocument(filename);
                    processor.Settings.Language    = Languages.English;
                    processor.Settings.Performance = Performance.Slow;
                    // var zz = processor.Settings.Performance;
                    //string tessdata = tesseractPath + @"\\Tessdata\\";
                    processor.PerformOCR(IDoc, tesseractData);
                    string outFileName = Path.GetFileName(filename) + "_OCR" + Path.GetExtension(filename);
                    string homePath    = Path.GetDirectoryName(Path.GetDirectoryName(filename));
                    string savePath    = Path.Combine(homePath, GetConstants.Directory("out"), outFileName);

                    // If file exists - delete it first.
                    if (File.Exists(savePath))
                    {
                        File.SetAttributes(savePath, FileAttributes.Normal);
                        File.Delete(savePath);
                    }

                    IDoc.Save(savePath);
                    IDoc.Close(true);
                    IDoc.Dispose();

                    scanPageStatus.scannedFileName = savePath;
                    scanPageStatus.rc            = 0;
                    scanPageStatus.statusMessage = String.Format("File {0} scanned and saved to {1}", filename, scanPageStatus.scannedFileName);
                }
            }
            catch (Exception ex)
            {
                scanPageStatus.scannedFileName = "";
                scanPageStatus.statusMessage   = String.Format("Error {0} when running OCR on source file {1}", ex, filename);
                scanPageStatus.rc = -1;
            }

            // return scanPageStatus;
        }
        //private string inDir = GetConstants.Directory("indir");
        //private string processedDir = GetConstants.Directory("processed");
        //private string errorDir = GetConstants.Directory("error");
        //private string home = GetConstants.Home();

        //public const string inDir = "in";
        //public const string processedDir = "processed";
        //public const string errorDir = "error";

        public FileStatus CheckNextFile()
        {
            FileStatus fileStatus = new FileStatus();

            //FileProcessor tools = new FileProcessor();
            //string targetPath = Path.Combine(home, inDir);
            string targetPath = Path.Combine(GetConstants.Home(), GetConstants.Directory("indir"));

            if (Directory.Exists(targetPath))
            {
                fileStatus.fileName = GetNextFile(targetPath);
                if (fileStatus.fileName.Length == 0)
                {
                    fileStatus.rc            = 1;
                    fileStatus.statusMessage = String.Format("No more files in source directory {0}", targetPath);
                }
                else
                {
                    fileStatus.rc = CheckFile(fileStatus.fileName);
                    if (fileStatus.rc < 0)
                    {
                        if (MoveFile(Path.GetFileName(fileStatus.fileName), GetConstants.Directory("indir"), GetConstants.Directory("error")))
                        {
                            fileStatus.statusMessage = String.Format("Soure file {0} invalid. Moved to error directory", Path.GetFileName(fileStatus.fileName));
                        }
                        else
                        {
                            fileStatus.statusMessage = String.Format("Soure file {0} invalid; error moving to error directory", Path.GetFileName(fileStatus.fileName));
                        }
                    }
                }
            }
            else
            {
                fileStatus.statusMessage = String.Format("Invalid source directory {0}", targetPath);
                fileStatus.rc            = -10;
            }
            return(fileStatus);
        }