很多年以前开始使用markdown写博客的时候,当时博客园的web编辑器还不是那么好用,就特别想有一个优秀的编辑器可以直接发布到博客园的。偶然间发现一个非常好用的MarkWord,可以实现markdown本地编辑后发布到远程的功能,重点是实时预览、图片可以直接Ctrl+CCtrl+V,写作的过程简直纵享丝滑,不可谓不优秀!
主要特性:
支持Markdown编写实时预览支持样式自定义与切换支持图片直接复制与粘贴支持一键发布到博客园等支持metablog协议的网站支持自定义类别支持发布到草稿软件的原理就不多说了,可以理解为通过编译Markdown为html,然后发布;然后图片复制和粘贴的原理就是保存到本地的一个临时文件夹中,发布的时候通过上传API发布上去。软件的体验非常好,我用了很长的一段时间。后来博客园官方对Markdown有了支持,这种编译方式,会将style等内容一并嵌入,如果自己博客的style经常更换的,很容易造成样式错乱。我就一直琢磨,能不能不发布Html内容,而转为直接发布Markdown源码呢?
改造
翻看博客园官方的说明,通过meta发布的时候,只要将分类设置为[Markdown]就可以支持直接发布Markdown源。于是我简单改造了一下,禁用了软件各种style功能,纯粹只发布Markdown,依然保留直接Ctrl+CCtrl+V的功能。
图片上传
if(img!=null){stringfilePath=Config.imgcacheDir+\\+System.IO.Path.GetRandomFileName()+.png;img.Save(filePath,System.Drawing.Imaging.ImageFormat.Png);//原来的//markEdit.textEditor.SelectedText=string.Format(![img](file:///{0}),System.Web.HttpUtility.UrlEncode(filePath).Replace(+,%20));//改造markEdit.textEditor.SelectedText=$![img]({newUri(filePath).AbsoluteUri});}添加[Markdown]分类
//直接使用markdown发布seeBLL/BlogsHelper.csblogsPost.description=Blogs;//开始查找图片并更新到服务器//HtmlDocumenthtmlDoc=newHtmlDocument();WebClientwebClient=newWebClient();//htmlDoc.LoadHtml(blogsPost.description);//varImgList=htmlDoc.DocumentNode.Descendants(img);//使用了正则来寻找图片。varrex=!\\[[^\\]]+\\]\\([^\\)]+\\);varImgList=Regex.Matches(Blogs,rex);intprocCount=3+ImgList.Count;最终效果如下:
当时也顺便迁移了一下到.NETCORE,详细内容请移步迁移WPF项目到.NETCore
最终的程序代码发布到netcore分支,不过我只做了关键代码的修改,我也用了很久了,编写和发布Markdown是没有问题了,但其他功能我也没有试验过,建议大家编写博文的时候经常保存。
使用说明
使用netcore分支,在release下直接编译即可,需要.NETCORE3.1DesktopSDK,因此需要VS。详细使用方法请阅读原作者的博客。
补充:现在博客园的WebMarkdown编辑器已经可以支持直接Ctrl+CCtrl+V上传了,还能自动保存,体验已经很不错了(就差一个实时预览了),本文就是使用Web编辑器编写而成。
资源
项目代码原