2009-06-19 19 views
5

हमारे पास एक ऐसा एप्लिकेशन है जो मूल रूप से फाइलों को संग्रहित करता है और हम उपयोगकर्ता को इन फ़ाइलों को प्रिंट करने की संभावना देते हैं। वे .txt, .doc, .pdf, .jpg कुछ भी फैंसी नहीं हो सकते हैं। क्या इन फ़ाइलों को प्रिंटर पर आगे भेजने के बिना एक .NET तरीका है, यानी उन्हें खोलना?.NET: फ़ाइलों को प्रिंट करने के लिए उन्हें कैसे प्रिंट करें

मैं पहले से ही StartInfo.Verb = "प्रिंट"

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.CreateNoWindow = true; 
p.StartInfo.FileName = fileName; 
p.StartInfo.Verb = "print" 
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden 

p.Start(); 

यह अभी भी फ़ाइल है जो मैं नहीं चाहता खोलता है के साथ एक प्रक्रिया बनाने की कोशिश की। क्या कोई मदद कर सकता है?

किसी भी मदद की सराहना की जाएगी। टोबी

+0

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

उत्तर

6

मेरी समझ यह है कि जब आप प्रिंट करते हैं तो अधिकांश ऐप्स खुलेंगे (यहां तक ​​कि संक्षेप में)। एक एमएस वर्ड दस्तावेज़ पर राइट-क्लिक करने और प्रिंट मारने का प्रयास करें। आप Word को खुले, प्रिंट और बंद कर देंगे।

लेकिन, आप अपने कोड में जोड़ने के लिए प्रक्रिया छिपा रखने के लिए और काम पूरा हो बंद करने के लिए चाहते हो सकता है:

p.Start(); 
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
if (p.HasExited == false) 
{ 
    p.WaitForExit(10000); 
} 

p.EnableRaisingEvents = true; 
p.CloseMainWindow(); 
p.Close(); 
2

आप कैसे सुझाव देते हैं कि Windows किसी फ़ाइल को प्रिंट किए बिना किसी फ़ाइल को मुद्रित करने का प्रबंधन करता है जो इसे संभालने के बारे में जानता है?

मुझे नहीं लगता कि (क jpg या एक doc, या यहाँ तक) यह करने के लिए, बस क्योंकि विंडोज पता नहीं है क्या एक pdf है एक तरह से है।

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

+0

अच्छा बिंदु, धन्यवाद। क्या यह सचमुच छिपाने के लिए कोई रास्ता है? – Tobias

+0

मुझे लगता है कि आपको प्रत्येक प्रारूप के लिए अपने स्वयं के प्रिंटिंग कोड को बाहर करने और कार्यान्वित करने में कुछ पुस्तकालयों की आवश्यकता होगी ... txt और jpg .NET Framework के साथ बहुत बुरा नहीं होगा, लेकिन कम से कम आपको पुस्तकालयों की आवश्यकता होगी पीडीएफ और डॉक्टर (एक्स?) – jerryjvl

1

यहां कक्षा कि वर्ड खोलने और दस्तावेज़ दिखाए बिना एक शब्द दस्तावेज़ प्रिंट है। जबकि मैं आमतौर पर सी # में कोड करता हूं, मैंने बहुत पहले सीखा था कि किसी भी कार्यालय के स्वचालन को किसी भी चीज़ के साथ कोड करने के लिए, लेकिन वीबी.नेट कमजोर मूर्खतापूर्ण है (सी # 4.0 में आने वाली कुछ विशेषताओं में यह बदलाव हो सकता है)।

यह केवल शब्द के लिए है, लेकिन एक्सेल दस्तावेज़ समान रूप से किए जाएंगे। टेक्स्ट दस्तावेज़ों के लिए, आप System.Drawing.Printing सामान का उपयोग आसानी से कर सकते हैं।

Imports System.IO 
Imports System.Windows.Forms 
Imports System.Drawing 

Namespace rp.OfficeHelpers 

    Public Enum PrintStatus 
     Success 
     FileNotFound 
     FailedToOpenDocument 
     FailedToPrintDocument 
    End Enum 

    Public Class Word 

     Public Shared Function PrintDocument(DocumentName As String,_ 
           PrinterName As String) As PrintStatus 
      Dim wordApp As Microsoft.Office.Interop.Word.Application = _ 
          new Microsoft.Office.Interop.Word.Application() 
      Dim wordDoc As Microsoft.Office.Interop.Word.Document 
      Dim copies As Object = 1 
      Dim CurrentPrinter As String = wordApp.ActivePrinter 

      If (Not File.Exists(DocumentName)) 
       Return PrintStatus.FileNotFound  
      End If 

      wordApp.Visible = false 

      wordApp.ActivePrinter = PrinterName 

      ' Document name must be provided as an object, not a string. 
      Try 
       wordDoc = wordApp.Documents.Open(CType(DocumentName, Object)) 
      Catch WordError as System.Exception 
       Return PrintStatus.FailedToOpenDocument 
      End Try 

      Try 
       wordDoc.PrintOut(Copies := copies, Background:= false) 
      Catch WordError as System.Exception 
       Return PrintStatus.FailedToPrintDocument 
      End Try 

      wordApp.ActivePrinter = CurrentPrinter 

      wordApp.Quit(SaveChanges := false) 

      Return PrintStatus.Success   
     End Function 

    End Class 

