private static async Task <EpubContent> ReadContent(EpubContentRef contentRef) { EpubContent result = new EpubContent(); result.Html = await ReadTextContentFiles(contentRef.Html).ConfigureAwait(false); result.Css = await ReadTextContentFiles(contentRef.Css).ConfigureAwait(false); result.Images = await ReadByteContentFiles(contentRef.Images).ConfigureAwait(false); result.Fonts = await ReadByteContentFiles(contentRef.Fonts).ConfigureAwait(false); result.AllFiles = new Dictionary <string, EpubContentFile>(); foreach (KeyValuePair <string, EpubTextContentFile> textContentFile in result.Html.Concat(result.Css)) { result.AllFiles.Add(textContentFile.Key, textContentFile.Value); } foreach (KeyValuePair <string, EpubByteContentFile> byteContentFile in result.Images.Concat(result.Fonts)) { result.AllFiles.Add(byteContentFile.Key, byteContentFile.Value); } foreach (KeyValuePair <string, EpubContentFileRef> contentFileRef in contentRef.AllFiles) { if (!result.AllFiles.ContainsKey(contentFileRef.Key)) { result.AllFiles.Add(contentFileRef.Key, await ReadByteContentFile(contentFileRef.Value).ConfigureAwait(false)); } } return(result); }
public static EpubContentRef ParseContentMap(EpubBookRef bookRef) { var result = new EpubContentRef { Html = new Dictionary <string, EpubTextContentFileRef>(), Css = new Dictionary <string, EpubTextContentFileRef>(), Images = new Dictionary <string, EpubByteContentFileRef>(), Fonts = new Dictionary <string, EpubByteContentFileRef>(), AllFiles = new Dictionary <string, EpubContentFileRef>() }; foreach (var manifestItem in bookRef.Schema.Package.Manifest) { var fileName = manifestItem.Href; var contentMimeType = manifestItem.MediaType; var contentType = GetContentTypeByContentMimeType(contentMimeType); switch (contentType) { case EpubContentType.XHTML_1_1: case EpubContentType.CSS: case EpubContentType.OEB1_DOCUMENT: case EpubContentType.OEB1_CSS: case EpubContentType.XML: case EpubContentType.DTBOOK: case EpubContentType.DTBOOK_NCX: var epubTextContentFile = new EpubTextContentFileRef(bookRef) { FileName = fileName, ContentMimeType = contentMimeType, ContentType = contentType }; switch (contentType) { case EpubContentType.XHTML_1_1: result.Html[fileName] = epubTextContentFile; break; case EpubContentType.CSS: result.Css[fileName] = epubTextContentFile; break; } result.AllFiles[fileName] = epubTextContentFile; break; default: var epubByteContentFile = new EpubByteContentFileRef(bookRef) { FileName = fileName, ContentMimeType = contentMimeType, ContentType = contentType }; switch (contentType) { case EpubContentType.IMAGE_GIF: case EpubContentType.IMAGE_JPEG: case EpubContentType.IMAGE_PNG: case EpubContentType.IMAGE_SVG: result.Images[fileName] = epubByteContentFile; break; case EpubContentType.FONT_TRUETYPE: case EpubContentType.FONT_OPENTYPE: result.Fonts[fileName] = epubByteContentFile; break; } result.AllFiles[fileName] = epubByteContentFile; break; } } return(result); }
public static EpubContentRef ParseContentMap(EpubBookRef bookRef) { EpubContentRef result = new EpubContentRef { Html = new Dictionary <string, EpubTextContentFileRef>(), Css = new Dictionary <string, EpubTextContentFileRef>(), Images = new Dictionary <string, EpubByteContentFileRef>(System.StringComparer.OrdinalIgnoreCase), Fonts = new Dictionary <string, EpubByteContentFileRef>(), AllFiles = new Dictionary <string, EpubContentFileRef>() }; foreach (EpubManifestItem manifestItem in bookRef.Schema.Package.Manifest) { string fileName = manifestItem.Href; string contentMimeType = manifestItem.MediaType; EpubContentType contentType = GetContentTypeByContentMimeType(contentMimeType); switch (contentType) { case EpubContentType.XHTML_1_1: case EpubContentType.CSS: case EpubContentType.OEB1_DOCUMENT: case EpubContentType.OEB1_CSS: case EpubContentType.XML: case EpubContentType.DTBOOK: case EpubContentType.DTBOOK_NCX: EpubTextContentFileRef epubTextContentFile = new EpubTextContentFileRef(bookRef) { FileName = fileName, ContentMimeType = contentMimeType, ContentType = contentType }; switch (contentType) { case EpubContentType.XHTML_1_1: result.Html[fileName] = epubTextContentFile; break; case EpubContentType.CSS: result.Css[fileName] = epubTextContentFile; break; } result.AllFiles[fileName] = epubTextContentFile; break; default: EpubByteContentFileRef epubByteContentFile = new EpubByteContentFileRef(bookRef) { FileName = fileName, ContentMimeType = contentMimeType, ContentType = contentType }; switch (contentType) { case EpubContentType.IMAGE_GIF: case EpubContentType.IMAGE_JPEG: case EpubContentType.IMAGE_PNG: case EpubContentType.IMAGE_SVG: result.Images[fileName] = epubByteContentFile; break; case EpubContentType.FONT_TRUETYPE: case EpubContentType.FONT_OPENTYPE: result.Fonts[fileName] = epubByteContentFile; break; } result.AllFiles[fileName] = epubByteContentFile; break; } } result.Cover = BookCoverReader.ReadBookCover(bookRef.Schema, result.Images); return(result); }