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; })); }
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); }
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); }
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)); }