2009-05-06 14 views
8

में कनवर्ट करने के लिए कैसे करें मैंने डेटाबेस में बाइट [] के रूप में फ़्लॉउड दस्तावेज़ सहेजने के लिए एक WPF RichTextBox का उपयोग किया है। अब मुझे इस डेटा को पुनः प्राप्त करने और एक RTT के रूप में RichTextBox की रिपोर्ट में प्रदर्शित करने की आवश्यकता है। जब मैं टेक्स्टटेेंज या XAMLReader का उपयोग करके बाइट [] को कन्वर्ट करने का प्रयास करता हूं तो मुझे फ्लो डॉक्यूमेंटर वापस मिल जाता है लेकिन मैं इसे आरटीएफ स्ट्रिंग में कैसे परिवर्तित करूं क्योंकि रिपोर्ट रिचटेक्स्टबॉक्स केवल आरटीएफ लेता है।FlowDocument को आरटीएफ

धन्यवाद

अरविंद

+0

शायद आप एक कोड नमूना प्रदान कर सकते हैं? आपके कोड और पीटर के उत्तर के बीच क्या अंतर है (जो एमएसडीएन के अनुसार काम करने योग्य लगता है)? –

उत्तर

25

आप FlowDocument सीधे रूप में यह दस्तावेज़ के क्रम प्रतिनिधित्व, न कि वास्तविक दस्तावेज़ सामग्री विचार किया जाना चाहिए जारी रहती है नहीं करना चाहिए। इसके बजाय, Rtf सहित विभिन्न प्रारूपों में सहेजें और लोड करने के लिए the TextRange class का उपयोग करें।

कैसे एक चयन बना सकते हैं और एक धारा को बचाने के लिए पर एक त्वरित नमूना:

var content = new TextRange(doc.ContentStart, doc.ContentEnd); 

if (content.CanSave(DataFormats.Rtf)) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     content.Save(stream, DataFormats.Rtf); 
    } 
} 

एक चयन में सामग्री लोड करने के लिए समान होगा:

var content = new TextRange(doc.ContentStart, doc.ContentEnd); 

if (content.CanLoad(DataFormats.Rtf)) 
{ 
    content.Load(stream, DataFormats.Rtf); 
} 
+0

आपके responce के लिए धन्यवाद लेकिन मैंने इस विधि को आजमाया है और यह पाठ में बनाए गए स्वरूप को सहेजता नहीं है (यानी टेक्स्ट बोल्ड बदलते रंग को बनाते हुए), मुझे प्रारूप को सहेजने की भी आवश्यकता है ताकि मैं इसे फ्लोडोड्यूमेंट –

2

यह मेरे लिए एक आकर्षण की तरह काम करता । कठिनाइयों के बिना एक आरटीएफ बॉक्स में परिणाम प्रदर्शित करता है।

public static string getDocumentAsXaml(IDocumentPaginatorSource flowDocument) 
{ 
    return XamlWriter.Save(flowDocument); 
} 
-3
Using conn As New System.Data.SqlClient.SqlConnection(connectionSTRING) 
     Dim adapter As New System.Data.SqlClient.SqlDataAdapter(selectSTRING, conn) 
     Dim DS As System.Data.DataSet = New System.Data.DataSet 
     adapter.Fill(DS) 

     Dim ba() As Byte = Text.Encoding.ASCII.GetBytes(DS.Tables(0).Rows(0)("RTF_Field").ToString()) 

     Dim ms As MemoryStream = New MemoryStream(ba) 
     Dim fd As FlowDocument = New FlowDocument 
     Dim tr As TextRange = New TextRange(fd.ContentStart, fd.ContentEnd) 
     tr.Load(ms, System.Windows.DataFormats.Rtf) 
     ms.Close() 

      RichTextBox.Document = fd 

     End Using 

आप अपने कनेक्शन स्ट्रिंग & एसक्यूएल का चयन करें बयान ... उसके अलावा का उपयोग करने की आवश्यकता होगी, यह है ...

+2

के रूप में सहेज सकूं समझाओ कि आपके कोड का कौन सा हिस्सा समस्या हल करता है? –

+1

वह समस्या का समाधान नहीं करता है। कोड बस एक बाइनरी डेटाबेस फ़ील्ड (ASCII>। <) से एक आरटीएफ स्ट्रिंग पढ़ता है, और उसके बाद इसे आरटीएफ के रूप में प्रवाह दस्तावेज़ में लोड करता है। – BrainSlugs83

+0

स्वीकृत उत्तर: आरटीएफ सहित विभिन्न प्रारूपों में सहेजें और लोड करने के लिए टेक्स्टरेंज क्लास का उपयोग करें। – user1359009

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