用WIN API吧, 里面关于打印的API有一大堆。你要的参数,也许可以通过 GetJob(...)来取得。试试看 我也不是很熟。

解决方案 »

  1.   

    获取打印页边距 
     
    uses Printers; procedure TForm1.Button1Click(Sender: TObject); 
    var 
    EscapeCode : integer; 
    Margin : TPoint; 
    begin 
    if PrintDialog1.Execute then begin 
    {$IFDEF WIN32} 
    Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); 
    Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY); 
    {$ELSE} 
    EscapeCode := GETPRINTINGOFFSET; 
    if Escape(Printer.Handle, 
    QUERYESCSUPPORT, 
    sizeof(EscapeCode), 
    @EscapeCode, 
    nil) <> 0 then 
    if Escape(Printer.Handle, 
    GETPRINTINGOFFSET, 
    0, 
    nil, 
    @Margin) < 1 then begin 
    EscapeCode := GETPHYSPAGESIZE; 
    if Escape(Printer.Handle, 
    QUERYESCSUPPORT, 
    sizeof(EscapeCode), 
    @EscapeCode, 
    nil) <> 0 then 
    if Escape(Printer.Handle, 
    GETPHYSPAGESIZE, 
    0, 
    nil, 
    @Margin) > 0 then begin 
    Margin.x := (Margin.x - 
    GetDeviceCaps(Printer.Handle, HorzRes)) div 2; 
    Margin.y := (Margin.y - 
    GetDeviceCaps(Printer.Handle, VertRes)) div 2; 
    end else begin 
    Margin.x := 0; 
    Margin.y := 0; 
    end; 
    end; 
    {$ENDIF} 
    Memo1.Lines.Add(IntToStr(Margin.x)); 
    Memo1.Lines.Add(IntToStr(Margin.y)); 
    end; 
    end; 呵呵,我也是Copy下来的,借花献佛吧,你自己看.
      

  2.   

    Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); 
    Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY); 
    老兄,这段代码就是取得左边和上边所不能打印到的大小,再取得打印机的分辩率就可以换算成毫米了!就这样!自己看看GetDeviceCaps()函数的帮助就懂了!
      

  3.   

    printer.pagewidth,printer.pageheight可以取得纸张大小,取得打印机的分辩率就可以换算成毫米了!
    打印方向也可以读printer......怎么写我忘了!(…_…)自己看一下帮助!