Q&A

  • Printers 이용하여 연속용지 출력시 용지 조절방법

Printers를 이용하여 연속용지를 출력하려고 하는 초짜입니다...
Q&A 에서 찾아서~ 간신히~ 간신히~ 만들어 가고 있습니다...
용지의 사이즈를 조절하는것도~ 하긴 했는데...
Length 부분에서 현재 1047 로 값을 줬는데 이렇게 하면 글씨가 밀려지고
1을 더해서 1048로 값을 주면~ 글씨가 당겨지네요...
종이에 정확하게 맞지 않구요... -.-;;
정확하게 하려고~ 1047.5로 했더니 소수점이 있으면 안된다고 하구요...
Paper.Length 1차인데~ Page.Height는 2 차이가 나네요

너무 많이 틀려서 갖고 있는 종이 다~~~ 버리게 생겼어요...
정확하게 조절하는 방법이 없나요?
아래는 소스입니다...

var Len, Wid : Integer;
OldMap: Integer;
OldOrg: TSize;
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      {사용자 정의 용지로 바꾸는 예}
      pDMode^.dmOrientation := DMORIENT_PORTRAIT;
      pDMode^.dmFields := pDMode^.dmFields or
                          DM_ORIENTATION or
                          DM_PAPERSIZE or
                          DM_PAPERWIDTH or
                          DM_PAPERLENGTH;
      pDMode^.dmPaperSize   := DMPAPER_USER;
      pDMode^.dmPaperWidth  := 2400; {단위는 mm}
      pDMode^.dmPaperLength := 1048; {단위는 mm}
      GlobalUnlock(hDMode);
    end;
  end;
  Printer.PrinterIndex := Printer.PrinterIndex;

  Printer.BeginDoc;
  with Printer.Canvas do
  begin
    OldMap := SetMapMode( Printer.Handle, MM_LOMETRIC );
    OldOrg := SetOrgPoint( Point( 100, 25 ) );
    try
      Brush.Style := bsClear;
      Len := 350;
      Wid := -60;
      Font.Name := '굴림';
      Font.Height := 40;

      TextOutBase(Len, Wid, mEditSlipDt.Text);
      Inc(Len, 1100);

      TextOutBase(Len, Wid, EditSlipNo.Text);
    Finally
      SetOrgPoint( Point( OldOrg.cx, OldOrg.cy ) );
      SetMapMode( Printer.Handle, OldMap );
      Printer.EndDoc;
    end;  
0  COMMENTS