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); //テンプレートファイルに上書きする

        }
Esempio n. 2
0
        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(); //全行を取得する
        }
Esempio n. 4
0
 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);
        }
 public HeaderTextConverter(string srcFile, string templateFile, ConvertOptions opt)
     : base(srcFile, templateFile, opt)
 {
 }
Esempio n. 8
0
        //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ファイルを生成する";
        }