コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ImagesFileIO.cs プロジェクト: mmoore99/PDF-Toolbox
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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));
        }
コード例 #8
0
 public abstract Models.Document LoadDocument(FileIOInfo info);