• 2018-10-23-WPF-使用-Pandoc-把-Markdown-转-Docx


    title author date CreateTime categories
    WPF 使用 Pandoc 把 Markdown 转 Docx
    lindexi
    2018-10-23 11:35:47 +0800
    2018-10-23 11:14:8 +0800
    WPF Pandoc

    本文告诉大家如何通过 WPF 使用 Pandoc 把 Markdown 转 Docx 文件

    在之前有文章使用 Pandoc 把 Markdown 转 Docx但是这里的方法需要每次都调用命令行,本文提供方法封装了命令行,有一个界面可以快速做转换

    界面很简单,就不告诉大家如何做出这样的界面了,现在是来解决一些坑

    选择文件

    从软件界面看到,可以让用户选择需要转换的文件,选择文件可以通过 OpenFileDialog 让用户选择文件

                var pick = new OpenFileDialog
                {
                    Multiselect = false,
                    Filter = "Markdown文件|*.md"
                };
    
                if (pick.ShowDialog(this) is true)
                {
                    // pick.FileName 是选择的文件
                   
                }

    这里的 Filter 的写法请看openFileDialog的Filter属性设置 - 幕三少 - 博客园

    此外还有 Word 文件需要保存,保存文件可以使用 SaveFileDialog 进行选择

                var pick = new SaveFileDialog()
                {
                    Filter = "Word文件|*.docx"
                };
    
                if (pick.ShowDialog(this) is true)
                {
                    // pick.FileName 是选择的文件
                }

    这里 ShowDialog 传入的窗口是当前的窗口

    获取文件的文件夹

    为了方便用户,在用户输入需要转换的文件的时候就自动添加转换之后的 Word 文件

    这里定义的 MVVM 是使用 lindexi.wpf.Framework 这个库,通过 Nuget 安装

    定义了 ViewModel 类,这个类只有三个属性

          public string Markdown
            {
                get => _markdown;
                set
                {
                    _markdown = value;
    
                    try
                    {
                        Docx = Path.Combine(Path.GetDirectoryName(_markdown),
                            Path.GetFileNameWithoutExtension(_markdown) + ".docx");
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine(e);
                    }
    
                    OnPropertyChanged();
                }
            }
    
            public string Docx
            {
                get => _docx;
                set
                {
                    if (value == _docx)
                        return;
                    _docx = value;
                    OnPropertyChanged();
                }
            }
    
            public string Pandoc
            {
                get => _pandoc;
                set
                {
                    if (value == _pandoc)
                        return;
                    _pandoc = value;
                    OnPropertyChanged();
                }
            }
    
            private string _markdown;
            private string _docx;
            private string _pandoc;

    通过 Path.GetDirectoryName(_markdown) 可以拿到对应的文件的文件夹

    使用资源管理器打开文件夹选择指定文件

    在转换完成之后,让用户的资源管理器打开 Word 所在的文件夹,选择转换的 Word 需要用到下面代码

                var argument = "/select, "" + 文件名 + """;
    
                Process.Start("explorer.exe", argument);

    我将软件放在 csdn 和 github 可以通过点击下面的网站下载

    使用 Pandoc 把 Markdown 转 Docx-CSDN下载

    软件使用方式 解压缩软件到一个文件夹,双击运行 PandocMarkdown2Docx.exe 然后填写需要转换的文件,点击转换

    代码 https://github.com/lindexi/UWP/tree/master/wpf/PandocMarkdown2Docx

    如果发现代码里面存在任何你觉得需要修改的,请在 github 上新建讨论

  • 相关阅读:
    【贪心】闭区间问题
    【贪心】电视节目安排
    中石油-高精度阶乘-java
    hdu 6444 Neko's loop 单调队列优化DP
    hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP
    51nod 1050 循环数组最大子段和 单调队列优化DP
    hdu 6406 Taotao Picks Apples 线段树 单点更新
    Wannafly 挑战赛22 D 整数序列 线段树 区间更新,区间查询
    dp专题训练
    zoj 3747 递推dp
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086511.html
Copyright © 2020-2023  润新知