سؤال

أحاول الطباعة إلى طابعات Dot Matrix (نماذج مختلفة) من C#، حاليًا أستخدم Win32 API (يمكنك العثور على الكثير من الأمثلة عبر الإنترنت) لإرسال رموز الهروب مباشرة إلى الطابعة من تطبيق C# الخاص بي.هذا يعمل بشكل رائع، ولكن...

مشكلتي هي أنني أقوم بإنشاء رموز الهروب وعدم الاعتماد على نظام طباعة Windows، ولا يمكن إرسال المطبوعات إلى أي طابعات "عادية" أو إلى أشياء مثل برامج تشغيل طباعة PDF.(يسبب هذا الآن مشكلة لأننا نحاول استخدام التطبيق على خادم طرفي 2008 باستخدام Easy Print [الذي يعتمد على XPS])

السؤال هو:كيف يمكنني طباعة المستندات المنسقة (الفواتير على القرطاسية المطبوعة مسبقًا) على طابعات Dot Matrix (Epson وOki وPanasonic...نماذج مختلفة) من C# لا تستخدم الطباعة المباشرة ورموز الهروب وما إلى ذلك.

**فقط للتوضيح، أنا أحاول استخدام أشياء مثل GDI+ (System.Drawing.Printing) ولكن المشكلة تكمن في أنه من الصعب جدًا ترتيب الأمور كما فعلت التعليمات البرمجية القديمة.(أرسل الكود القديم الأحرف مباشرة إلى الطابعة متجاوزًا برنامج تشغيل Windows.) هل هناك أي اقتراحات حول كيفية تحسين الأشياء حتى يتمكنوا من استخدام GDI+ مع الاستمرار في الاصطفاف كما فعل الكود القديم؟

هل كانت مفيدة؟

المحلول

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

باستخدام الطابعات النقطية، عليك العمل بشكل أساسي في أي من الوضعين:

  • وضع كاتب بسيط لنص السطر/العمود حيث ترسل تسلسلات هروب لإدارة عدد صغير من الخطوط المضمنة في أجهزة الطابعة ويجب عليها إدارة إرجاع الأسطر، وما إلى ذلك.
  • إخراج رسومي حيث يتم تنقيط الصفحة ويقوم برنامج تشغيل الطابعة فقط بتشغيل رأس الطباعة والدبابيس لإخراج النقاط.

يتم إهمال الاستخدام الأول في الغالب في نظام التشغيل Windows لأنه لا يقدم الكثير في طريقة التحكم في الإخراج، ولكل طابعة خصائصها الخاصة، يصبح الأمر غير عملي ويصعب على البرنامج التنبؤ بالأشياء ووضعها على الصفحة (لا يوجد WYSIWYG).

والثاني يستخدم فقط نموذج صفحة رسومية يجعل تحديد موضع النص والرسومات مستقلاً عن الإمكانات الفعلية للطابعة.
عند استخدام القرطاسية المطبوعة مسبقًا، تتمثل مهمتك في وضع البيانات بشكل صحيح على الصفحة.
يعد القيام بذلك يدويًا مستهلكًا للموارد ومن المؤكد أنه لا يُنصح بإنشاء التخطيط في التعليمات البرمجية نظرًا لأنك ستواجه مشكلة في تغيير التعليمات البرمجية في حالة تغيير الطابعة أو تنسيق الصفحة أو القرطاسية المطبوعة.

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

يتم شحن Visual Studio مع إصدار من Crystal Reports ولكن هناك أنظمة تقارير أخرى أفضل (أستخدم النظام من المطور اكسبرس على سبيل المثال)، وبعضهم حتى حر.

نصائح أخرى

من تجربتي، من الأسهل استخدام نوعين من التقارير لنفس البيانات:

  • تقرير واحد للطابعات النقطية باستخدام رموز الهروب وأي شيء آخر مطلوب، يتم حفظه في ملف نصي ثم طباعته بطرق مختلفة (type file.txt > lpt1 أو تحديد رمز الطابعة الافتراضية واستخدامها NOTEPAD /P file.txt) - يرى هذه الصفحة لمزيد من طرق الطباعة.
  • تقرير آخر لطابعات الليزر/نفث الحبر باستخدام أداة إنشاء التقارير (Crystal Reports، مدير التقارير, رليب أو أي شيء متاح)

