簡體   English   中英

如何將RTF字符串轉換為Markdown字符串(並反向轉換)(C#.NET Core或JS)

[英]How do I convert an RTF string to a Markdown string (and back) (C# .NET Core, or JS)

題:

如何在C#或JS中將RTF字符串轉換為Markdown字符串(並反向),理想情況下不包裝exe?


我有一個使用.NET的RichTextBox控件的舊產品。 使用它的表單將其輸出保存為Microsoft專有的RTF格式 這是它可以生成的輸出的一個小示例

{\\rtf1\\ansi\\ansicpg1252\\uc1\\htmautsp\\deff2{\\fonttbl{\\f0\\fcharset0 Times New Roman;}{\\f2\\fcharset0 GenericSansSerif;}}{\\colortbl\\red0\\green0\\blue0;\\red255\\green255\\blue255;}\\loch\\hich\\dbch\\pard\\plain\\ltrpar\\itap0{\\lang1033\\fs18\\f2\\cf0 \\cf0\\ql{\\f2 {\\ltrch Some content here }\\li0\\ri0\\sa0\\sb0\\fi0\\ql\\par}\r\n}\r\n}

我的C#.NET Core Web App必須能夠使用此存儲的RTF在網頁上顯示“富文本編輯器”,具有更新值的能力,並以舊版仍然可以使用的格式保存產品。

不幸的是,我在查找可以使用RTF作為輸入的現有/現代Web組件時遇到了麻煩。 大多數似乎使用markdown或自定義JSON格式。

理想情況下,我想:

  1. 使用以下任一方法將現有的RTF轉換為Markdown:
    • 服務器端,使用C#
    • 客戶端,使用JS
  2. 將Markdown與我發現的現有的Rich Text Editing Web組件之一一起使用。
  3. 保存后,在持久之前將Web組件的降價轉換為RTF

到目前為止,我已經嘗試過:

  • 按照此CodeProject的介紹來創建自定義RTF-> HTML轉換器: 編寫自己的RTF轉換器
    • 我可以使其在.NET Framework項目中工作,但不能在.NET Core中工作
  • 使用此NuGet軟件包: RtfPipe
    • 在.NET Core項目中引發空引用錯誤
  • 使用此節點模塊: rtf-to-html
    • 僅支持RTF的一小部分,創建整個HTML文檔,而不是字符串/子集,在我的特定示例中有問題

注意:我嘗試過的東西來自RTF-> HTML,因為我找不到適合RTF-> Markdown的任何東西。 我的希望是,如果必須的話,我可以做:RTF-> HTML-> Markdown(反之亦然)。

對不起,您在RtfPipe和.Net Core中使用的是空引用錯誤。 現在,在項目上記錄了這些錯誤的解決方案,其中涉及包括NuGet包System.Text.Encoding.CodePages和注冊代碼頁提供程序。

#if NETCORE
  // Add a reference to the NuGet package System.Text.Encoding.CodePages for .Net core only
  Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
#endif
var html = Rtf.ToHtml(rtf);

由於HTML在技術上是Markdown,因此您可以在此處停止。 否則,您也可以使用BracketPipe庫將HTML轉換為Markdown。 代碼看起來像。

using BracketPipe;
using RtfPipe;

private string RtfToMarkdown(string source)
{
  using (var w = new System.IO.StringWriter())
  using (var md = new MarkdownWriter(w))
  {
    Rtf.ToHtml(source, md);
    md.Flush();
    return w.ToString();
  }
}

Markdig是從Markdown到HTML的很好的庫。 但是,對於從HTML到RTF的獲取,我沒有任何好的建議。

免責聲明:我是RtfPipeBracketPipe開源項目的作者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM