public override FileIOInfo[] GetFileStreams(IDataObject data) { if (data == null || !data.GetDataPresent(DataFormats.FileDrop)) { return(null); } List <FileIOInfo> infos; FileIOInfo info; string[] files = data.GetData(DataFormats.FileDrop) as string[]; if (files != null && files.Length > 0) { infos = new List <FileIOInfo>(); foreach (string file in files) { info = new FileIOInfo(); info.Stream = File.OpenRead(file); info.FullFileName = file; infos.Add(info); } return(infos.ToArray()); } return(null); }
private static bool SaveTemp(FileIOInfo info) { if (info == null || info.Stream == null || info.Stream.Length == 0) { return(false); } if (_extractedSrcFiles == null) { _extractedSrcFiles = new List <string>(); } try { FileStream file; string tmpPath = ToTempFileName(info.FileName); file = new FileStream(tmpPath, FileMode.Create); info.Stream.CopyTo(file, (int)info.Stream.Length); _extractedSrcFiles.Add(tmpPath); } catch (Exception e) { Toolbox.MessageBoxException(e); return(false); } return(true); }
public override Models.Document LoadDocument(FileIOInfo info) { if (info == null) { return(null); } TiffBitmapDecoder tiff = new TiffBitmapDecoder(info.Stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); Models.Document doc = new Models.Document(); Models.Page page; for (int i = 0; i < tiff.Frames.Count; i++) //foreach (BitmapFrame frame in tiff.Frames) { page = new Models.Page(); page.fName = info.FullFileName; page.image = TiffFrameToBitmapImage(tiff.Frames[i]); page.number = i + 1; page.imageStream = (MemoryStream)page.image.StreamSource; doc.pages.Add(new ViewModels.PageViewModel(page)); } return(doc); }
private Models.Page CachePdfPageFromFile(FileIOInfo info, PdfReader reader, int pageNum) { Models.Page page = new Models.Page(); page.number = ++pageNum; page.fName = (info.IsTempPath ? info.FileName : info.FullFileName); //FIXME: this is making the pages render with wrong rotation unless rotation is zero //page.SetRotation((float)reader.GetPageRotation(pageNum)); page.originalRotation = new PdfNumber(reader.GetPageRotation(pageNum)); return(page); }
public override Models.Document LoadDocument(FileIOInfo info) { //Bitmap img; //MemoryStream memStream; string tmpFile; Models.Page page; Models.Document doc; List <BitmapImage> pageImages = new List <BitmapImage>(); PdfReader reader; //List<Models.Page> pages; //FIXME: handle temp file paths moar better... tmpFile = (info.IsTempPath ? info.FullFileName : CopyToTemp(info.FullFileName)); if (string.IsNullOrEmpty(tmpFile)) { return(null); } /* * memStream = Load(tmpFile); * // Stream is null if fPath is invalid or unsupported * if (memStream == null) return null; */ doc = new Models.Document(); pageImages = GetPdfPageImages(tmpFile); reader = new PdfReader(tmpFile); for (int i = 0; i < reader.NumberOfPages; i++) { page = CachePdfPageFromFile(info, reader, i); page.image = pageImages[i]; doc.pages.Add(new ViewModels.PageViewModel(page)); } if (doc.pages.Count > 0) { doc.image = doc.pages[0].Image; doc.fName = doc.pages[0].DocName; } return(doc); }
public override FileIOInfo[] GetFileStreams(IDataObject data) { if (!data.GetDataPresent("FileGroupDescriptor")) { return(null); } string tmpPath; string fName; List <Models.Document> docs; Models.Document doc; //MemoryStream content; Stream stream = data.GetData("FileGroupDescriptorW") as Stream; FileStream file; FileIOInfo info; if (stream != null) { fName = GetAttFileName(stream); tmpPath = FileIO.SaveDirectoryTemp; docs = new List <Models.Document>(); doc = new Models.Document(); info = new FileIOInfo(); if (data.GetDataPresent("FileContents", false)) { info.Stream = data.GetData("FileContents", true) as MemoryStream; info.FullFileName = tmpPath + fName; info.IsTempPath = true; file = File.Create(info.FullFileName); info.Stream.CopyTo(file); file.Close(); return(new FileIOInfo[] { info }); } } return(null); }
public static Models.Document LoadDocument(FileIOInfo info) { // Return null if 'fPath' is invalid if (info == null || !IsFileValid(info.FullFileName)) { return(null); } BaseFileIOStrategy loader; loader = GetValidIOStrategy(info.FullFileName); // Return null if no strategy available for the file type if (loader == null) { return(null); } Helpers.D.Log("FileIO.LoadDocument: {0}: {1}", loader.GetType(), info.FullFileName); return(loader.LoadDocument(info)); }
public abstract Models.Document LoadDocument(FileIOInfo info);