Esempio n. 1
0
        /// <summary>
        /// override to unload book, will delete the temporary folder
        /// </summary>
        /// <param name="bk"></param>
        override public void UnloadBook(Book bk)
        {
            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("ePUBBookService.UnloadBook");
            }
            try
            {
                base.UnloadBook(bk);

                if (bk != null && bk.Tag != null)
                {
                    ePUB docPUB = bk.Tag as ePUB;
                    if (!string.IsNullOrEmpty(docPUB.ExpandFolder))
                    {
                        Directory.Delete(docPUB.ExpandFolder, true);
                    }
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("ePUBBookService.UnloadBook", err);
            }
            finally
            {
                LogHelper.End("ePUBBookService.UnloadBook");
            }
        }
Esempio n. 2
0
        /// <summary>
        /// override to load covers
        /// </summary>
        /// <param name="param"></param>
        override internal void LoadCoverThread(object param)
        {
            Book bk = param as Book;

            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("ePUBBookService.LoadCoverThread");
            }
            try
            {
                // all ready unzipped ?
                if (bk != null && bk.Tag != null)
                {
                    ePUB   docPUB    = bk.Tag as ePUB;
                    string coverFile = docPUB.GetCoverFile();

                    Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart) delegate
                    {
                        BitmapImage myImage = new BitmapImage();
                        myImage.BeginInit();
                        myImage.UriSource        = new Uri(coverFile);
                        myImage.CacheOption      = BitmapCacheOption.OnLoad;
                        myImage.DecodePixelWidth = 70;
                        myImage.EndInit();

                        bk.Cover = myImage;
                    });
                }
                else
                {
                    ePUB   docPUB    = new ePUBManager().ParseFileForCoverOnly(bk.FilePath);
                    string coverFile = docPUB.GetCoverFile();

                    if (coverFile == null)
                    {
                        // no image or an error, send default one from us
                        GetUnknownCover(bk);
                    }

                    SevenZipExtractor temp = null;

                    try
                    {
                        temp    = ZipHelper.Instance.GetExtractor(bk.FilePath);
                        bk.Size = temp.PackedSize;

                        ArchiveFileInfo fil = temp.ArchiveFileData.Where(p => !p.IsDirectory && p.FileName == coverFile).First();

                        using (MemoryStream stream = new MemoryStream())
                        {
                            temp.ExtractFile(fil.FileName, stream);
                            CreateImage(bk, stream);
                        }
                    }
                    catch (Exception err)
                    {
                        LogHelper.Manage("ePUBBookService:LoadCoverThread", err);
                    }
                    finally
                    {
                        ZipHelper.Instance.ReleaseExtractor(temp);
                    }
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("ePUBBookService.LoadCoverThread", err);
            }
            finally
            {
                LogHelper.End("ePUBBookService.LoadCoverThread");
            }
        }
Esempio n. 3
0
 public IDocumentPaginatorSource ParseToDocument(ePUB data)
 {
     return(new HtmlConverter().ConvertToFlowDocument(data));
 }