//フォルダをEpubファイルに圧縮する。異常時はメッセージボックスを表示してfalseを返す static async Task <bool> ArchiveEpub(string srcDir, string dstFile) { bool ret = false; var errorMes = CheckEpubDir(srcDir); //Epubにできるか確認する if (errorMes.Count == 0) //EPUBにできるなら { try { //パッケージ文書のmodified属性を更新する。 var packFile = ContainerXML.GetPackageDocument(srcDir); PackageDocument.UpdatePackageDocument(packFile); //EPUBを作成する PackEpub(srcDir, dstFile); ret = true; //正常に終了した } catch (Exception ex) { errorMes.Add(ex.ToString()); } } if (errorMes.Count > 0) //異常があったなら { var err = ""; foreach (var mes in errorMes) { err += mes + "\n"; } MessageBox.Show("EPUB生成に失敗しました\n" + err); } return(ret); }
//EPUBを作成するのに必要なファイルが存在しているか確認する public static List <string> CheckEpubDir(string srcDir) { var errorMes = new List <string>(); //srcDirの直下にmimetypeファイルが存在するか if (File.Exists(srcDir + @"\mimetype") != true) { errorMes.Add("mimetypeファイルが存在しません。"); } //srcDirの直下にMETA-INFディレクトリが存在するか if (Directory.Exists(srcDir + @"\META-INF") != true) { errorMes.Add("META-INFディレクトリが存在しません"); } else //META-INFディレクトリが存在した { var container = srcDir + @"\META-INF\container.xml"; //container.xmlファイルが存在するか if (File.Exists(container) != true) { errorMes.Add("container.xmlが存在しません"); } else { //container.xmlファイルからパッケージ文書を取得する var packageDocumentPath = ContainerXML.GetPackageDocument(srcDir); if (File.Exists(packageDocumentPath) != true) //パッケージ文書が存在するか { errorMes.Add("パッケージ文書が存在しません"); } } } return(errorMes); }