الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معرفة الطابعة الافتراضية

بدأه AGSHAR في 26 مايو 2008 · 6 رد · 1,279 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هل يوجد طريقة لمعرفة الطابعة الافتراضية في الجهاز الذي يستخدم الweb application و ليس السيرفر

باي لغة بالجافا او vb او #C

اشكركم مقدما

#2

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

هذه الإمكانيات لا تملكها javascript

لتنفيذ مثل هذه العملية ستحتاج إلى ActiveX control أو hosted windows forms control

هل يمكنك إخباري ما الذي تريد عمله بالضبط؟

سبحانك اللهم وبحمدك، أشهد أن لا إله إلا أنت، أستغفرك وأتوب إليك

أشرف صبري

#3

انا مشكلتي اني احاول اطبع عن طريق الكريستال ريبورت و الكريستال ريبورت لازم يشوفه المستخدم و يضغط على زر الطباعة

المطلوب مني اني اخلي الطباعة اتوماتيكيا و ليس بالظغط على أي زر

جرب جمبع الطرق و في طريقة اني اختار اسم الطابعة و اخليها الطابعة الافتراضية للكريستال ريبورت

المشكله انها تختلف من جهاز لجهاز و مستخدم لمستخدم

و احاول احصل كود يطلع اسم الطابعة و يحطها في الكريستال ريبورت

ما يهم ان كان جافا سكريبت او اكتيف اكس المهم حل و نمشي الحال

شكرا

#4

يااااااااااااه

هذه المشكلة بالضبط واجهتني في عملي السابق

crystal reports يستعمل activeX control للطباعة

لقد تفحصت الصفحة التي تقوم بالطباعة (هي صفحة html وستجدها في مجلد aspnet_client) ووجدت أنها تعطي للـ activeX control معطىً اسمه UseDefaultPrinter (أو شئ مثل ذلك، لا أذكر بالضبط فقد كان ذلك منذ زمن بعيد) تعطي هذا المعطى بواحد، ورغم ذلك لا يستخدم ال control الطابعة الإفتراضية ويظهر نافذة اختيار الطابعة

إذا قمت بعمل debug للصفحة التي تحوي التقرير ستلاحظ أنه يستخدم url parameters كي يجعل التقرير يخرج صفحات معينة للهيئة المناسبة للطباعة

الحل الذي فكرت فيه هو استخدام java applet تقوم بإرسال طلب http للصفحة كي تخرج التقرير في صورة pdf ثم أستقبل هذا المستند وأقوم بتحميله بواسطة إحدى الأدوات مفتوحة المصدر المخصصة للتعامل مع ال pdf (يمكنك البحث عنها في sourceForge.net) ثم طباعة المستند على الطابعة الإفتراضية

عمل كل هذا ب java سهل جداً ولكن المشكلة التي أوقفتني وقتها هي أداة التعامل مع ال pdf، كانت تطبع المستند بحروف مشوهة، ولكني تركت الموضوع برمته لإنشغالي في أمور أخرى.

أنا أرى أن هذا الحل هو الصائب للأسباب الآتية:

  • لغة java لغة سهلة وشبيهة بال c# الذي تتقنه، بينما إذا أردت عملها كـ activeX control سيكون عليك استخدام Cpp أو vb6
  • ال applet تعمل على معظم المتصفحات بينما activeX لا يعمل إلا على ie
  • ستجد الكثير من أدوات التعامل مع ال pdf المخصصة ل java أكثر من تلك المخصصة للغات الأخرى

في النهاية أتمنى لك التوفيق وأرجو منك إخباري بآخر التطورات

سبحانك اللهم وبحمدك، أشهد أن لا إله إلا أنت، أستغفرك وأتوب إليك

أشرف صبري

#5

اشكر ردك اخي الكريم

المشكله ان الوقت ضيق و لا اعرف برمجه ال Activex لقد حاولت لكن لم تضبط معي

الأن احاول ان أجد activex جاهز لاستخدامه

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

اشكرك مره اخرى

#6

إذن يمكنك تنفيذها كـ hosted windows forms control

وفي هذه الحالة يمكنك كتابته بالـ C# أو بالـ VB.Net ولكنه لن يعمل إلا على internet explorer كما يتطلب وجود .net framework على جهاز العميل وسيستخدم نفس الأسلوب (تحويل التقرير إلى صيغة pdf واستقباله ثم طباعته على الطابعة الإفتراضية)

سبحانك اللهم وبحمدك، أشهد أن لا إله إلا أنت، أستغفرك وأتوب إليك

أشرف صبري

#7

السلام عليكم

وجدت الكود لمعرفة الطابعة عن طريق ال Activex و عند تشغيل ال Activex على الموقع يعمل لكن المشكله في تمرير القيمه في ال Activex لل web form ... هل يوجد طريقة لتمرير القيمه للفورم

هذه الكود و الرجاء لمن يعرف لا يبخل علينا بالمساعده

Public Function MyPrinter()
Dim PrintData As Printer
Dim defprinterpos%
For Each PrintData In Printers
' Add printer name and port to list
lstPrinter.AddItem PrintData.DeviceName & " at: " & PrintData.Port
' Check for default printer
If PrintData.DeviceName = Printer.DeviceName Then defprinterpos = lstPrinter.NewIndex
Next
lstPrinter.ListIndex = defprinterpos%
DefaultPrinter .Text = Printer.DeviceName

End Function

مواضيع مشابهة