2010-02-26 14 views
11

में कुछ प्रिंट करने योग्य बनाना बस सोच रहा है कि कोई मुझे मुद्रण के लिए फाइल बनाने के लिए एक सरल तरीके से बता सकता है? फिलहाल मैं सिर्फ HTML को स्क्रिप्ट कर रहा हूं, लेकिन मुझे आश्चर्य है कि ऐसा करने का कोई आसान तरीका नहीं है जो मुझे मुद्रित किए जाने पर अधिक नियंत्रण देगा? एक्सेस प्रिंटआउट, या एक्सेल प्रिंटआउट की लाइनों के साथ कुछ - जहां मैं निर्णय ले सकता हूं कि चीजों को कैसे रखना है और प्रोग्रामिंग के माध्यम से विवरण "मेल मर्ज करें"।सी #

असल में, मैं प्रिंट के लिए कुछ बनाना चाहता हूं जिसमें इसे घेरने वाली टेबल हो सकती है, और विदेशी कुंजी की संख्या के आधार पर प्रत्येक रिकॉर्ड के लिए लंबा या छोटा हो सकता है (उदाहरण के लिए एक कर्मचारी सदस्य के पास 10 नौकरियां हो सकती हैं, या सिर्फ 3 मैं एक ऐसा दस्तावेज़ बनाना चाहता हूं जो उत्पन्न और प्रिंट करेगा)।

कोई विचार/सलाह/राय? धन्यवाद!

संपादित करें: वाह, सभी प्रतिक्रियाओं के लिए धन्यवाद! इस विशेष कार्य के लिए, फ्लो डॉक्यूमेंट्स जो वास्तव में मैं वास्तव में हूं उसके सबसे नज़दीकी प्रतीत होता है, इसलिए मैं इसके साथ खेलूँगा। किसी भी तरह से मेरे पास अब कई वाकई अच्छे विकल्प हैं।

संपादित 2: कुछ खेलने के बाद, iTextSharp मेरे लिए पसंद बन गया है। भविष्य में सोचने वाले किसी के लिए, यहां एक महान और सरल ट्यूटोरियल का एक लिंक है: http://www.mikesdotnetting.com/Category/20

धन्यवाद फिर से!

उत्तर

8

मैं एक पीडीएफ फ़ाइल तैयार करूंगा जिसे लगभग कहीं भी देखा जा सकता है और स्वरूपण बनाए रखेगा। यहां एक नज़र डालें: http://itextsharp.sourceforge.net/

0

यदि आप दस्तावेज़ बनाने के लिए एक बहुत ही सरल तरीका ढूंढ रहे हैं (सबसे अच्छा नहीं है, लेकिन यह सुनिश्चित करना आसान है), तो आप बुकमार्क्स के साथ वर्ड डॉक्स सेट अप कर सकते हैं और बुकमार्क में डेटा डाल सकते हैं through code, इसलिए मैं इस अनुमान लगा रहा हूँ Excel के लिए भी काम करेगा (वे बुकमार्क हों तो?):

संपादित करें: यहाँ ग # में एक त्वरित अनुवाद है (vb में नहीं सी # परीक्षण किया गया है, लेकिन):

Word.Application oWord = default(Word.Application); 
Word.Document oDoc = default(Word.Document); 

oWord = Interaction.CreateObject("Word.Application"); 
oWord.Visible = false; 

oDoc = oWord.Documents.Add(Directory + "\\MyDocument.dot"); 

oDoc.Bookmarks("MyBookmark").Range.Text = strBookmark; 

oDoc.PrintOut(); 
oDoc.Close(Word.WdSaveOptions.wdDoNotSaveChanges); 
oDoc = null; 
oWord.Application.Quit(); 
oWord = null; 
+0

हाँ, लेकिन कभी कभी आप Office स्थापित नहीं चाहता ... खासकर यदि आपके सर्वर मक्खी पर डॉक्स प्रतिपादन किया जाता है: उदाहरण); यह पीडीएफ फ़ाइल प्रारूपित, मेरे उदाहरण मैं मूल का उपयोग में विकल्पों में से बहुत कुछ । –

+0

