2011-05-25 94 views

回答

23

下面是我用來包裝pandoc的代碼。不幸的是,我還沒有看到任何其他體面的方法。

public string Convert(string source) 
{ 
    string processName = @"C:\Program Files\Pandoc\bin\pandoc.exe"; 
    string args = String.Format(@"-r html -t mediawiki"); 

    ProcessStartInfo psi = new ProcessStartInfo(processName, args); 

    psi.RedirectStandardOutput = true; 
    psi.RedirectStandardInput = true; 

    Process p = new Process(); 
    p.StartInfo = psi; 
    psi.UseShellExecute = false; 
    p.Start(); 

    string outputString = ""; 
    byte[] inputBuffer = Encoding.UTF8.GetBytes(source); 
    p.StandardInput.BaseStream.Write(inputBuffer, 0, inputBuffer.Length); 
    p.StandardInput.Close(); 

    p.WaitForExit(2000); 
    using (System.IO.StreamReader sr = new System.IO.StreamReader(
              p.StandardOutput.BaseStream)) 
    { 

     outputString = sr.ReadToEnd(); 
    } 

    return outputString; 
} 
+9

兩個小小的改變:「ASCIIEncoding.UTF8」應該是「Encoding.UTF8」,你可以用「p.WaitForExit(2000)」代替「Thread.Sleep(2000)」,如果進程退出,它將更快返回更早。 – 2012-10-03 12:29:36

4

我創建了一個庫Html2Markdown。用法很簡單。

var markdown = new Converter().Convert(html); 

哪裏html是要轉換的HTML的字符串表示。我積極支持並高興地接受捐款。