Example #1
0
        private void ConvertFolder(IReaderContract reader, IWriterContract writer, string inputParam, string outputParam)
        {
            List <byte[]> imageBytes = new List <byte[]>();
            List <string> imageNames = new List <string>();

            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("BookFileConverter.ConvertFolder");
            }
            try
            {
                string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.Converting", "Converting {0}...");
                Progress(string.Format(msg, inputParam));

                string outputFolder, outputFile;

                // one single output folder or same as input
                if (!string.IsNullOrEmpty(Settings.DestinationPath) && Directory.Exists(Settings.DestinationPath))
                {
                    outputFolder = Settings.DestinationPath;
                }
                else
                {
                    outputFolder = outputParam;
                }

                outputFile = inputParam.Split(new char[] { '\\' }).Last();

                bool result = true;

                //only case we need folder input in memory, else we write directly
                if (Settings.OutputType.Type == DocumentType.XPS)
                {
                    result = reader.Read(inputParam, null, imageBytes, imageNames, Settings, Progress);
                }

                if (result)
                {
                    writer.Write(outputFile, inputParam, outputFolder, imageBytes, imageNames, Settings, Progress);
                }
            }
            catch (Exception err)
            {
                Settings.Result = false;
                LogHelper.Manage("BookFileConverter.ConvertFolder", err);
            }
            finally
            {
                if (imageBytes != null)
                {
                    imageBytes.Clear();
                }
                if (imageNames != null)
                {
                    imageNames.Clear();
                }

                LogHelper.End("BookFileConverter.ConvertFolder");
            }
        }
Example #2
0
        private void ConvertLoop(IReaderContract reader, IWriterContract writer, string OutputFolder, DirectoryInfo directory, string fileExtension)
        {
            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("BookFileConverter.ConvertLoop");
            }
            try
            {
                if (CancelPending())
                {
                    return;
                }

                foreach (FileInfo file in directory.GetFiles(fileExtension))
                {
                    if (CancelPending())
                    {
                        return;
                    }
                    ConvertFile(reader, writer, file.FullName, OutputFolder);
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("BookFileConverter.ConvertLoop", err);
            }
            finally
            {
                LogHelper.End("BookFileConverter.ConvertLoop");
            }
        }
Example #3
0
        /// <summary>
        /// convert one file to an output folder regarding the settings mode
        /// </summary>
        /// <param name="inputfile"></param>
        /// <param name="outputFolder"></param>
        private void ConvertFile(IReaderContract reader, IWriterContract writer, string inputFile, string outputParam)
        {
            List <byte[]> imageBytes = new List <byte[]>();
            List <string> imageNames = new List <string>();

            try
            {
                string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.Converting", "Converting {0}...");
                Progress(string.Format(msg, inputFile));

                string outputFolder, tmpFolderForReader = null;

                // one single output folder or same as input
                if (!string.IsNullOrEmpty(Settings.DestinationPath) && Directory.Exists(Settings.DestinationPath))
                {
                    outputFolder = Settings.DestinationPath;
                }
                else
                {
                    outputFolder = outputParam;
                }

                // particular case to win time
                if (Settings.InputType.Type == DocumentType.ZIPBased || Settings.InputType.Type == DocumentType.RARBased)
                {
                    if (Settings.OutputType.Type == DocumentType.ImageFile)                     //direct in ouput
                    {
                        tmpFolderForReader = outputFolder;
                    }

                    if (Settings.OutputType.Type == DocumentType.ZIPBased)                     //use temp folder for compress
                    {
                        tmpFolderForReader = Path.Combine(DirectoryHelper.TempPath, Path.GetFileNameWithoutExtension(inputFile));
                    }
                }

                if (reader.Read(inputFile, tmpFolderForReader, imageBytes, imageNames, Settings, Progress))
                {
                    writer.Write(Path.GetFileNameWithoutExtension(inputFile), null, outputFolder, imageBytes, imageNames, Settings, Progress);
                }
            }
            catch (Exception error)
            {
                LogHelper.Manage("BookFileConverter:ConvertFile", error);
                Settings.Result = false;
            }
            finally
            {
                if (imageBytes != null)
                {
                    imageBytes.Clear();
                }
                if (imageNames != null)
                {
                    imageNames.Clear();
                }
            }
        }
