2011-09-03 177 views
5

OpenXmlからPDFを生成できるSDKを探しています。 Open XML Power Toolsを使用してオープンXMLとHTMLを変換し、iTextSharpを使用してHTMLをPDFに解析しました。しかし、結果は非常にひどい見た目のPDFです。OpenXmlからPDFを生成

私はまだiTextのRTFパーサーを試していません。私がこの方向に向かうと、私はRTFコンバータを必要とし、単純な変換を2段階の悪夢にします。

私は結局、パワーツールOpenXmlをベースにしたカスタムコンバータをhtmlコンバータに書き込むかもしれないようです。どんな助言も高く評価されます。私は本当にこの時点では、ライセンスが高価すぎるのでプロのコンバータのために行くことができない(Aspose Word/TxText)。


私は調査にもっと力を入れたいと思っていました。私は変換ユーティリティ "http://msdn.microsoft.com/en-us/library/ff628051.aspx"に戻り、そのコードを調べました。欠落していた最大の事は、基本となるスタイルを読み込んでスタイル属性を生成することでした。カスタムのTrueTypeフォントを扱わないという制限があるため、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 - WordはSilverlightのコンバータへ
  2. Word to XAML Converter - XAMLコンバータへのWordデイジー
  3. ODF Converterへの変換は - - から/ OpenOfficeのフォーマットに変換し、OpenXMLの
  4. XHTML溶液
  5. OpenXML-DAISYを(おそらく非常に類似 は上記TextGlowします)あなたが既に参照しているEric White商用&サーバー側のソリューションについては

、あなたはWord Automations Servicesする(SharePointが必要)またはApose.NET Wordsのいずれかを使用することができます。

+0

pdf出力の最終版としてワードオートメーションを使用しました。 itextsharpは特にHTMLからの変換の仕事が非常に貧弱です。ありがとう。 – Shrini