본문 바로가기

프로그래밍/Delphi

설정된 프린터 용지 얻기 및 설정하기

TPrinter 객체를 이용하여 현재 설정된 프린터의 용지 정보를 얻을 수 있고 설정할 수 있습니다..
PDevMode 객체를 이용합니다.

용지 얻기
function GetPaperSize: integer;
var
  ADevMode: PDevMode;
  hDMode: THandle;
  Device, Driver, Port: array[0..255] of Char;
begin
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  ADevMode := GlobalLock(hDMode);
  GlobalUnlock(hDMode);
  result := ADevMode.dmPaperSize;
end;

용지 설정하기
procedure SetPaperSize(pSize: Integer);
var
  ADevMode: PDevMode;
  hDMode: THandle;
  Device, Driver, Port: array[0..255] of Char;
begin
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  ADevMode := GlobalLock(hDMode);   //80Column = 258;  136Column = 259;
  ADevMode.dmPaperSize := pSize;
  GlobalUnlock(hDMode);
  Printer.SetPrinter(Device, Driver, Port, hDMode);
end;
여기서 pSize(용지 사이즈 정보는 Windows.pas에 선언되어 있습니다
in Windows.pas
...
  {$EXTERNALSYM DMPAPER_A3}
  DMPAPER_A3      = 8;      { A3 297 x 420 mm                     }
  {$EXTERNALSYM DMPAPER_A4}
  DMPAPER_A4      = 9;      { A4 210 x 297 mm                     }
  {$EXTERNALSYM DMPAPER_A4SMALL}
  DMPAPER_A4SMALL = 10;     { A4 Small 210 x 297 mm               }
  {$EXTERNALSYM DMPAPER_A5}
  DMPAPER_A5      = 11;     { A5 148 x 210 mm                     }
  {$EXTERNALSYM DMPAPER_B4}
  DMPAPER_B4      = 12;     { B4 (JIS) 250 x 354                  }
  {$EXTERNALSYM DMPAPER_B5}
  DMPAPER_B5      = 13;     { B5 (JIS) 182 x 257 mm               }
  {$EXTERNALSYM DMPAPER_FOLIO}
...
//다른 용지도 찾아보세요...