function GetPagesize: integer;
// 如果为0表示自定义纸张
// -1表示出错
var
sDrv: Pchar;
sPrt: Pchar;
DevAdr: THandle;
p: PDeviceModeA;
begin
result := -1;
sdrv := allocmem(256);
sprt := allocmem(64);
devadr := 0;
try
printer.GetPrinter(sdrv, sdrv, sprt, devadr);
p := ptr(devadr);
// if p^.dmSize = 0
// p^.dmPageWidth 页宽 -- 0.1mm
// p^.dmPageLength 页高 -- 0.1mm
result := p^.PageSize;
finally
freemem(sdrv, 256);
freemem(sprt, 64);
end;
end;