public static void UpdateTitlePage(string srcFile, EpubMetaData dat) { var doc = XDocument.Load(srcFile); var idNodes = doc.Descendants().Where(e => e.Attribute("id") != null); //idを持つノードを取得する if (idNodes != null) { //タイトルを書き込む var titleNode = idNodes.Where(e => e.Attribute("id").Value == "title").FirstOrDefault(); if (titleNode != null) { titleNode.Value = dat.title; } //著者を書き込む var authorNode = idNodes.Where(e => e.Attribute("id").Value == "author").FirstOrDefault(); if (authorNode != null) { authorNode.Value = dat.author; } //出版社を書き込む var publisherNode = idNodes.Where(e => e.Attribute("id").Value == "publisher").FirstOrDefault(); if (publisherNode != null) { publisherNode.Value = dat.publisher; } } doc.Save(srcFile); }
//EPUB生成ボタンが押された private async void GenerateEPUB(object sender, RoutedEventArgs e) { var btn = sender as Button; //ボタンをdisableにする btn.IsEnabled = false; try { // //EPUBを作成する // //テンプレートを確認する btn.Content = "テンプレートを確認しています。"; await Task.Run(() => EpubDocument.CheckEpubTemplate()); //メタデータを取得する var ePubDoc = new EpubDocument(); var metaData = new EpubMetaData(); metaData.title = title.Text; //タイトル metaData.author = author.Text; //著者 metaData.publisher = publisher.Text; //出版社 metaData.isRightToLeft = (bool)isVertical.IsChecked; //縦書きであれば右→左 metaData.isVertical = (bool)isVertical.IsChecked; //縦書きか? ePubDoc.metaData = metaData; //ファイル情報を取得する ePubDoc.coverImageFileName = cover.Text; //表紙画像 ePubDoc.novelFileName = novel.Text; //本文 //テキストフォーマットを取得する var opt = new ConvertOptions(); opt.hasTag = (bool)hasTag.IsChecked; //修飾タグの有無 opt.isSpaceIndented = (bool)isSpaceIndented.IsChecked; //インデントがスペースか? if (isPlaneText.IsChecked == true) //プレーンテキスト { opt.format = TextFormat.PLAIN_TEXT; } else if (isHeaddedText.IsChecked == true) //*でヘッダを示すテキスト { opt.format = TextFormat.PLAIN_TEXT_WITH_HEADER; } else //XHTML { opt.format = TextFormat.XHTML; } ePubDoc.opt = opt; //生成処理実行 btn.Content = "EPUBを作成しています"; //後処理設定を読み込む PostProcess.executeEpubCheck = useEpubCheck.IsChecked; //EpubCheck PostProcess.executeKindePreViewer = execKindlePreviewer.IsChecked; //KindlePreviewer var isEpubGen = ePubDoc.GenerateEpubDocument(); //設定を保存する SaveDefaults(); } catch (Exception ex) { MessageBox.Show(ex.Message); } btn.IsEnabled = true; //ボタンをEnableに戻す btn.Content = "EPUB3ファイルを生成する"; }