منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] هل يوجد كود ارسال اي نص للطابعة فورا - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] هل يوجد كود ارسال اي نص للطابعة فورا (/showthread.php?tid=2512)



هل يوجد كود ارسال اي نص للطابعة فورا - سعود - 08-04-14

هل يوجد كود ارسال اي نص للطابعة فورا

اريد كود يكتب بحدث النقر لزر امر يقوم بطباعة صفحة html او خليط من Div and css
يعني صفحة منسقة اريد طبعتها بشكل فوري.
شكر الله لكم


RE: هل يوجد كود ارسال اي نص للطابعة فورا - الشاكي لله - 08-04-14

استعمل الويب براوزر
PHP كود :
webBrowser1.DocumentText "<html .....>";
 
webBrowser1.Print(); 



RE: هل يوجد كود ارسال اي نص للطابعة فورا - سعود - 08-04-14

جربت الكود التالي ماضبط
كود :
Dim wc As New WebClient
        wc.Encoding = Encoding.Default
        Dim wb As New WebBrowser
        wb.DocumentText = wc.DownloadString("http://vb4arb.com/vb/thread-2512.html")
        wb.Print()



RE: هل يوجد كود ارسال اي نص للطابعة فورا - سعود - 08-04-14

طيب الاداة هذي PrintDocument1 كيف نتعامل معها كيف نجعلها تطبع نص محدد لان حين اعطي print فقط تشتغل الطابعة وتسحب الورقة من دون اي شي
فكيف الامر


RE: هل يوجد كود ارسال اي نص للطابعة فورا - سعود - 09-04-14

الامر فيه صعوبة اطلعت على امثلة فلم اجد ابسط مما ذكره الاخ الشاكي


RE: هل يوجد كود ارسال اي نص للطابعة فورا - kslawy - 09-04-14

السلام عليكم ورحمة الله وبركاته

وجدت كلاس بموقع Codeproject عدلت فيه ليطبع مباشرة علي الطابعة الافتراضية (في الكود الأصلي لازم تحدد الطابعة بنفسك):

كود :
Public Class PrintHelper
    Friend TextToBePrinted As String

    Public Sub print(ByVal text As String)
        TextToBePrinted = text
        Dim prn As New Printing.PrintDocument
        Using (prn)
            AddHandler prn.PrintPage, _
               AddressOf Me.PrintPageHandler
            prn.Print()
            RemoveHandler prn.PrintPage, _
               AddressOf Me.PrintPageHandler
        End Using
    End Sub

    Private Sub PrintPageHandler(ByVal sender As Object, _
       ByVal args As Printing.PrintPageEventArgs)
        Dim myFont As New Font("Courier New", 9)
        args.Graphics.DrawString(TextToBePrinted, _
           New Font(myFont, FontStyle.Regular), _
           Brushes.Black, 50, 50)
    End Sub
End Class

طريقة الاستخدام :
كود :
Dim ph As New PrintHelper

        Dim MyHtml As String = "مصدر النص"

        ph.print(MyHtml)


http://www.codeproject.com/Questions/618628/printing-text-directly-to-printer-from-vb-net

****
***
**
*


RE: هل يوجد كود ارسال اي نص للطابعة فورا - سعود - 09-04-14

بارك الله فيك اخي
ايهما اسرع الكود الذي كتبت ام الكود التالي:
كود :
Private Sub DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
        With DirectCast(sender, WebBrowser)
            If .ReadyState = WebBrowserReadyState.Complete Then
                .Print()
            End If
        End With
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim myWebBrowser As New WebBrowser
        AddHandler myWebBrowser.DocumentCompleted, AddressOf DocumentCompleted
        myWebBrowser.ScriptErrorsSuppressed = True
        myWebBrowser.Navigate(Application.StartupPath & "\a.htm")
    End Sub
ايضا لو كانت الطابعة ليزر ليست ملونة ماهي الطريقة الافضل لبرمجة طباعتها


RE: هل يوجد كود ارسال اي نص للطابعة فورا - kslawy - 10-04-14

سرعتهم تقريبا واحدة مع اختلاف أن الأول يظهر شاشة صغيرة تبين إرسال الأمر للطابعة عكس الثاني لا يظهر شيء أثناء الطباعة

بالنسبة للطابعة أي برنامج عندما يحاول الطباعة فإنه يبحث عن الطابعة الافتراضية المنصبة في الجهاز ، إذا ذهبت إلي قسم (الأجهزة والطابعات) من قائمة أبدا ستجد الطابعة الافتراضية وعليها علامة (صاح) خضراء .

يمكنك أن تغيير الطابعة برمجيا في الكود الأول لكن في الثاني لا أدري كيف

هذا الكود لاستعراض الطابعات المنصبة بالجهاز :
PHP كود :
For Each ar As String In Printing.PrinterSettings.InstalledPrinters
            Me
.ComboBox1.Items.Add(ar)
        
Next 

****
***
**
*


RE: هل يوجد كود ارسال اي نص للطابعة فورا - الشاكي لله - 12-04-14

لزيادة الخير بعد

هذا كود لإختيار طابعة افتراضية ( Default )


PHP كود :
<DllImport("winspool.drv"CharSet := CharSet.AutoSetLastError := True)> _
Public Shared Function SetDefaultPrinter(Name As String) As Boolean
End 
Function

Private 
Sub button1_Click(sender As ObjectAs EventArgs)
    
SetDefaultPrinter("HP Deskjet D1500 series")
End Sub