很多年以前開始使用markdown寫博客的時候,當時博客園的web編輯器還不是那么好用,就特別想有一個優秀的編輯器可以直接發布到博客園的,偶然間發現一個非常好用的MarkWord,可以實作markdown本地編輯后發布到遠程的功能,重點是實時預覽、圖片可以直接Ctrl+C Ctrl+V,寫作的程序簡直縱享絲滑,不可謂不優秀!
主要特性:
- 支持Markdown撰寫實時預覽
- 支持樣式自定義與切換
- 支持圖片直接復制與粘貼
- 支持一鍵發布到博客園等支持metablog協議的網站
- 支持自定義類別
- 支持發布到草稿
軟體的原理就不多說了,可以理解為通過編譯Markdown為html,然后發布;然后圖片復制和粘貼的原理就是保存到本地的一個臨時檔案夾中,發布的時候通過上傳API發布上去,軟體的體驗非常好,我用了很長的一段時間,后來博客園官方對Markdown有了支持,這種編譯方式,會將style等內容一并嵌入,如果自己博客的style經常更換的,很容易造成樣式錯亂,我就一直琢磨,能不能不發布Html內容,而轉為直接發布Markdown原始碼呢?
改造
翻看博客園官方的說明,通過meta發布的時候,只要將分類設定為[Markdown]就可以支持直接發布Markdown源,于是我簡單改造了一下,禁用了軟體各種style功能,純粹只發布Markdown,依然保留直接Ctrl+C Ctrl+V的功能,
圖片上傳
if (img != null)
{
string filePath = Config.imgcacheDir + "\\" + System.IO.Path.GetRandomFileName() + ".png";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
//原來的
//markEdit.textEditor.SelectedText = string.Format("", System.Web.HttpUtility.UrlEncode(filePath).Replace("+", "%20"));
//改造
markEdit.textEditor.SelectedText = $".AbsoluteUri})";
}
添加[Markdown]分類
//直接使用markdown發布 see BLL/BlogsHelper.cs
blogsPost.description = Blogs;
//開始查找圖片并更新到服務器
//HtmlDocument htmlDoc = new HtmlDocument();
WebClient webClient = new WebClient();
//htmlDoc.LoadHtml(blogsPost.description);
//var ImgList = htmlDoc.DocumentNode.Descendants("img");
//使用了正則來尋找圖片,
var rex = "!\\[[^\\]]+\\]\\([^\\)]+\\)";
var ImgList = Regex.Matches(Blogs,rex);
int procCount = 3 + ImgList.Count;
最終效果如下:

當時也順便遷移了一下到.NET CORE,詳細內容請移步遷移WPF專案到.NET Core
最終的程式代碼發布到netcore分支,不過我只做了關鍵代碼的修改,我也用了很久了,撰寫和發布Markdown是沒有問題了,但其他功能我也沒有試驗過,建議大家撰寫博文的時候經常保存,
使用說明
使用netcore分支,在release下直接編譯即可,需要.NET CORE 3.1 Desktop SDK,因此需要VS2019,詳細使用方法請閱讀原作者的博客,
補充:現在博客園的Web Markdown編輯器已經可以支持直接Ctrl+C Ctrl+V上傳了,還能自動保存,體驗已經很不錯了(就差一個實時預覽了),本文就是使用Web編輯器撰寫而成,
資源
- 專案代碼原地址:MarkWord
- 原作者博客:twzy的博客園
- 我FORK的netcore分支:MarkWord
再次感謝原作者的優秀軟體!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247991.html
標籤:其他
