서론
프린터 용지 설정은 효율적인 문서 출력을 위해 필수적인 과정입니다. 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
'delphi' 카테고리의 다른 글
델파이에서 파일 사이즈 알아내기 (0) | 2024.08.02 |
---|---|
IDENTITY 컬럼의 현재값 알기 및 수정 (0) | 2024.08.01 |
DLL을 이용한 마우스 전역 후킹(Hooking) (0) | 2024.07.31 |
Virtual과 Override에 대한 깊이 있는 이해 (0) | 2024.07.31 |
프로세스 아이디(ProcessID)로 윈도우 핸들(Handle) 얻기 (0) | 2024.07.31 |