TPrinter 로 출력을 할려구.. 강의실에 있는 자료를 그대루 해 봤더니..
프린터마다 여백이 틀리게 나오네염..
// 그리는 루틴
procedure DrawPage( Canvas: TCanvas );
begin
Canvas.Rectangle( 0, 0, 1000, -200 );
end;
// 기준 점을 APoint로 바꾸고 현재의 기준점을 리턴한다.
function SetOrgPoint( APoint: TPoint ): TSize;
var
Org: TPoint;
begin
Escape( Printer.Canvas.Handle, GETPRINTINGOFFSET, 0, nil, @Org );
SetWindowOrgEx( Printer.Handle, Org.X-APoint.X, APoint.Y-Org.Y, @Result );
end;
//메인 루틴
procedure TMain_Form.Button10Click(Sender: TObject);
var
OldMap: Integer;
OldOrg: TSize;
begin
{인쇄를 시작한다}
Printer.BeginDoc;
{현재 매핑모드를 oldMap에 저장하고 새로운 매핑모드(0.1mm)를 적용한다}
OldMap := SetMapMode( Printer.Handle, MM_LOMETRIC );
{현재의 기준점을 OldOrg에 저장하고 새로운 기준점(20mm)을 적용한다}
OldOrg := SetOrgPoint( Point( 200, 200 ) );
try
{그린다}
DrawPage( Printer.Canvas );
{여기서 finally 구문은 필히 사용해서 프린터가 먹통이 되는일이 없게..}
finally
{기준점을 원래대로 복구한다}
SetOrgPoint( Point( OldOrg.cx, OldOrg.cy ) );
{매핑모드를 원래대로 복구한다}
SetMapMode( Printer.Handle, OldMap );
{인쇄를 종료한다}
Printer.EndDoc;
end;
end;
///////////////////////////////////
위와 같이 했는데..
레이저와 잉크젯 프린터에서 여백이 틀리게 나와여.. 왜 구럴까여.
결론은 프린터마다 인쇄 특성이 있다는 것입니다.
소프트웨어적으로는 힘들겠군요!