博客園寫做利器MarkWord

不少年之前開始使用markdown寫博客的時候,當時博客園的web編輯器還不是那麼好用,就特別想有一個優秀的編輯器能夠直接發佈到博客園的。偶然間發現一個很是好用的MarkWord,能夠實現markdown本地編輯後發佈到遠程的功能,重點是實時預覽、圖片能夠直接Ctrl+C Ctrl+V,寫做的過程簡直縱享絲滑,不可謂不優秀!html

主要特性:git

  • 支持Markdown編寫實時預覽
  • 支持樣式自定義與切換
  • 支持圖片直接複製與粘貼
  • 支持一鍵發佈到博客園等支持metablog協議的網站
  • 支持自定義類別
  • 支持發佈到草稿

軟件的原理就很少說了,能夠理解爲經過編譯Markdownhtml,而後發佈;而後圖片複製和粘貼的原理就是保存到本地的一個臨時文件夾中,發佈的時候經過上傳API發佈上去。軟件的體驗很是好,我用了很長的一段時間。後來博客園官方對Markdown有了支持,這種編譯方式,會將style等內容一併嵌入,若是本身博客的style常常更換的,很容易形成樣式錯亂。我就一直琢磨,能不能不發佈Html內容,而轉爲直接發佈Markdown源碼呢?github

改造

翻看博客園官方的說明,經過meta發佈的時候,只要將分類設置爲[Markdown]就能夠支持直接發佈Markdown源。因而我簡單改造了一下,禁用了軟件各類style功能,純粹只發布Markdown,依然保留直接Ctrl+C Ctrl+V的功能。web

圖片上傳

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("![img](file:///{0})", System.Web.HttpUtility.UrlEncode(filePath).Replace("+", "%20"));
    //改造
    markEdit.textEditor.SelectedText = $"![img]({new Uri(filePath).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;

最終效果以下:
c#

當時也順便遷移了一下到.NET CORE,詳細內容請移步遷移WPF項目到.NET Core服務器

最終的程序代碼發佈到netcore分支,不過我只作了關鍵代碼的修改,我也用了好久了,編寫和發佈Markdown是沒有問題了,但其餘功能我也沒有試驗過,建議你們編寫博文的時候常常保存。markdown

使用說明

使用netcore分支,在release下直接編譯便可,須要.NET CORE 3.1 Desktop SDK,所以須要VS2019。詳細使用方法請閱讀原做者的博客dom

補充:如今博客園的Web Markdown編輯器已經能夠支持直接Ctrl+C Ctrl+V上傳了,還能自動保存,體驗已經很不錯了(就差一個實時預覽了),本文就是使用Web編輯器編寫而成。編輯器

資源

再次感謝原做者的優秀軟件!網站

相關文章
相關標籤/搜索