अपने प्रश्न में उन्होंने कहा "एक्सेस प्रिंटआउट या एक्सेल प्रिंटआउट की लाइनों के साथ" तो मुझे लगता है कि उनके पास कार्यालय है। मुझे पता है कि यह पसंदीदा तरीका नहीं है, लेकिन अगर आपको वास्तव में कुछ जल्दी से फेंकने की ज़रूरत है (जैसे 5 मिनट में) इससे यह बहुत आसान हो जाता है। –

+1

सी # में शब्द दस्तावेज़ अब वीबी की तुलना में कहीं अधिक कठिन हैं। मैं सी # 4 रिलीज तक इंतजार करूंगा क्योंकि यह इसके लिए बेहतर समर्थन प्रदान करने का वादा करता है। –

3

हम वर्तमान में पीडीएफएसआरपी का उपयोग बड़ी सफलता के साथ कर रहे हैं -

http://www.pdfsharp.com/PDFsharp/

GDI + या WPF ... सभी .NET, नहीं कॉम या इंटरॉप।

ओह, और इसका खुला स्रोत। यहां कुछ नमूना कोड है -

http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx

4

वहाँ हमेशा FlowDocuments है। एमएसडीएन http://msdn.microsoft.com/en-us/library/aa970909.aspx पर अवलोकन देखें और देखें कि क्या वे मेल खाते हैं जो आप करना चाहते हैं। वे प्रिंट करने के लिए बहुत आसान हैं और xaml के लिए serialized किया जा सकता है। ठीक वही नहीं हो सकता है जो आप बाद में हैं, लेकिन वे बहुत उपयोगी हैं।

+0

+1 फ़्लो डॉक्स में मुझे पेश करने के लिए +1! –

+0

मेरे अलावा प्लस भी! यह बहुत अच्छा उपकरण है!मुझे नहीं पता कि डब्ल्यूपीएफ में यह एक है! – netmajor

0

एक्सपीएस संरचित और स्वरूपित दस्तावेज़ों को मुद्रित करने के लिए एमएसएफटी का समाधान है। मैं एक्सपीएस फ्रेमवर्क के माध्यम से प्रिंटिंग के लिए .NET समर्थन का उपयोग करने के लिए, किसी को एक एक्सपीएस भेजने के लिए नहीं कह रहा हूं।

http://roecode.wordpress.com/2007/12/21/using-flowdocument-xaml-to-print-xps-documents/

यदि आप WPF कर रहे हैं करने के लिए बहुत आसान है। अनिवार्य रूप से एक एक्सपीएस एमएसएफटी का पीडीएफ है। Vista या 7 चलाने वाला कोई भी व्यक्ति उन्हें ठीक/प्रिंट कर सकता है।

+5

यह कहना एक सुंदर बोल्ड स्टेटमेंट है कि एक्सपीएस सबसे अच्छा तरीका है या यहां तक ​​कि पसंदीदा तरीका भी है। मैं पूरी तरह से असहमत हूँ! पीडीएफ, मेरी राय में, इसकी प्लेटफॉर्म आजादी और अधिक व्यापक उपयोग के कारण पसंदीदा तरीका है। जबकि एक्सपीएस विस्टा और 7 उपयोगकर्ताओं के लिए लक्ष्य पूरा करेगा, यह सबसे अच्छा तरीका नहीं है। –

+0

हालांकि एक्सपी, मैक, या लिनक्स पर शुभकामनाएं। – jvenema

+6

मुझे नहीं लगता कि मैंने कभी भी किसी से एक्सपीएस दस्तावेज़ प्राप्त या डाउनलोड किया है। कभी। यह आमतौर पर है: "ओह बकवास, मैंने बस माइक्रोसॉफ्ट एक्सपीएस दस्तावेज़ लेखक को क्यूटपीडीएफ की बजाय गलती से मुद्रित किया।" – Pwninstein

0

