public XHtmlConverter(string srcFile, string templateFile, ConvertOptions opt) : base(srcFile, templateFile, opt) { var doc = XDocument.Load(srcFile); var headerNodes = doc.Descendants().Where(e => (e.Name.LocalName == "h1") || (e.Name.LocalName == "h2")); var h1Cnt = 0; //h1の個数・Identifierに使用する var h2Cnt = 0; //h2の個数・Identifierに使用する foreach (var header in headerNodes) { var ha = new HeaderAnchor(); var id = ""; if (header.Name.LocalName == "h1") //h1なら { //ヘッダ情報を作成する h1Cnt++; id = "h1-" + h1Cnt.ToString(); ha = new HeaderAnchor(1, id, header.Value); } else //h2なら { //ヘッダ情報を作成する h2Cnt++; id = "h2-" + h2Cnt.ToString(); ha = new HeaderAnchor(2, id, header.Value); } headerAnchors.Add(ha); //アンカーをリストに追加する header.SetAttributeValue("id", id); //ノードにidを設定する } doc.Save(templateFile); //テンプレートファイルに上書きする }
public TextConverterMethods(string srcFile, string templateFile, ConvertOptions opt) { this.templateFile = templateFile; this.option = opt; var enc = System.Text.Encoding.GetEncoding("utf-8"); headerAnchors = new List <HeaderAnchor>(); lines = File.ReadAllLines(srcFile, enc).ToList(); //全行を取得する }
public HeaderTextConverter(string srcFile, string templateFile, ConvertOptions opt) : base(srcFile, templateFile, opt) { }
//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ファイルを生成する"; }
public static List <HeaderAnchor> ConvertText(string srcFile, string templateFile, ConvertOptions opt) { var method = new TextConverterMethods(srcFile, templateFile, opt); //フォーマットによりコンバーターを切替える switch (opt.format) { case TextFormat.PLAIN_TEXT: //プレーンテキスト method = new PlainTextConverter(srcFile, templateFile, opt); break; case TextFormat.PLAIN_TEXT_WITH_HEADER: method = new HeaderTextConverter(srcFile, templateFile, opt); break; case TextFormat.XHTML: method = new XHtmlConverter(srcFile, templateFile, opt); break; } method.PreProcess(); method.Process(); method.Output(); return(method.headerAnchors); }