인쇄를 하는데 프린터의 기종에 따라 폰트의 크기가 제어되지 않습니다.
이제까지 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;