/// <summary> /// Constructor /// </summary> /// <param name="worker"></param> /// <param name="e"></param> public BookFileConverter(BackgroundWorker worker, DoWorkEventArgs e) { Worker = worker; Event = e; Settings = (ContractParameters)e.Argument; }
public void Write(string outputFileName, string inputFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("ImageFileWriter.Write"); } try { for (int i = 0; i < imageBytes.Count; ++i) { using (MemoryStream ms = new MemoryStream(imageBytes[i])) { BitmapImage myImage = new BitmapImage(); myImage.BeginInit(); myImage.StreamSource = ms; myImage.EndInit(); using (FileStream fs = new FileStream(Path.Combine(outputFolder, outputFileName + "_" + imageNames[i]), FileMode.Create)) { JpegBitmapEncoder encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(myImage)); encoder.Save(fs); } } } string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageSaved", "{0} images saved..."); progress(string.Format(msg, imageBytes.Count)); } catch (Exception err) { LogHelper.Manage("ImageFileWriter:Write", err); settings.Result = false; } finally { LogHelper.End("ImageFileWriter.Write"); } }
internal string CompressFolder(string outputFileName, string inputFolder, string outputFolder, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("ZIPWriter.CompressFolder"); } try { // move up from one directory if same as source in case of files if (string.IsNullOrEmpty(settings.DestinationPath) && settings.InputType.Type == DocumentType.ImageFile) { outputFolder = Directory.GetParent(outputFolder).FullName; } string file_out = Path.Combine(outputFolder, outputFileName + ".cbz"); if (File.Exists(file_out)) { File.Delete(file_out); } int iResult = 0; if (!ZipHelper.Instance.CompressFolder(file_out, inputFolder, out iResult)) { settings.Result = false; } else { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageZipped", "{0} images zipped..."); progress(string.Format(msg, iResult)); } return(file_out); } catch (Exception err) { LogHelper.Manage("ZIPWriter.CompressFolder", err); settings.Result = false; return(string.Empty); } finally { LogHelper.End("ZIPWriter.CompressFolder"); } }
public void Write(string outputFileName, string inputFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("ZIPWriter.Write"); } try { string file_out; // in this case, just zip the folder in shortFileName if (!string.IsNullOrEmpty(inputFolder)) { file_out = CompressFolder(outputFileName, inputFolder, outputFolder, settings, progress); // temp folders if (inputFolder.Contains(DirectoryHelper.TempPath)) { Directory.Delete(inputFolder); } } else // write the men to temp folder { string tempFolder = Path.Combine(DirectoryHelper.TempPath, outputFileName); DirectoryHelper.Check(tempFolder); //first write in temp folder new ImageFileWriter().Write(outputFileName, inputFolder, tempFolder, imageBytes, imageNames, settings, progress); file_out = CompressFolder(outputFileName, tempFolder, outputFolder, settings, progress); Directory.Delete(tempFolder, true); } if (settings.ResfreshLibrary) { settings.ResultFiles.Add(file_out); } } catch (Exception err) { LogHelper.Manage("ZIPWriter.Write", err); settings.Result = false; } finally { LogHelper.End("ZIPWriter.Write"); } }
public bool Read(string filePath, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("XPSImageReader.Read"); } try { XpsDocument xpsDocument = null; // read the document xpsDocument = new XpsDocument(filePath, FileAccess.Read, CompressionOption.NotCompressed); // IXpsFixedDocumentSequenceReader fixedDocSeqReader = xpsDocument.FixedDocumentSequenceReader; ICollection <IXpsFixedDocumentReader> fixedDocuments = fixedDocSeqReader.FixedDocuments; IEnumerator <IXpsFixedDocumentReader> enumerator = fixedDocuments.GetEnumerator(); enumerator.MoveNext(); ICollection <IXpsFixedPageReader> fixedPages = enumerator.Current.FixedPages; string imageFileName = Path.GetFileNameWithoutExtension(filePath); int i = 0; foreach (IXpsFixedPageReader fixedPageReader in fixedPages) { try { ICollection <XpsImage> list = fixedPageReader.Images; if (list.Count == 1) { XpsImage img = list.First(); if (img != null) { using (Stream xpsThumbStream = img.GetStream()) { byte[] buf = new byte[xpsThumbStream.Length]; xpsThumbStream.Read(buf, 0, buf.Length); imageBytes.Add(buf); imageNames.Add(imageFileName + "_" + i + ".jpg"); } } } i++; } catch (System.InvalidOperationException) { } } xpsDocument.Close(); string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageExtracted", "{0} images extracted..."); progress(string.Format(msg, imageBytes.Count)); } catch (Exception err) { LogHelper.Manage("XPSImageReader.Read", err); settings.Result = false; return(false); } finally { LogHelper.End("XPSImageReader.Read"); } return(true); }
public bool Read(string inputFileorFolder, string tempFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { SevenZipExtractor temp = null; if (LogHelper.CanDebug()) { LogHelper.Begin("RARImageReader.Read"); } try { temp = ZipHelper.Instance.GetExtractor(inputFileorFolder); //direct extract if (!string.IsNullOrEmpty(tempFolder)) { DirectoryHelper.Check(tempFolder); temp.PreserveDirectoryStructure = false; temp.ExtractArchive(tempFolder); if (progress != null) { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageExtracted", "{0} images extracted..."); progress(string.Format(msg, temp.ArchiveFileData.Count)); } CheckFileNames(tempFolder); } else //to memory { foreach (ArchiveFileInfo fil in temp.ArchiveFileData) { if (!fil.IsDirectory && DocumentFactory.Instance.ImageExtension.Contains(Path.GetExtension(fil.FileName).ToUpper())) { using (MemoryStream stream = new MemoryStream()) { temp.ExtractFile(fil.FileName, stream); imageBytes.Add(stream.GetBuffer()); imageNames.Add(Path.GetFileName(fil.FileName)); } } } } } catch (Exception err) { LogHelper.Manage("RARImageReader.Read", err); if (settings != null) { settings.Result = false; } return(false); } finally { ZipHelper.Instance.ReleaseExtractor(temp); LogHelper.End("RARImageReader.Read"); } return(true); }
public bool Read(string inputFileorFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { PdfReader reader = null; PDFImageListener listener = null; try { reader = new PdfReader(inputFileorFolder); PdfReaderContentParser parser = new PdfReaderContentParser(reader); listener = new PDFImageListener(); for (int i = 1; i <= reader.NumberOfPages; i++) { listener.PageIndex = i; parser.ProcessContent(i, listener); } if (settings.CheckResult && reader.NumberOfPages != listener.ImageNames.Count) { if (settings.JoinImages) { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingKO", "Extracting {0} : {1} images for {2} pages - Try to merge !"); progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages)); ImageJoiner cp = new ImageJoiner(); cp.Merge(listener.ImageBytes, listener.ImageNames); msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageMerge", "Merge to {0} new images..."); progress(string.Format(msg, cp.NewImageNames.Count)); imageBytes.AddRange(cp.NewImageBytes); imageNames.AddRange(cp.NewImageNames); } else { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageError", "Error extracting {0} : {1} images for {2} pages !!"); progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages)); throw new Exception("PDF check error"); } } else { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingOK", "Extracting {0} images in {1} pages"); progress(string.Format(msg, listener.ImageNames.Count, reader.NumberOfPages)); imageBytes.AddRange(listener.ImageBytes); imageNames.AddRange(listener.ImageNames); msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageExtracted", "{0} images extracted..."); progress(string.Format(msg, listener.ImageBytes.Count)); } } catch (Exception err) { LogHelper.Manage("PDFImageReader:Read", err); settings.Result = false; listener.ImageNames.Clear(); listener.ImageBytes.Clear(); return(false); } finally { if (reader != null) { reader.Close(); } } return(true); }
public void Write(string inputFileorFolder, string inputFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("XPSImageWriter.Write"); } try { string file_out = Path.Combine(outputFolder, inputFileorFolder) + ".xps"; if (File.Exists(file_out)) { File.Delete(file_out); } if (new XpsHelper().WriteDocument(imageBytes, file_out)) { string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.Output", "Output file written !"); progress(msg); } if (settings.ResfreshLibrary) { settings.ResultFiles.Add(file_out); } } catch (Exception err) { LogHelper.Manage("XPSImageWriter.Write", err); settings.Result = false; } finally { LogHelper.End("XPSImageWriter.Write"); } }
public bool Read(string inputFileorFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress) { if (LogHelper.CanDebug()) { LogHelper.Begin("ImageFileReader.Read"); } try { string[] files = Directory.GetFiles(inputFileorFolder, "*.*", SearchOption.TopDirectoryOnly); foreach (string filename in files) { if (DocumentFactory.Instance.ImageExtension.Contains(Path.GetExtension(filename).ToUpper())) { BitmapImage myImage = new BitmapImage(); myImage.BeginInit(); myImage.UriSource = new Uri(filename, UriKind.RelativeOrAbsolute); myImage.CacheOption = BitmapCacheOption.OnLoad; myImage.EndInit(); imageBytes.Add(StreamToImage.BufferFromImage(myImage)); imageNames.Add(Path.GetFileName(filename)); } } string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageFound", "{0} images founded..."); progress(string.Format(msg, imageBytes.Count)); } catch (Exception err) { LogHelper.Manage("ImageFileReader:Read", err); settings.Result = false; return(false); } finally { LogHelper.End("ImageFileReader.Read"); } return(true); }