Exemplo n.º 1
0
        public virtual async Task <HtmlResult> PrepareHTML(string html, Ebook book, Model.Format.File chapter)
        {
            var doc = new HtmlDocument();

            doc.LoadHtml(html);

            this.StripHtmlTags(doc);

            html = doc.DocumentNode.Descendants("body").First().InnerHtml;

            return(await Task.Run(() => {
                var result = new HtmlResult {
                    Html = html,
                    Images = new List <Image>(),
                };

                return result;
            }));
        }
Exemplo n.º 2
0
        private List <Model.EpubLoader.Image> GetImages(HtmlDocument doc, Model.Format.File chapter)
        {
            var images      = doc.DocumentNode.Descendants("img").ToList();
            var imagesModel = new List <Model.EpubLoader.Image>();

            var cnt = 1;

            foreach (var image in images)
            {
                var srcAttribute = image.Attributes.FirstOrDefault(o => o.Name == "src");

                if (srcAttribute != null)
                {
                    int id;

                    var existingImageModel = imagesModel.FirstOrDefault(o => o.FileName == srcAttribute.Value);

                    if (existingImageModel != null)
                    {
                        id = existingImageModel.ID;
                    }
                    else
                    {
                        id = cnt;
                        var path = PathHelper.CombinePath(chapter.Href, srcAttribute.Value);
                        imagesModel.Add(new Model.EpubLoader.Image {
                            ID       = id,
                            FileName = path,
                        });

                        cnt++;
                    }

                    image.Attributes.Add(doc.CreateAttribute("data-js-ebook-image-id", id.ToString()));
                }
            }

            return(imagesModel);
        }
Exemplo n.º 3
0
        public async Task <Model.EpubLoader.HtmlResult> PrepareHTML(string html, Model.Format.Ebook epub, Model.Format.File chapter)
        {
            var doc = new HtmlDocument();

            doc.LoadHtml(html);

            this.StripHtmlTags(doc);

            var images = await this.PrepareHtmlImages(doc, epub, chapter);

            var result = new Model.EpubLoader.HtmlResult {
                Html   = doc.DocumentNode.Descendants("body").First().InnerHtml,
                Images = images,
            };

            return(result);
        }
Exemplo n.º 4
0
        private async Task <List <Model.EpubLoader.Image> > PrepareHtmlImages(HtmlDocument doc, Model.Format.Ebook epub, Model.Format.File chapter)
        {
            var imagesModel = this.GetImages(doc, chapter);

            return(await this.ReplaceImagesWithBase64(imagesModel, epub));
        }