2011-01-25 2 views
1
private void printfunction(string cmd) 
    { 
    string command = cmd; 

    // Create a buffer with the command 
    Byte[] buffer = new byte[command.Length]; 
    buffer = System.Text.Encoding.ASCII.GetBytes(command); 

    // Use the CreateFile external functo connect to the LPT1 port 
    SafeFileHandle printer = CreateFile("LPT1:", FileAccess.ReadWrite, 0, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero); 

    // Aqui verifico se a impressora é válida 
    if (printer.IsInvalid == true) 
    { 
    MessageBox.Show("Printer not found!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    return; 
    } 

    // Open the filestream to the lpt1 port and send the command 
    FileStream lpt1 = new FileStream(printer, FileAccess.ReadWrite); 
    lpt1.Write(buffer, 0, buffer.Length); 

    // Close the FileStream connection 
    lpt1.Close(); 
    } 

위의 코드 기능을 사용하여 ESC/POS 지원 EPSON TM88III 프린터로 원시 데이터를 보내 왔습니다.원시 데이터를 프린터로 전송하여 Arial 글꼴 또는 기타 글꼴로 인쇄하십시오.

프린터에는 기본적으로 글꼴이 3 개만 전송되었습니다. 그러나 ARIAL FONT에서 인쇄하는 것을 원하지 않습니다. Arial 글꼴로 어떻게 인쇄 할 수 있습니까?

Windows 인쇄 스풀러 또는 프린터 드라이버를 사용하지 마십시오. 원시 데이터를 보내서 인쇄하고 싶습니다.

어떻게 할 수 있습니까?

코딩은 Visual Studio 2008을 사용하여 C# .NET에서 코딩됩니다.

답변

0

내가 아는 한 TM88의 Windows 드라이버는 TM88이 고정 폭 텍스트, 바코드 및 비트 맵 이상을 기본적으로 지원하지 않기 때문에 프린터 출력을 비트 맵으로 프린터로 보냅니다.

escape codes을 사용하여 serif 및 sans-serif 글꼴간에 전환 할 수 있지만 둘 다 고정 너비입니다.

0

할 수 없습니다. 원시 텍스트는 일반적으로 고정 폭 글꼴 (예 : Courier)을 사용하여 인쇄됩니다.

특정 프린터 모델에서만 작동해야하는 경우 Postscript를 사용해 볼 수도 있지만 프린터에 Arial이 설치되지는 않습니다. 헬 베티 카가 더 가능성이 있습니다.

+0

TM88은 감열지 영수증 프린터입니다. helvetica가 없습니다 : P – Blorgbeard

+0

아, 모델 번호가 완전히 간과되어 소음에 사과드립니다. –

0

프린터에 따라 다른 코드를 사용해야합니다.

wikipededia entry on the EPSON ESC/P은 많은 것을 설명합니다.

"ESC k 1"(ESC = 코드 27)을 프린터로 보내면 Sans Serif 글꼴로 저장됩니다. 하지만 비례한다고 생각하지 않습니다.

자신 만의 글꼴을 사용하고 싶다면. Image/Bitmap 객체로 렌더링 할 수 있습니다 (흑백으로). 프린터를 그래픽 모드로 설정 한 다음 픽셀 단위로 인쇄하십시오. (사실 8 또는 9 픽셀 당 인쇄합니다.)

1

이것은 기술적으로 프린터를 그래픽 모드로 설정하고 픽셀 데이터를 보내면 가능합니다. 프로그램에서 단색 비트 맵을 만들어야합니다. 비트 맵 및 그래픽 클래스는 작업을 완료 할 수 있습니다. Arial로 초기화 된 Font로 Graphics.DrawText를 사용하면 원하는 방식으로 텍스트를 얻을 수 있습니다. 비트 맵 픽셀을 프린터 명령으로 인코딩하는 것은 중요하지 않으므로 프린터에 알맞은 프로그래밍 설명서가 있어야합니다.

그렇지 않으면 정확히 프린터 드라이버가 수행합니다. 그것은 천천히 진행될 것입니다.