2011-09-03 180 views
5

我想找到一個可以從OpenXml生成PDF的SDK。我已經使用Open Xml Power Tools來轉換開放XML和HTML,並使用iTextSharp將Html解析爲PDF。但結果是一個非常可怕的PDF。從OpenXml生成PDF

我還沒有試過iText的RTF解析器。如果我朝這個方向發展,我將最終需要一個RTF轉換器,使簡單的轉換成爲雙重的噩夢。

它幾乎看起來像我可能最終編寫一個基於電力工具OpenXml到HTML轉換器的自定義轉換器。任何意見表示讚賞。因爲許可證太貴(Aspose Word/TxText),我真的在這個時候不能最終選擇專業轉換器。


我想我會在調查中多付出一些努力。我回到了轉換實用程序「http://msdn.microsoft.com/en-us/library/ff628051.aspx」並查看了代碼。鑑於它錯過的最大的事情是閱讀底層樣式並生成樣式屬性。由於沒有處理自定義的真實字體,PDF看起來好多了。明天再調查。我希望已經做了這樣的事情/面對奇怪的問題,並可以闡明一些道理。

 



    private static StringDictionary GetStyle(XElement el) 
    { 
     IEnumerable jcL = el.Elements(W.jc); 
     IEnumerable spacingL = el.Elements(W.spacing); 
     IEnumerable rPL = el.Elements(W.rPr); 

     StringDictionary sd = new StringDictionary(); 

     if (HasAttribute(jcL, W.val)) sd.Add("text-align", GetAttribute(jcL, W.val)); 

     // run prop exists 
     if (rPL.Count() > 0) 
     { 
      XElement r = rPL.First(); 
      IEnumerable ftL = el.Elements(W.rFonts); 

      if (r.Element(W.b) != null) sd.Add("font-weight", "bolder"); 
      if (r.Element(W.i) != null) sd.Add("font-style", "italic"); 
      if (r.Element(W.u) != null) sd.Add("text-decoration", "underline"); 
      if (r.Element(W.color) != null && HasAttribute(r.Element(W.color), W.val)) sd.Add("color", "#" + GetAttribute(r.Element(W.color), W.val)); 
      if (r.Element(W.rFonts) != null) 
      { 
       // 
       if(HasAttribute(r.Element(W.rFonts), W.cs)) sd.Add("font-family", GetAttribute(r.Element(W.rFonts), W.cs)); 
       else if (HasAttribute(r.Element(W.rFonts), W.hAnsi)) sd.Add("font-family", GetAttribute(r.Element(W.rFonts), W.hAnsi)); 
      } 
      if (r.Element(W.sz) != null && HasAttribute(r.Element(W.sz), W.val)) sd.Add("font-size", GetAttribute(r.Element(W.sz), W.val) + "pt"); 
     } 

     return sd.Keys.Count > 0 ? sd : null; 
    } 

 
+0

示例:http://msdn.microsoft.com/en-us/library/ff628051.aspx – Shrini

回答

1

我不知道用源代碼速效任何直接轉換,但是,是的,我的想法是,你可能需要從頭開始建立一個轉換器。幸運的是(我猜),Word的WordprocessingML中是最簡單的Open XML格式,你可以看看其他項目尋找靈感,比如:

  1. TextGlow - 字Silverlight的轉換器
  2. Word to XAML Converter - Word中XAML轉換器(可能是非常 類似於上面TextGlow)
  3. OpenXML-DAISY - 轉化成菊花
  4. ODF Converter - 轉換從/到OpenOffice格式和處理OpenXML
  5. 的XHTML溶液你已經引用Eric White了。

對於商業&服務器端解決方案,您可以使用Word Automations Services(需要SharePoint)或Apose.NET Words

+0

我將word自動化作爲pdf輸出的最終結果。 itextsharp在轉換方面做得非常差,尤其是從HTML轉換而來。謝謝。 – Shrini