الخطوط قلص عندما الطابعة.الطباعة إلى "نص عام فقط" الطابعة
سؤال
أنا الصيانة القديمة 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