//EPUBファイルを書き出す
        private void ArchiveEpubClick(object sender, RoutedEventArgs e)
        {
            //ボタンの表示をEpub生成中にする
            var btn = sender as Button;

            btn.IsEnabled = false;
            btn.Content   = "EPUBを生成しています";

            //バックアップファイルを作成する
            var backFileName = Path.ChangeExtension(epubFile, ".bak");

            if (File.Exists(backFileName) == true)  //バックアップファイルが既にあったので削除する
            {
                File.Delete(backFileName);
            }
            File.Move(epubFile, backFileName);  //Epubファイルをバックアップファイルにする

            //Epubファイルを書き出す
            PostProcess.executeEpubCheck      = useEpubCheck.IsChecked;         //後処理を設定する
            PostProcess.executeKindePreViewer = execKindlePreviewer.IsChecked;

            //Epubファイルを出力する
            Archiver.ArchiveEpubWithPostProcess(tempDir, epubFile);

            //ボタンの表示を戻す
            btn.IsEnabled = true;
            btn.Content   = "EPUBを生成する";
        }
예제 #2
0
        private void GenerateEpub_Click(object sender, RoutedEventArgs e)
        {
            //ボタンの表示をEpub生成中にする
            var btn = sender as Button;

            btn.IsEnabled = false;
            btn.Content   = "EPUBを生成しています";

            //EPUBのディレクトリをデフォルト値に設定する
            Properties.Settings.Default.epubDirDefault = ePubDirPathTextBox.Text;
            Properties.Settings.Default.Save();

            //後処理設定を読み込む
            PostProcess.executeEpubCheck      = useEpubCheck.IsChecked;         //EpubCheck
            PostProcess.executeKindePreViewer = execKindlePreviewer.IsChecked;  //KindlePreviewer

            //Epubを生成する
            var srcDir  = ePubDirPathTextBox.Text;
            var dstFile = srcDir + ".epub";

            Archiver.ArchiveEpubWithPostProcess(srcDir, dstFile);

            //ボタンの表示を戻す
            btn.IsEnabled = true;
            btn.Content   = "EPUBを生成する";
        }
예제 #3
0
        //テンプレートからEpubファイルを作成する
        public bool GenerateEpubDocument()
        {
            //ファイルの上書きを確認する
            var epubFileName = GetEpubFileName();

            if (File.Exists(epubFileName))
            {
                var overwrite = MessageBox.Show("ファイルを上書きしますか?", "Nov2Epub", MessageBoxButton.OKCancel);
                if (overwrite == MessageBoxResult.OK)
                {
                    File.Delete(epubFileName);
                }
                else //上書きしないならそのまま終了
                {
                    return(false);
                }
            }
            //テンプレートファイルをテンポラリディレクトリにコピーする
            var templateDir = GetTemplateDirectory();                                                            //テンプレートディレクトリ
            var tempDir     = Path.GetTempPath();                                                                //テンポラリディレクトリ
            var epubDirName = Path.Combine(tempDir, Path.GetFileNameWithoutExtension(Path.GetRandomFileName())); //ランダム

            CopyDirectory(templateDir, epubDirName);                                                             //コピーする

            //パッケージドキュメントを更新する
            var packFile = ContainerXML.GetPackageDocument(epubDirName);

            PackageDocument.WriteMetaData(packFile, metaData);

            //表紙ファイルを更新する
            var coverImageDst = Path.Combine(epubDirName, @"OEBPS\Images\Cover.JPG");

            File.Copy(coverImageFileName, coverImageDst, true);

            //扉ページを更新する
            var titlePageDst = Path.Combine(epubDirName, @"OEBPS\Text\Title.xhtml");

            InfoPage.UpdateTitlePage(titlePageDst, metaData);

            //テキストを更新する
            var textTemplateFile = Path.Combine(epubDirName, @"OEBPS\Text\Text.xhtml");
            var headerAnchors    = TextConverter.ConvertText(novelFileName, textTemplateFile, opt);

            //本文の縦書き/横書きをCSSに設定する
            var textCssTemplateFile = Path.Combine(epubDirName, @"OEBPS\Styles\Text.css");

            TextStyleSheet.SetOrientationStyle(textCssTemplateFile, metaData.isVertical);

            //目次の縦書き/横書きをCSSに設定する
            var navCssTemplateFile = Path.Combine(epubDirName, @"OEBPS\Styles\Nav.css");

            TextStyleSheet.SetOrientationStyle(navCssTemplateFile, metaData.isVertical);


            //ナビゲーションドキュメントを作成する
            var navFileName = Path.Combine(epubDirName, @"OEBPS\Text\nav.xhtml");

            NavigationDocument.WriteNavigationDocument(navFileName, headerAnchors);

            //奥付ページを更新する
            var ColophonPage = Path.Combine(epubDirName, @"OEBPS\Text\Colophon.xhtml");

            InfoPage.UpdateTitlePage(ColophonPage, metaData);

            //不要ファイルを削除する
            var thumbsFile = Path.Combine(epubDirName, @"OEBPS\Images\Thumbs.db");

            if (File.Exists(thumbsFile) == true)
            {
                File.Delete(thumbsFile);
            }

            //EPubファイルを作成する
            Archiver.ArchiveEpubWithPostProcess(epubDirName, epubFileName);

            //テンポラリディレクトリを削除する
            Directory.Delete(epubDirName, true);

            //Identifierを更新する
            IdentifierDictionary.SaveIdentifierDictionary();

            return(true);
        }