الخطوط قلص عندما الطابعة.الطباعة إلى "نص عام فقط" الطابعة

StackOverflow https://stackoverflow.com/questions/402062

  •  03-07-2019
  •  | 
  •  

سؤال

أنا الصيانة القديمة vb6 تطبيق الطباعة ZPL-II.

أنا فقط تجد أن لديه علة لو طباعة خطوط طويلة إلى الطابعة من قبل "الطابعة.طباعة"الخطوط سيتم اقتطاعها الأولى 89 بايت/خط فقط.يعمل الكمال والحفاظ على خطوط كما هو الحال عند استخدام طباعة أو نسخ في DOS LPT.

أين هذا السلوك يأتي من ؟ كيف يمكنني إصلاحه أو الحل?أود أن دعم جميع طابعات بما في ذلك LPT, USB طابعة الشبكة.

PS.انا مضاعفة التحقق الفعلي وحدات البايت المرسلة إلى الطابعة قبل طباعة إلى ملف ، وليس LPT.

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

المحلول 2

لقد كان العمل حول عدم استخدام الطابعة.طباعة.ولكن باستخدام FileSystemObject لطباعة النص الملف إلى مسار UNC من طابعة شبكة.

وهي تعمل مثل كريم ولكن الطابعة ليتم تعيينها.حتى طابعة محلية.

نصائح أخرى

تحتاج إلى استخدام الطابعة.TextWidth وظيفة ومقارنتها إلى الطابعة.ScaleWidth الملكية من أجل التعامل مع هذه المشكلة في Visual Basic 6.فإنه لا يفعل التلقائي خط التغليف مثل دوس وظيفة.

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

البديل هو استخدام ليون سلسلة دالة لحساب عدد من الشخصيات والتعامل مع اقتطاع نفسك إذا تجاوز 89 الشخصيات.,

شيء مثل مثل

  Do Until LineToPrint = ""
    TempD = Len(LineToPrint)
    If TempD > 89 Then
      Print Mid$(LineToPrint,1, 89)
      LineToPrint = Right$(LineToPrint,TempD-89)
    Else
      Print LineToPrint
      LineToPrint = ""
    End If
  Loop   

إذا كنت تحب وظائف العودية يمكنك أن تكتب مثل هذا

Private Sub PrintLine(ByVal LineToPrint As String, ByVal Width As Integer)
    TempD = Len(LineToPrint)
    If TempD > Width Then
      Printer.Print Mid$(LineToPrint, 1, Width)
      LineToPrint = Right$(LineToPrint, TempD - Width)
      PrintLine LineToPrint, Width
    Else
      Printer.Print LineToPrint
    End If
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top