c# - डब्ल्यूपीएफ(एक्सएएमएल) कन्वर्ट एक्सपीएस दस्तावेज़ में कनवर्ट करें



wpf xaml (1)

दरअसल विभिन्न नमूनों के ढेर के साथ गड़बड़ करने के बाद, जिनमें से सभी अविश्वसनीय रूप से गठित होते हैं और दस्तावेज़ लेखकों, कंटेनर, प्रिंट कतार और प्रिंट टिकटों के उपयोग की आवश्यकता होती है, मुझे डब्ल्यूपीएफ में प्रिंटिंग के बारे में एरिक सिंक लेख मिला
सरलीकृत कोड केवल 10 लाइन लंबी है

public void CreateMyWPFControlReport(MyWPFControlDataSource usefulData)
{
  //Set up the WPF Control to be printed
  MyWPFControl controlToPrint;
  controlToPrint = new MyWPFControl();
  controlToPrint.DataContext = usefulData;

  FixedDocument fixedDoc = new FixedDocument();
  PageContent pageContent = new PageContent();
  FixedPage fixedPage = new FixedPage();

  //Create first page of document
  fixedPage.Children.Add(controlToPrint);
  ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
  fixedDoc.Pages.Add(pageContent);
  //Create any other required pages here

  //View the document
  documentViewer1.Document = fixedDoc;
}

मेरा नमूना काफी सरल है, इसमें पेज साइजिंग और ओरिएंटेशन शामिल नहीं है जिसमें मुद्दों का एक अलग सेट होता है जो काम नहीं करते हैं जैसा आप उम्मीद करेंगे। न ही इसमें कोई भी बचत कार्यक्षमता है क्योंकि एमएस दस्तावेज़ व्यूअर के साथ एक सहेजें बटन शामिल करना भूल गया है।

सहेजें कार्यक्षमता अपेक्षाकृत सरल है (और एरिक सिंक लेख से भी है)

public void SaveCurrentDocument()
{
 // Configure save file dialog box
 Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
 dlg.FileName = "MyReport"; // Default file name
 dlg.DefaultExt = ".xps"; // Default file extension
 dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension

 // Show save file dialog box
 Nullable<bool> result = dlg.ShowDialog();

 // Process save file dialog box results
 if (result == true)
 {
   // Save document
   string filename = dlg.FileName;

  FixedDocument doc = (FixedDocument)documentViewer1.Document;
  XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite);
  System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
  xw.Write(doc);
  xpsd.Close();
 }
}

तो जवाब हां है, आप एक मौजूदा डब्ल्यूपीएफ (एक्सएएमएल) नियंत्रण ले सकते हैं, इसे डाटाबेस कर सकते हैं और इसे एक्सपीएस दस्तावेज़ में बदल सकते हैं - और यह सब मुश्किल नहीं है।

क्या मैं एक मौजूदा डब्ल्यूपीएफ (एक्सएएमएल) नियंत्रण ले सकता हूं, इसे डाटाबेस कर सकता हूं और इसे एक एक्सपीएस दस्तावेज़ में बदल सकता हूं जिसे डब्ल्यूपीएफ एक्सपीएस दस्तावेज़ व्यूअर का उपयोग करके प्रदर्शित और मुद्रित किया जा सकता है? यदि हां, तो कैसे? यदि नहीं, तो मुझे एक्सपीएस / पीडीएफ / आदि का उपयोग करके डब्ल्यूपीएफ में 'रिपोर्टिंग' कैसे करना चाहिए?

असल में मैं एक मौजूदा WPF नियंत्रण लेना चाहता हूं, इसे इसमें उपयोगी डेटा प्राप्त करने के लिए डेटाबेस बनाएं और फिर इसे अंतिम उपयोगकर्ता के लिए प्रिंट करने योग्य और सहेजने योग्य बनाएं। आदर्श रूप से दस्तावेज़ निर्माण स्मृति में किया जाएगा और डिस्क को तब तक नहीं मारा जाएगा जब तक उपयोगकर्ता ने दस्तावेज़ को विशेष रूप से सहेजा नहीं है। क्या यह व्यवहार्य है?





xpsviewer