2011-09-03 12 views
5

से पीडीएफ जेनरेट करना मैं एक एसडीके खोजने की कोशिश कर रहा हूं जो ओपनएक्सएमएल से पीडीएफ उत्पन्न कर सकता है। मैंने ओपन एक्सएमएल पावर टूल्स का इस्तेमाल ओपन एक्सएमएल और एचटीएमएल और एचटीएमएल को पीडीएफ में पार्स करने के लिए iTextSharp का उपयोग करने के लिए किया है। लेकिन परिणाम एक बहुत ही भयानक दिखने वाला पीडीएफ है।ओपनएक्सएमएल

मैंने अभी तक iText के आरटीएफ पार्सर की कोशिश नहीं की है। अगर मैं इस दिशा में जाता हूं, तो मुझे एक आरटीएफ कनवर्टर की आवश्यकता समाप्त हो जाएगी, जिससे सरल रूपांतरण एक डबल कदम दुःस्वप्न बन जाएगा।

ऐसा लगता है कि मैं पावर टूल्स ओपनएक्सएमएल से एचटीएमएल कनवर्टर के आधार पर एक कस्टम कनवर्टर लिखना समाप्त कर सकता हूं। किसी भी सलाह की सराहना की है। मैं वास्तव में इस समय पेशेवर कनवर्टर के लिए नहीं जा सकता क्योंकि लाइसेंस बहुत महंगा हैं (Aspose Word/TxText)।


मैंने सोचा कि मैं अपनी जांच में कुछ और प्रयास करूंगा। मैं रूपांतरण उपयोगिता पर वापस गया "http://msdn.microsoft.com/en-us/library/ff628051.aspx" और इसके कोड को देखा। इसे छोड़कर सबसे बड़ी चीज को देखते हुए अंतर्निहित शैलियों को पढ़ना और शैली विशेषता उत्पन्न करना था। पीडीएफ कस्टम सच्चे प्रकार के फ़ॉन्ट को संभालने की सीमा के साथ बहुत बेहतर दिखता था। कल और जांच मुझे उम्मीद है कि इस तरह के कुछ अजीब मुद्दों का सामना करना पड़ा है और कुछ प्रकाश डाला जा सकता है।

 



    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

मैं स्रोत-कोड availabe साथ कोई सीधा कनवर्टर के बारे में पता नहीं है, लेकिन हाँ, मेरे विचार है कि आप स्क्रैच से एक कनवर्टर का निर्माण करने की आवश्यकता हो सकती है है। सौभाग्य से (मुझे लगता है), वर्ड WordprocessingML ओपन XML स्वरूप का सबसे सरल है और आप इस तरह के रूप प्रेरणा के लिए अन्य परियोजनाओं, करने के लिए देख सकते हैं:

  1. TextGlow - शब्द सिल्वरलाइट कनवर्टर करने के लिए
  2. Word to XAML Converter - XAML कनवर्टर करने के लिए वर्ड (शायद बहुत समान ऊपर TextGlow को)
  3. OpenXML-DAISY - डेज़ी
  4. ODF Converter करने के लिए रूपांतरण - कन्वर्ट से/OpenOffice प्रारूप करने के लिए और OpenXML
  5. एक्सएचटीएमएल समाधान एरिक व्हाइट द्वारा आप पहले ही संदर्भित हैं।

वाणिज्यिक & सर्वर साइड समाधान के लिए, आप उपयोग कर सकते हैं या तो Word Automations Services या Apose.NET Words (SharePoint आवश्यकता है)।

+0

मैंने पीडीएफ आउटपुट के लिए फाइनल के रूप में शब्द स्वचालन रखा। itextsharp विशेष रूप से एचटीएमएल से रूपांतरण का बेहद खराब काम करता है। धन्यवाद। – Shrini

संबंधित मुद्दे