2011-11-22 28 views
8

मैं एक System.Window.Controls.PrintDialog है और मैं एक PrintTicket साथ में लैंडस्केप मोड और पोर्ट्रेट मोड के साथ पृष्ठों प्रिंट करना चाहते हैं, लेकिन यह मैं केवल उन्मुखीकरण एक बार सेट कर सकते हैं लगता है।लैंडस्केप साथ PrintDialog और पोर्ट्रेट पृष्ठों

जब तक मैं कागज पर प्रिंट करना चाहता हूं, यह एक बड़ा सौदा नहीं हो सकता है लेकिन मैं अपने प्रिंटबॉज से एक पीडीएफ दस्तावेज प्रिंट/बनाना चाहता हूं। वहां मुझे ओएनसी दस्तावेज़ में लैंडस्केप और पोर्ट्रेट मोड वाले पृष्ठों की आवश्यकता है।

अब तक मैं लैंडस्केप पेज 90 डिग्री घुमाने में कामयाब रहा हूं और यह ठीक काम करता है लेकिन प्रिंटप्रवेव में घुमावदार सामग्री के कारण यह बहुत अजीब लग रहा है।

+1

क्या आपको कभी ऐसा करने का कोई तरीका मिला है? मैं इसे एक ही कारण (मिश्रित चित्र/परिदृश्य पृष्ठों के साथ पीडीएफ में प्रिंट करना) के लिए ऐसा करने में सक्षम होना चाहता हूं, और इसे काम करने का एक तरीका नहीं पता है। – markmuetz

+1

कोई जवाब नहीं, लेकिन एक परियोजना में काम किया जहां इसकी आवश्यकता भी थी। शोध के दिनों के बाद मैंने आपके जैसा ही किया। हालांकि, एक एक्सपीएस दस्तावेज़ कागज अभिविन्यास को सही करने में सक्षम है (जैसा कि एमएस वर्ड से एक्सपीएस तक निर्यात करते समय देखा जाता है)। अभी भी यह देखने का इंतजार है कि यह कैसे किया जाता है। – NestorArturo

उत्तर

1

जितना चाहें उतना साफ और अधिक कामकाज नहीं, लेकिन मुझे लगता है कि यह आपके लक्ष्य को पूरा कर सकता है। आप कई प्रिंट नौकरियों के बाद पीडीएफ को एक साथ जोड़ने के लिए iTextSharp लाइब्रेरी का उपयोग कर सकते हैं। यहां कुछ sample code है।

उम्मीद है कि कोई अधिक सीधे आगे समाधान के साथ आता है।

1

एक लंबे समय के बाद ...

आप एक eventhandler कि कहा जाता हो जाता है, एक कस्टम PrintTicket के लिए पूछ उपलब्ध कराने के प्रत्येक पृष्ठ मुद्रित करने से पहले ऐसा कर सकते हैं। पेजव्यूमोडेल में प्रभावी रूप से

PageViewModel{ 
    Page Page {get;set;} 
    PageOrientation? PageOrientation {get;set} 
} 

if (PrintDialog.ShowDialog() == true) 
    { 
    XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(PrintDialog.PrintQueue); 
    xpsDocumentWriter.WritingPrintTicketRequired += (s, e) => 
    { 
     PageViewModel pVM = publicationVM.Pages[e.Sequence - 1]; 
     if (pVM.Orientation != null && pVM.Orientation != publicationVM.Orientation) 
     { 
     e.CurrentPrintTicket = new PrintTicket(); 
     e.CurrentPrintTicket.PageOrientation = PageOrientation.Portrait; 
     } 
    }; 
    VisualsToXpsDocument visualsToXpsDocument = (VisualsToXpsDocument) xpsDocumentWriter.CreateVisualsCollator(PrintDialog.PrintTicket, PrintDialog.PrintTicket); 
    visualsToXpsDocument.BeginBatchWrite(); 
    Page page; 
    foreach (PageViewModel pVM in publicationVM.Pages) 
    { 
     page = pVM.Page; 
     visualsToXpsDocument.Write(page); 
    } 
    visualsToXpsDocument.EndBatchWrite(); 
    } 

और बिंगो शामिल हैं! मिश्रित पोर्ट्रेट और लैंडस्केप। यह डुप्लेक्सिंग भी ठीक है।

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