打印机为Epson1600针式打印机,纸是两边带孔的纸请问如何自定义纸张和页边距,而且不用每次打印都要设置。谢谢先!

解决方案 »

  1.   


    ////////////////////////////
    //  武汉探索电脑工作室    //
    //  http://tansuo.51.net  //
    //////////////////////////////增加规格自定义纸张
    //PaperName: 自定义纸张名称
    //PaperWidth: 纸张的宽度,以0.1mm为单位
    //PaperLength: 纸张的高度,以0.1mm为单位
    procedure TDM.AddCustomPaper(const PaperName: string; PaperWidth, PaperLength:integer);
    var
    PrintDevice, PrintDriver, PrintPort : array[0..255] of Char;
    hDMode   : THandle;
    hPrinter : THandle;
    FormInfo : TFormInfo1;
    begin
    Printer.GetPrinter(PrintDevice, PrintDriver, PrintPort, hDMode);
    OpenPrinter(PrintDevice, hPrinter, nil);
    if hPrinter = 0 then
    raise Exception.Create('联接打印机失败!');with FormInfo do
    begin
    Flags := FORM_USER;
    pName := PChar(PaperName);
    Size.cx := PaperWidth*100;
    Size.cy := PaperLength*100;
    ImageableArea.Left := 0;
    ImageableArea.Top := 0;
    ImageableArea.Right := PaperWidth*100;
    ImageableArea.Bottom := PaperLength*100;
    end;//修改纸型,如果没有就新增
    if not SetForm(hPrinter, PChar(PaperName), 1, @FormInfo) then
    AddForm(hPrinter, 1, @FormInfo);ClosePrinter(hPrinter);
    end; 
    以上代码是我在网上找的,但不知怎么用,那位兄弟能详细解释一下吗
    感激...
      

  2.   

    搞好了,要引用winspool单元那打印的时候如何将自定义好的纸指定给打印机呢?