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 上新建讨论
2018-10-23-WPF-使用-Pandoc-把-Markdown-转-Docx的更多相关文章
- WPF 使用 Pandoc 把 Markdown 转 Docx
原文:WPF 使用 Pandoc 把 Markdown 转 Docx 本文告诉大家如何通过 WPF 使用 Pandoc 把 Markdown 转 Docx 文件 在之前有文章使用 Pandoc 把 M ...
- 2018.10.23 hdu2476String painter(区间dp)
传送门 一道挺妙的区间dp. 我们先用区间dp求出第一个串为空串时的最小代价. 然后再加入原本的字符更新答案就行了. 代码: #include<bits/stdc++.h> using n ...
- 2018.10.23 hdu4745Two Rabbits(区间dp)
传送门 区间dp经典题目. 首先断环为链. 然后题目相当于就是在找最大的回文子序列. 注意两个位置重合的时候相当于范围是n,不重合时范围是n-1. 代码: #include<bits/stdc+ ...
- 2018.10.23 NOIP训练 Leo的组合数问题(组合数学+莫队)
传送门 好题. 考察了莫队和组合数学两个知识板块. 首先需要推出单次已知n,mn,mn,m的答案的式子. 我们令f[i]f[i]f[i]表示当前最大值为第iii个数的方案数. 显然iii之后的数都是单 ...
- 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)
传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...
- 2018.10.23 vijo1243生产产品(单调队列优化dp)
传送门 这道单调队列真的有点难写啊. 方程感觉挺简单的. f[i][j]f[i][j]f[i][j]表示在第iii个车间结束前jjj次步骤的最小代价. 然后用单调队列毒瘤优化一下就行了. 代码: #i ...
- 2018.10.23 NOIP模拟 “新”的家园(缩图+dijksta/spfa)
传送门 考试70分骗分写挂了=30分=全场最低. 哎今天230垫底了. 这题出的挺好. 对于非关键点直接缩点. 每次把要查的insertinsertinsert进缩好的图里面跑spfa/dijkstr ...
- 2018.10.23 NOIP模拟 行星通道计划(bit)
传送门 卡常题. 成功卡掉了作死写树套树的zxy. 然而对我的二维bit无能为力. 直接维护两棵bit. bit1[i][j]bit1[i][j]bit1[i][j]表示左端点小于等于iii,右端点小 ...
- 2018.10.23 NOIP模拟 战争(并查集)
传送门 跟bzoj1015: [JSOI2008]星球大战是同一道题啊讲道理. 随便合并一下就能过了. 代码
- sequence(2018.10.23)
建出差分序列,可以发现最早出现的回文串就是答案,自己想想就懂了. \(O(N)\)找出回文串就好了,字符串\(hash\)或者\(manacher\)都能在合法时间内得到答案. #include< ...
随机推荐
- 阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战. 7月17日,阿里云应用高可用服务AHAS 正式商用,包含架构感知.流控降 ...
- @codeforces - 1276F@ Asterisk Substrings
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个包含 n 个小写字母的字符串 s,用 s 生成 n 个串 ...
- bzoj1231 混乱的奶牛
Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...
- ACK容器服务发布virtual node addon,快速部署虚拟节点提升集群弹性能力
在上一篇博文中(https://yq.aliyun.com/articles/647119),我们展示了如何手动执行yaml文件给Kubernetes集群添加虚拟节点,然而,手动执行的方式用户体验并不 ...
- jQuery 鼠标移入图片 显示大图并跟随鼠标移动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- datetimepicker —— 日期选择控件
一.依赖 <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel=&qu ...
- 如何不让EditText不获得焦点
http://blog.csdn.net/get123/article/details/9004661
- Laravel 的HTTP请求#
获取请求# 要通过依赖注入的方式来获取当前HTTP请求的实例,你应该在控制器方法中类型提示Illuminate\Http\Request 传入的请求的实例通过 服务容器自动注入: <?php n ...
- async/await运用-前端表单弹窗验证同步书写方式(React)
在前端项目中,我们经常会碰到这样的场景: 当前我们有一个表单需要填写,在完成表单填写后经过校验之后会弹出短信或者其他形式验证码,进行补充校验,然后一起提交给接口. 场景如下图: 当前为创建操作,编辑操 ...
- 微信小程序封装自定义弹窗
最近在做小程序的登录,需要同时获取用户手机号和头像昵称等信息,但是小程序又不支持单个接口同时获取两种数据,因此想到自定义一个弹窗,通过弹窗按钮触发获取手机号事件.记录一下. 具体代码如下: 业务代码中 ...