نظرًا لأنه ليس من غير المألوف شراء نوع الطابعة المناسب لنوع التقرير المناسب، فإن هذا الأسلوب يتمتع بميزة السماح للعميل باتخاذ القرار:طابعة نقطية للتقارير النصية بتنسيق ورق A3/A4 (عادةً لقسم المحاسبة) أو طابعة ليزر/نفث الحبر للتقارير الرسومية.

وأنا لا أعرف كيفية استخدام تسلسل الهروب في C #. ولكن لدي كل تسلسل الهروب لعام / نص الطابعة فقط. نأمل أن يساعد.

والجنيسة طباعة الهروب تسلسل 1) تعيين تباعد الأسطر أ) 1/8 بوصة - 27،48 ب) 1/6 بوصة - 27،50

2) حدد مشروع الجودة أ) 27،120،0 / 27،120،48

و3) رسالة الجودة أ) 27،120،1 / 27،120،49

و4) ارتفاع مزدوج أ) 27119، ن ط) ن = 1 في ب) ن = 0 إيقاف

و5) الطباعة ثنائية الاتجاه أ) 27،85، ن ط) 0 - على حد سواء السبيل ب) 1 - طريقة واحدة

و6) زيادة مساحة حرف أ) 27،32، ن (الزيادة التي كتبها ن / 12 بوصة)

و7) حدد الخط بولد أ) 27،69

و8) الغاء الخط بولد أ) 27،70

و9) حدد مائل الخط أ) 27،52

و10) الغاء مائل الخط أ) 27،53

و11) حدد أ) 10cpi 27،8 ب) 12cpi 27،77 ج) 15cpi 27103 د) 18cpi 27103

و12) مجموعة الهامش الأيمن أ) 27،81، ن

و13) مجموعة الهامش الأيسر أ) 27108، ن

و14) تغذية النموذج أ) 12

و15) الطباعة الموجزة أ) 0F يوم ب) 12 معطلة

و16) مزدوجة الطباعة سترايك أ) 27،71

و17) إلغاء الطباعة سترايك أ) 27،72

و18) تحت خط أ) 27،45،0 معطلة ب) 27،45،1 تشغيل

و19) عرض مزدوجة أ) 27،84،0 معطلة ب) 27،84،1 ON

أوامر

وتحويل الأولى تسلسل إلى حرف ثم تمريرها إلى طابعة

مثال Bold لخطوط 27،69

وstring.Format ( "{0} {1}"، Convert.ToChar (27)، Convert.ToChar (69))؛

وربما قليلا أقصر على النحو التالي:

وstring.Format ( "{0} {1}"، (شار) (27)، (شار) (69))؛

نلقي نظرة على النظام.الرسم.الطباعة مساحة الاسم.

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

إذا لم تكن هذه هي الحالة، ثم يمكنك إضافة عام / نص فقط الطابعة (برنامج التشغيل) مع مساعدة من معالج إضافة طابعة. وبمجرد القيام به، يمكنك تكوين بعض الأوامر (الهروب متواليات) لذلك - حجم الخط 10/12/17، جريئة على / قبالة، تسطير على / قبالة، بداية العمل / التوقف، تغذية الورق وحجم حدد

وأنا باستخدام الطابعة عام المرتبطة مع منفذ FILE لاختبار تقارير مختلفة للطابعات POS - فإنه من السهل أن ننظر إلى ملف نصي للتحقق من صحة الأرقام في النسخة المطبوعة. بالطبع لتنسيق برنامج تشغيل الطابعة معين هو مطلوب.

ويبدو أن ما أود القيام به هو غير ممكن.

وخياراتي للطباعة هي غير المدارة مباشرة إلى طابعة الطباعة (باستخدام winspool.drv) الذي يسمح لي أن تفعل ما أحب أن الطابعة ويتيح لي بسهولة إلى خط الامور <أ href = على "HTTP: // الدعم. microsoft.com/default.aspx؟scid=kb٪3Ben-us٪3B322090 "يختلط =" نوفولو noreferrer "> VB.NET مثال أو يمكنني استخدام GDI + (System.Drawing.Printing) والذي يعقد للحصول على أشياء ليصطف ولكن سوف تعمل مع الطابعات النقطية غير نقطة مثل XPS و PDF الطابعات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top