Exemplo n.º 1
0
        //フォルダを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);
        }
Exemplo n.º 2
0
        //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);
        }