with printer do
    try
      Title := '打印系统';
      //得到有效的打印位置
      leftedge := getdevicecaps(printer.handle, PHYSICALOFFSETX);
      topedge := getdevicecaps(printer.handle, PHYSICALOFFSETY);
      page := 0;
      begindoc;
      Canvas.Font.Name := '宋体';
      Canvas.Font.Size := 10;
      with stringgrid1 do
      begin
        for rowtemp := 1 to rowcount - 4 do
        begin
          htemp := ((rowtemp - 1) mod 3) * 10.1;
          if page = 0 then
          begin
            printer.canvas.textout(GetEnvelopeSize(13.7, 2.4 + htemp).x - leftedge, GetEnvelopeSize(13.5, 2.2 + htemp).y - topedge, copy(cells[5, rowtemp], 1, 4));
            printer.canvas.textout(GetEnvelopeSize(15.3, 2.4 + htemp).x - leftedge, GetEnvelopeSize(15, 2.2 + htemp).y - topedge, copy(cells[5, rowtemp], 7, 2));
            printer.canvas.textout(GetEnvelopeSize(16.3, 2.4 + htemp).x - leftedge, GetEnvelopeSize(16, 2.2 + htemp).y - topedge, copy(cells[5, rowtemp], 11, 2));
            printer.canvas.textout(GetEnvelopeSize(4.0, 3.1 + htemp).x - leftedge, GetEnvelopeSize(3.5, 2.9 + htemp).y - topedge, cells[0, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(4.0, 3.8 + htemp).x - leftedge, GetEnvelopeSize(3.5, 3.6 + htemp).y - topedge, cells[1, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(11, 3.8 + htemp).x - leftedge, GetEnvelopeSize(10.5, 3.6 + htemp).y - topedge, cells[2, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(5.5, 4.6 + htemp).x - leftedge, GetEnvelopeSize(5, 4.4 + htemp).y - topedge, smalltobig(strtofloat(cells[4, rowtemp])));
            printer.canvas.textout(GetEnvelopeSize(13.5, 4.6 + htemp).x - leftedge, GetEnvelopeSize(13.5, 4.4 + htemp).y - topedge, cells[4, rowtemp]);
          end
          else
          begin
            printer.canvas.textout(GetEnvelopeSize(13.7, 3.1 + htemp).x - leftedge, GetEnvelopeSize(13.5, 3.1 + htemp).y - topedge, copy(cells[5, rowtemp], 1, 4));
            printer.canvas.textout(GetEnvelopeSize(15.3, 3.1 + htemp).x - leftedge, GetEnvelopeSize(15, 3.1 + htemp).y - topedge, copy(cells[5, rowtemp], 7, 2));
            printer.canvas.textout(GetEnvelopeSize(16.3, 3.1 + htemp).x - leftedge, GetEnvelopeSize(16, 3.1 + htemp).y - topedge, copy(cells[5, rowtemp], 11, 2));
            printer.canvas.textout(GetEnvelopeSize(4.0, 3.8 + htemp).x - leftedge, GetEnvelopeSize(3.5, 3.8 + htemp).y - topedge, cells[0, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(4.0, 4.5 + htemp).x - leftedge, GetEnvelopeSize(3.5, 4.5 + htemp).y - topedge, cells[1, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(11, 4.5 + htemp).x - leftedge, GetEnvelopeSize(10.5, 4.5 + htemp).y - topedge, cells[2, rowtemp]);
            printer.canvas.textout(GetEnvelopeSize(5.5, 5.3 + htemp).x - leftedge, GetEnvelopeSize(5, 5.3 + htemp).y - topedge, smalltobig(strtofloat(cells[4, rowtemp])));
            printer.canvas.textout(GetEnvelopeSize(13.5, 5.3 + htemp).x - leftedge, GetEnvelopeSize(13.5, 5.3 + htemp).y - topedge, cells[4, rowtemp]);
          end;
          if ((rowtemp - 1) mod 3) = 2 then
          begin
            newpage;
            page := page + 1;
          end;
        end;
      end;
    finally
      EndDoc;
    end;