End Namespace 
+0

के लिए यह दस्तावेज़ _show_ नहीं हो सकता है, लेकिन यह निश्चित रूप से इसे खोलता है। यह एक बहुप्रचारित वातावरण में भी काम नहीं करेगा, क्योंकि कार्यालय एपीआई डेस्कटॉप स्वचालन के लिए हैं (अकेले लाइसेंस देने वाले मुद्दों को दें)। पता नहीं है कि क्या ओपी के लिए यह महत्वपूर्ण है, लेकिन इसे रिकॉर्ड पर प्राप्त करने के लिए। –

+0

यह एक अच्छा भेद है, जॉन। "ओपन" शब्द का मेरा उपयोग मैला था। –

+0

यह एक अच्छा भेद है, लेकिन एक्सेल फ़ाइल मामले में, मैं ऐसा कुछ कैसे कर सकता हूं। – h0cc0i

6

यह वास्तव में बहुत ही आसान है।

System.Drawing.Printing.PrintDocument का उपयोग करें।

उस लिंक में उदाहरण का पालन करें, या बस यहां कोड का उपयोग करें (जिसे मैंने प्रिंट स्वचालन करने वाले किसी चीज़ से उद्धृत किया है जिसे मैं हर दिन उपयोग कर रहा हूं)।

उदाहरण के लिए, एक .jpg बंद मुद्रित करने के लिए (BTW, यह किसी भी संपादन आवेदन नहीं खुलेगा, यह पृष्ठभूमि में प्रिंटर के spools)

public void SetupPrintHandler() 
{ 
    PrintDocument printDoc = new PrintDocument(); 
    printDoc.PrintPage += new PrintPageEventHandler(OnPrintPage); 

    printDoc.Print(); 
} 

private void OnPrintPage(object sender, PrintPageEventArgs args) 
{ 
    using (Image image = Image.FromFile(@"C:\file.jpg")) 
    { 
     Graphics g = args.Graphics; 
     g.DrawImage(image, 0, 0); 
    } 
} 
+0

दास सिहट गट औस। जेडनफेल्स फर जेपीजीएस। – Tobias

+5

टोबीस की टिप्पणी का बेबेलिश अनुवाद: "यह अच्छा लग रहा है। किसी भी तरह jpegs के लिए" –

+0

क्षमा करें, गलती से जर्मन पर स्विच किया गया ... – Tobias

1

मुझे लगता है कि में अन्य जवाब के साथ सहमत होना होगा आप इसे खोलने के बिना इसे प्रिंट नहीं कर सकते हैं।

एकमात्र तरीका मुझे लगता है कि आप इस बारे में सोचने में सक्षम हो सकते हैं यदि आपके पास सीधी-पोस्ट पोस्टस्क्रिप्ट फ़ाइल है, और सीधे-सीधे पोस्टस्क्रिप्ट-संगत प्रिंटर है।

उस स्थिति में आप बस .ps फ़ाइल को एलपीटी पोर्ट पर डंप कर सकते हैं और प्रिंटर इसे सही तरीके से संसाधित करेगा।

0

कुछ प्रिंटर कमांड लाइन LPR का उपयोग कर प्रिंटर को फ़ाइल भेजने का समर्थन करते हैं। हमारे पास एक प्रतिलिपि है जो यह करता है। यह वास्तव में कंप्यूटर पर फ़ाइल नहीं खोलता है। यह फ़ाइल को प्रिंटर पर भेजता है और प्रिंटर इसका अर्थ देता है और इसे प्रिंट करता है।

LPR -S <Server Name> -P <Printer Name> -o l "C:\Temp\Sample.PDF" 

हम इसे बड़ी सफलता के साथ पोस्टस्क्रिप्ट और पीडीएफ फाइलों के साथ करते हैं। पता नहीं है कि यह अन्य फ़ाइल प्रकारों के लिए काम करता है; प्रिंटर दस्तावेज की जांच करें।

विंडोज के हाल के संस्करणों के लिए, आपको "एलपीआर पोर्ट मॉनिटर" को सक्षम करने की आवश्यकता है। नियंत्रण कक्ष> प्रोग्राम और सुविधाएँ> मुड़ें विंडोज पर सुविधाओं या बंद> प्रिंट और दस्तावेज सेवा/LPR पोर्ट मॉनिटर

TechNet LPR Command Line

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