프린터가 "일반 텍스트 전용"프린터로 인쇄 할 때 줄이 다듬어집니다.

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

  •  03-07-2019
  •  | 
  •  

문제

ZPL-II를 인쇄하는 오래된 VB6 응용 프로그램을 유지 관리합니다.

프린터에 긴 줄을 인쇄하면 버그가 있음을 알게됩니다.프린터 프린트", 라인은 처음 89 바이트/라인으로만 트리밍됩니다. 그것은 완벽하게 작동하며 내가 사용할 때와 마찬가지로 선을 유지합니다. 인쇄 또는 복사 lpt에 dos.

이 행동은 어디에서 왔습니까? 어떻게 해결할 수 있습니까? 또는 해결 방법은 무엇입니까? LPT, USB 및 네트워크 프린터를 포함한 모든 프린터를 지원하고 싶습니다.

추신. LPT가 아닌 파일에 인쇄하여 프린터로 전송 된 실제 바이트를 두 번 확인합니다.

도움이 되었습니까?

해결책 2

프린터 프린트를 사용하지 않기 위해 노력하고있었습니다. 그러나 FileSystemObject를 사용하여 텍스트 파일을 네트워크 프린터의 UNC 경로로 인쇄합니다.

크림처럼 작동하지만 프린터를 매핑해야합니다. 로컬 프린터조차도.

다른 팁

Printer.textWidth 함수를 사용하여 Printer.scalewidth 속성과 비교하여 Visual Basic 6 에서이 문제를 처리하려면 DOS 기능과 같은 자동 라인 랩핑을 수행하지 않아야합니다.

프린터가 너무 올바르게 설정된 글꼴이 프린터의 글꼴과 일치하는지 확인합니다. 드라이버가 함께 제공하는 "프린터"글꼴 중 하나를 사용해야 할 수도 있습니다. 그렇지 않으면 고정 된 공간 글꼴 인 Courier New를 사용해보십시오. 그렇지 않으면 텍스트 너비 값이 너비를 올바르게보고하지 않습니다.

대안은 Len String 함수를 사용하여 문자 수를 계산하고 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