से पीडीएफ जेनरेट करना मैं एक एसडीके खोजने की कोशिश कर रहा हूं जो ओपनएक्सएमएल से पीडीएफ उत्पन्न कर सकता है। मैंने ओपन एक्सएमएल पावर टूल्स का इस्तेमाल ओपन एक्सएमएल और एचटीएमएल और एचटीएमएल को पीडीएफ में पार्स करने के लिए 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;
}
नमूना: http://msdn.microsoft.com/en-us/library/ff628051.aspx – Shrini