Q&A

  • 인쇄시 프린터 기종에 따라 폰트 크기가 제어가 안돼요
인쇄를 하는데 프린터의 기종에 따라 폰트의 크기가 제어되지 않습니다.
이제까지 HP Deskjet 895 와 948을 사용하면서 아래의 소스를 실행하면 폰트 사이즈가 정확히 제어가 되었는데 HP DeskJet 6122와 같이 새로 나온 프린터 나 Qnix 3630E와 같은 프린터에서는 글자 크기가 제어되지 않습니다. 폰트 사이즈를 12로 주더라도 인쇄되어 나오는 크기는 30이상이 되네요.

아시는 분은 답변 부탁 드립니다


  Printer.PrinterIndex := Printer.PrinterIndex;
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      {legal 용지로 바꾸는 예}
      pDMode^.dmOrientation := DMORIENT_LANDSCAPE;          
      pDMode^.dmFields := pDMode^.dmFields or
                          DM_ORIENTATION or
                          DM_PAPERSIZE or
                          DM_PAPERWIDTH or
                          DM_PAPERLENGTH;
      pDMode^.dmFields    := pDMode^.dmFields or dm_PaperSize;
      pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;                
      pDMode^.dmPaperWidth  := 3920; {단위는 1/10mm}
      pDMode^.dmPaperLength := 2800; {단위는 1/10mm}
      pDMode^.dmDefaultSource := DMBIN_AUTO;     //용지자동

      GlobalUnlock(hDMode);
    end;
  end;

  With Printer do
  begin
    f_Row := 0;
    j := 0;
    BeginDoc;
    SetMapMode( Printer.Handle, MM_LOMETRIC );

    Canvas.Font.Name  := '돋움체';
    Canvas.Font.Style := [];

    canvas.Pen.Width  := 3;
    Canvas.Font.Size  := 12;
    canvas.Pen.Color := clGreen;

    canvas.Pen.Width  := 1;
    canvas.Moveto( 200, - 540) ;  //line2
    canvas.lineto(1300, - 540) ;
    canvas.Moveto( 200, - 630) ;  //line3
    canvas.lineto(1300, - 630) ;
    canvas.Moveto( 370, - 720) ;  //line4
    canvas.lineto(1300, - 720) ;
    canvas.Moveto( 370, - 810) ;  //line5
    canvas.lineto(1300, - 810) ;

    Canvas.Font.Size  := 07;
    Canvas.TextOut( 200, - 300, 'aaa');      
    Canvas.TextOut(2200, - 300, 'bbb');  
  
    EndDoc;
  end;
0  COMMENTS