2009-11-04 15 views
6

ग्रीटिंग्स, मुझे डब्ल्यूपीएफ में प्रिंटिंग में समस्या है। मैं एक प्रवाह दस्तावेज़ बना रहा हूं और उस प्रवाह दस्तावेज़ में कुछ नियंत्रण जोड़ रहा हूं। प्रिंट पूर्वावलोकन ठीक काम करता है और मुझे प्रिंट पूर्वावलोकन विंडो से प्रिंटिंग में कोई समस्या नहीं है। समस्या तब मौजूद है जब मैं प्रिंट पूर्वावलोकन के बिना सीधे प्रिंटर पर प्रिंट करता हूं। लेकिन क्या आश्चर्य की बात है - जब मैं प्रिंटर के रूप में एक्सपीएस दस्तावेज़ राइटर का उपयोग करता हूं तो ठीक है, जब मैं कुछ भौतिक प्रिंटर का उपयोग करता हूं, तो मेरे प्रवाह दस्तावेज़ पर कुछ नियंत्रण प्रदर्शित नहीं होते हैं। अग्रिम धन्यवादडब्ल्यूपीएफ प्रिंटिंग फ्लो दस्तावेज़

+4

नमस्ते, मैं सुलझाया है में पाया गया कि बंधन और प्रिंटर के दस्तावेज़ भेजने एसिंक्रोनस रूप से संचालन कर रहे हैं। इसलिए मैंने बीएस्टोलनिट्ज़ लेख के आधार पर डब्ल्यूपीएफ में एक एप्लाइक्शन। डूवेन्ट्स() समकक्ष बनाया। इसने समस्या को हल किया http://bea.stollnitz.com/blog/index.php?s=doevents –

+0

उपर्युक्त टिप्पणी में लिंक अब काम नहीं करता है, लेकिन साइट पर आस-पास खोदने के लिए जो इसे रीडायरेक्ट करता है DoEvents दृष्टिकोण के साथ आलेख: http://www.zagstudio.com/blog/493#.UegOCo1dyaI –

उत्तर

1

XPS दस्तावेज़ एक समस्या

0

मैं एक बात पर ध्यान दिया है बिना मुद्रित किया जा सकता: टिप: नियंत्रण होता है जो प्रदर्शित नहीं होते हैं नियंत्रण मैं कुछ डेटा बाइंडिंग रहा है, इसलिए निष्कर्ष है कि है बाध्यकारी काम नहीं करता है। क्या यह मामला हो सकता है कि दस्तावेज़ को प्रिंटर पर भेजने से पहले बाध्यकारी निष्पादित नहीं हो रहा है?

+0

पीटर, स्टैक ओवरफ्लो के लिए उपयोग टिप - यदि आप जानकारी जोड़ना चाहते हैं तो आपको अपना मूल प्रश्न संपादित करना चाहिए, "उत्तर" पोस्ट न करें। आम तौर पर यदि आप किसी विशेष उत्तर का जवाब देना चाहते हैं तो एक टिप्पणी का उपयोग करें (हम्म, सिवाय इसके कि आप अभी तक सक्षम नहीं हो सकते हैं!) – Murph

+0

ठीक है, अब से मैं ऐसा करूँगा, टिप –

4

ध्यान देने योग्य महत्वपूर्ण बात: आप सीधे भौतिक प्रिंटर पर प्रिंट करते समय XpsDocumentWriter का उपयोग कर सकते हैं। गलती मत करो मैंने इसे टालने से किया क्योंकि आप एक .xps फ़ाइल नहीं बना रहे हैं!

वैसे भी - मुझे यह वही समस्या थी, और DoEvents() हैक में से कोई भी काम नहीं कर रहा था। मैं उन्हें पहले स्थान पर उपयोग करने के बारे में भी विशेष रूप से खुश नहीं था। मेरी स्थिति में कुछ डेटाबेस नियंत्रण ठीक मुद्रित थे, लेकिन कुछ अन्य (नेस्टेड UserControls) नहीं किया था। ऐसा लगता है कि केवल एक 'स्तर' डाटाबेस हो रहा था और शेष 'DoEvents()' हैक के साथ भी बाध्य नहीं होंगे।

हालांकि समाधान सरल था। इस तरह XpsDocumentWriter का प्रयोग करें। यह एक संवाद खुल जाएगा जहां आप जो भी भौतिक प्रिंटर चाहते हैं उसे चुन सकते हैं।

 // 8.5 x 11 paper 
     Size sz = new Size(96 * 8.5, 96 * 11); 

     // create your visual (this is a WPF UserControl) 
     var template = new PackingSlipTemplate() 
     { 
      DataContext = new PackingSlipViewModel(order) 
     }; 

     // arrange 
     template.Measure(sz); 
     template.Arrange(new Rect(sz)); 
     template.UpdateLayout(); 

     // print to XpsDocumentWriter 
     // this will open a dialog and you can print to any installed printer 
     // not just a 'virtual' .xps file 
     PrintDocumentImageableArea area = null; 
     XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(ref area,); 

     xps.Write(template); 

मैं 'Programming WPF' Printing - found through Google Books पर अपने अध्याय के साथ काफी उपयोगी पर जहाजों पुस्तक मिली।


यदि आप प्रिंट संवाद नहीं दिखाना चाहते हैं, लेकिन सीधे डिफ़ॉल्ट प्रिंटर पर प्रिंट करना चाहते हैं तो आप निम्न कार्य कर सकते हैं। (मेरे लिए आवेदन एक गोदाम पर्यावरण में पैकिंग पर्ची मुद्रित करना है - और मैं हर बार एक संवाद पॉप अप नहीं करना चाहता)। समस्या

 var template = new PackingSlipTemplate() 
     { 
      DataContext = new PackingSlipViewModel(orders.Single()) 
     }; 

     // arrange 
     template.Measure(sz); 
     template.Arrange(new Rect(sz)); 
     template.UpdateLayout(); 

     LocalPrintServer localPrintServer = new LocalPrintServer(); 
     var defaultPrintQueue = localPrintServer.DefaultPrintQueue; 

     XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(defaultPrintQueue); 
     xps.Write(template, defaultPrinter.DefaultPrintTicket); 
+0

के लिए धन्यवाद एक समान समस्या थी और यह किया इस मुद्दे को ठीक नहीं करें। –

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