मैंने एक्सेल एक्सएमएल प्रारूप का उपयोग कर वेब साइटों से प्रिंटआउट बनाए हैं।असल में इसका मतलब है कि आपको दस्तावेज़ उत्पन्न करने के लिए Office API का उपयोग करने की आवश्यकता नहीं है (जो बोझिल हो सकता है और वेब सर्वर पर अतिरिक्त पुस्तकालयों की आवश्यकता है)। इसके बजाय, आप टेम्पलेट में अपना डेटा डालने के लिए बस एक्सएमएल टेम्पलेट ले सकते हैं, XPath, LINQ से XML, या अन्य तकनीकों का उपयोग कर सकते हैं और फिर इसे उपयोगकर्ता को स्ट्रीम कर सकते हैं और वे इसे प्रिंट कर सकते हैं।

टेम्पलेट जेनरेट करना आसान है। आप दस्तावेज़ बनाने के लिए Excel का उपयोग करते हैं और फिर इसे "एक्सएमएल स्प्रेडशीट" प्रारूप में सहेजते हैं। एक्सएमएल थोड़ा दमनकारी है लेकिन यह भयानक नहीं है। एक्सएमएल स्प्रेडशीट प्रारूप पर

प्रलेखन यहाँ है:
http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx

ध्यान दें कि प्रलेखन एक्सेल 2002 प्रारूप एक्सेल के नए संस्करण में बदल जाती है के लिए है, लेकिन यह पीछे की ओर संगत है।

0

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

1

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

आपको कुछ ऐसा चाहिए जो आप टेम्पलेट को डिज़ाइन कर सकते हैं और बस रिक्त स्थान भर सकते हैं, इसलिए मेरा सुझाव है कि आप या तो वर्ड या एक्सेल ऑटोमेशन के लिए जाएं, अन्यथा कुछ हल्के रिपोर्ट जनरेशन लाइब्रेरी को देखें। मैं इस पर आ गया हूं और शायद यह भी जांचने लायक है। http://www.fyireporting.com/

0

मैं शब्द और अतीत में पीडीएफ पीढ़ी बातें और pdfsharp में पीडीएफ पीढ़ी के लिए समर्थन (@Kris) किया है बहुत अच्छी है और मैं इसे कार्यालय स्वचालन के आगे का प्रयोग करेंगे।

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

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

1

डेविड मैंने भी पाठ पाठ की सिफारिश की;) इसके साथ पीडीएफ दस्तावेज बनाना आसान है;) मैं इसे एएसपी.नेट परियोजना में उपयोग करता हूं।

string file = @"d:\print.pdf"; //path to pdf file 
    Document myDocument = new Document(PageSize.A4.Rotate());   
    PdfWriter.GetInstance(myDocument, new FileStream(file, FileMode.Create)); 
    myDocument.Open(); 
    //data to save in pdf- unimportant! 
    Opiekun obiekun = (from opiekunTmp in db.Opiekuns where opiekunTmp.idOpiekun == nalez.Dziecko.idOpiekun select opiekunTmp).SingleOrDefault(); 
    Dziecko dzieckoZap = (from dzieckoTmp in db.Dzieckos where dzieckoTmp.idDziecko == nalez.idDziecko select dzieckoTmp).SingleOrDefault(); 
    //some info about font 
    BaseFont times = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.EMBEDDED); 
    Font font = new Font(times, 12); 
    myDocument.Add(new Paragraph("--------------------------Raport opłaty--------------------------",font)); 
    myDocument.Add(new Paragraph("Data rozliczenia: " + (((TextBox)this.GridViewOplaty.Rows[e.RowIndex].Cells[8].Controls[0]).Text), font)); 
    myDocument.Add(new Paragraph("Płatnik: " + obiekun.Imie + " " + obiekun.Nazwisko, font)); 
    myDocument.Add(new Paragraph("Dziecko: " + dzieckoZap.Imie + " " + dzieckoZap.Nazwisko, font)); 
    myDocument.Add(new Paragraph("")); 
    myDocument.Add(new Paragraph("Data    Podpis płatnika: " + obiekun.Imie + " " + obiekun.Nazwisko, font)); 
    myDocument.Add(new Paragraph("")); 
    myDocument.Add(new Paragraph(" ...........  .................................")); 
    myDocument.Close(); //we close the pdf and open 
    System.Diagnostics.Process.Start(file); //and open our file if You want that ;)