Example #4
0
        /// <summary>
        /// convert pdf files regarding the parameters gived to the thread
        /// </summary>
        public void Convert()
        {
            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("BookFileConverter.Convert");
            }
            try
            {
                Progress(CultureManager.Instance.GetLocalization("ByCode", "Convert.Start", "Starting conversion..."));

                //get the contracts
                IReaderContract reader = (IReaderContract)Activator.CreateInstance(Settings.InputType.ConversionReader);
                IWriterContract writer = (IWriterContract)Activator.CreateInstance(Settings.OutputType.ConversionWriter);

                //create the result file list
                if (Settings.ResfreshLibrary)
                {
                    Settings.ResultFiles = new List <string>();
                }

                // check output path
                if (!string.IsNullOrEmpty(Settings.DestinationPath))
                {
                    DirectoryHelper.Check(Settings.DestinationPath);
                }

                // just one file !
                if (!string.IsNullOrEmpty(Settings.InputFile) && File.Exists(Settings.InputFile))
                {
                    ConvertFile(reader, writer, Settings.InputFile, Path.GetDirectoryName(Settings.InputFile));
                }

                // folder input
                if (!string.IsNullOrEmpty(Settings.InputPath) && Directory.Exists(Settings.InputPath))
                {
                    if (Settings.InputType.Type == DocumentType.ImageFile)
                    {
                        ConvertFolder(reader, writer, Settings.InputPath, Settings.InputPath);//image files
                    }
                    else
                    {
                        ConvertDirectoryRecursively(reader, writer, Settings.InputPath);// or folders
                    }
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("BookFileConverter.Convert", err);
                Settings.Result = false;
            }
            finally
            {
                LogHelper.End("BookFileConverter.Convert");
                Progress("Conversion finished...");
            }
        }
Example #5
0
        /// <summary>
        /// Convert a folder recursively regarding the settings
        /// </summary>
        /// <param name="inputFolder"></param>
        private void ConvertDirectoryRecursively(IReaderContract reader, IWriterContract writer, string inputFolder)
        {
            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("BookFileConverter.ConvertDirectoryRecursively");
            }
            try
            {
                string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ParsingFolder", "Parsing folder {0}...");
                Progress(string.Format(msg, inputFolder));

                string OutputFolder;

                // one single output folder
                if (!string.IsNullOrEmpty(Settings.DestinationPath) && Directory.Exists(Settings.DestinationPath))
                {
                    OutputFolder = Settings.DestinationPath;
                }
                else
                {
                    OutputFolder = inputFolder;
                }

                DirectoryInfo directory = new DirectoryInfo(inputFolder);

                if (Settings.InputType.Type == DocumentType.PDF)
                {
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.pdf");
                }

                if (Settings.InputType.Type == DocumentType.ZIPBased)
                {
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.cbz");
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.zip");
                }

                if (Settings.InputType.Type == DocumentType.RARBased)
                {
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.cbr");
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.rar");
                }

                if (Settings.InputType.Type == DocumentType.XPS)
                {
                    ConvertLoop(reader, writer, OutputFolder, directory, "*.xps");
                }

                foreach (DirectoryInfo dir in directory.GetDirectories("*", SearchOption.TopDirectoryOnly))
                {
                    if (CancelPending())
                    {
                        return;
                    }
                    ConvertDirectoryRecursively(reader, writer, dir.FullName);
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("BookFileConverter.ConvertDirectoryRecursively", err);
                Settings.Result = false;
            }
            finally
            {
                LogHelper.End("BookFileConverter.ConvertDirectoryRecursively");
            }
        }