public void AddFile(string filename, byte[] content, EpubContentType type) { if (string.IsNullOrWhiteSpace(filename)) { throw new ArgumentNullException(nameof(filename)); } if (content == null) { throw new ArgumentNullException(nameof(content)); } var file = new EpubByteFile { AbsolutePath = filename, Href = filename, ContentType = type, Content = content }; file.MimeType = ContentType.ContentTypeToMimeType[file.ContentType]; switch (type) { case EpubContentType.Css: resources.Css.Add(file.ToTextFile()); break; case EpubContentType.FontOpentype: case EpubContentType.FontTruetype: resources.Fonts.Add(file); break; case EpubContentType.ImageGif: case EpubContentType.ImageJpeg: case EpubContentType.ImagePng: case EpubContentType.ImageSvg: resources.Images.Add(file); break; case EpubContentType.Xml: case EpubContentType.Xhtml11: case EpubContentType.Other: resources.Other.Add(file); break; default: throw new InvalidOperationException($"Unsupported file type: {type}"); } format.Opf.Manifest.Items.Add(new OpfManifestItem { Id = Guid.NewGuid().ToString("N"), Href = filename, MediaType = file.MimeType }); }