본문 바로가기
delphi

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

by doran365 2024. 7. 31.

서론

프린터 용지 설정은 효율적인 문서 출력을 위해 필수적인 과정입니다. TPrinter 객체와 PDevMode 객체를 이용하여 현재 설정된 프린터의 용지 정보를 얻고 설정하는 방법을 자세히 설명하겠습니다. 이 가이드를 통해 프린터 설정을 최적화하고, 다양한 용지 크기를 관리하는 방법을 배우게 됩니다.

TPrinter 객체와 PDevMode 객체 소개

TPrinter 객체란?

TPrinter 객체는 델파이(Delphi) 프로그래밍 언어에서 프린터와의 상호작용을 가능하게 하는 클래스입니다. 이를 통해 프린터의 상태를 확인하고, 설정을 변경할 수 있습니다. 주로 Printer라는 전역 변수를 통해 접근합니다.

PDevMode 객체란?

PDevMode 객체는 Windows API에서 제공하는 데이터 구조체로, 프린터의 각종 설정을 관리합니다. 용지 크기, 해상도, 컬러 모드 등 다양한 프린터 설정을 포함하고 있습니다. 이를 활용하여 프린터의 용지 설정을 읽고 쓸 수 있습니다.

프린터 용지 정보 얻기

프린터의 현재 설정된 용지 정보를 얻는 방법을 살펴보겠습니다. 아래의 코드를 통해 용지 크기를 확인할 수 있습니다.

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);
  try
    result := ADevMode.dmPaperSize;
  finally
    GlobalUnlock(hDMode);
  end;
end;

코드 설명

  • Printer.GetPrinter: 현재 프린터의 설정을 가져옵니다.
  • GlobalLock: hDMode 핸들을 통해 ADevMode 포인터를 얻습니다.
  • ADevMode.dmPaperSize: 현재 설정된 용지 크기를 반환합니다.
  • GlobalUnlock: ADevMode 포인터를 해제합니다.

프린터 용지 설정하기

프린터의 용지 크기를 설정하는 방법을 알아보겠습니다. 아래의 코드를 통해 원하는 용지 크기를 설정할 수 있습니다.

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);
  try
    ADevMode.dmPaperSize := pSize;
    Printer.SetPrinter(Device, Driver, Port, hDMode);
  finally
    GlobalUnlock(hDMode);
  end;
end;

코드 설명

  • Printer.GetPrinter: 현재 프린터의 설정을 가져옵니다.
  • GlobalLock: hDMode 핸들을 통해 ADevMode 포인터를 얻습니다.
  • ADevMode.dmPaperSize := pSize: 용지 크기를 설정합니다.
  • Printer.SetPrinter: 변경된 설정을 프린터에 적용합니다.
  • GlobalUnlock: ADevMode 포인터를 해제합니다.

Windows.pas 파일에서의 용지 사이즈 정보

프린터 용지 설정에 사용되는 용지 크기는 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}

주요 용지 크기

  • A3: 297 x 420 mm
  • A4: 210 x 297 mm
  • A4 Small: 210 x 297 mm
  • A5: 148 x 210 mm
  • B4 (JIS): 250 x 354 mm
  • B5 (JIS): 182 x 257 mm