Exemple #1
0
 public void DeleteItems(List <EpubItem> items)
 {
     foreach (var item in items)
     {
         Opf.DeleteItem(item);
         ToC.DeleteItem(item);
     }
 }
Exemple #2
0
 public void InsertChapter(EpubItem chapter, TocEntry tocEntry, EpubItem preceedingItem)
 {
     Opf.InsertChapter(new List <EpubItem>()
     {
         chapter
     }, preceedingItem);
     ToC.InsertChapter(new List <TocEntry>()
     {
         tocEntry
     }, preceedingItem);
 }
Exemple #3
0
        public void WriteFile(string fileName)
        {
            using (ZipFile zip = new ZipFile(System.Text.Encoding.UTF8))
            {
                AddMimeType(zip);
                zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
                Container.WriteTo(zip);
                Opf.WriteTo(zip);
                ToC.WriteToNcxEpubItem();
                Opf.WriteManifestTo(zip);

                zip.Save(fileName);
            }
        }
Exemple #4
0
 public void DeleteImages(List <EpubItem> items)
 {
     foreach (var item in items)
     {
         HashSet <EpubItem> usedChapters = null;
         if (ImagesUsedIndex.TryGetValue(item.AbsolutePath, out usedChapters))
         {
             foreach (var chapter in usedChapters)
             {
                 chapter.RemoveImageLink(item.AbsolutePath);
             }
         }
         ImagesUsedIndex.Remove(item.AbsolutePath);
         Opf.DeleteImage(item);
     }
 }
Exemple #5
0
 public void RebuildImageUseIndexes()
 {
     UnusedImages.Clear();
     ImagesUsedIndex.Clear();
     foreach (var item in Opf.GetPageItems())
     {
         item.AddImagesTo(ImagesUsedIndex);
     }
     MissingImages = new HashSet <string>(ImagesUsedIndex.Keys);
     foreach (var item in Opf.GetImageItems())
     {
         if (ImagesUsedIndex.ContainsKey(item.AbsolutePath))
         {
             MissingImages.Remove(item.AbsolutePath);
         }
         else
         {
             UnusedImages.Add(item);
         }
     }
 }
Exemple #6
0
        public void ReadFile(string fileName)
        {
            var options = new ReadOptions()
            {
                Encoding = System.Text.Encoding.UTF8
            };

            using (ZipFile zip = ZipFile.Read(fileName, options))
            {
                Container = new Container(zip.ExtractXml(Epub.ContainerPath));
                var containerPath = Container.FullPath;
                Opf = new Opf(zip.ExtractXml(containerPath), containerPath);
                foreach (var item in Opf.Manifest)
                {
                    item.AddRawDataToItem(zip);
                }
                RebuildImageUseIndexes();
                var ncxItem = Opf.NcxItem;
                ToC = new ToC(zip.ExtractXml(ncxItem.AbsolutePath), ncxItem, Opf.AbsolutePathIndex);
            }
        }
Exemple #7
0
 public void RenumberItemIds(int index)
 {
     Opf.RenumberItemIds(index);
 }
Exemple #8
0
 public void InsertChapters(List <EpubItem> chapters, List <TocEntry> tocEntries, EpubItem insertAt)
 {
     Opf.InsertChapter(chapters, insertAt);
     ToC.InsertChapter(tocEntries, insertAt);
 }
Exemple #9
0
 public IEnumerable <string> ValidateImages()
 {
     return(Opf.GetImageItems()
            .Where(EpubUtils.IsWebp)
            .Select(item => $"Image '{item.AbsolutePath}' is Webp. Convert to jpeg"));
 }