Einzelnen Beitrag anzeigen

DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Drucken auf Adobe Acrobat X

  Alt 4. Sep 2014, 13:16
Den Code habe ich runtergeladen um erstmal zu verstehen wie das drucken überhaupt geht. Das ist doch ein bissl anders als früher bei DOS und einem 7 Nadeldrucker

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zeile, x, y: integer;
    breite, hoehe, randlinks, randoben: integer;
    sl :TStringList;

begin
  sl:=TStringlist.Create;
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  sl.add('sdjskd skdj');
  if PrintDialog1.Execute then begin
    Printer.BeginDoc; //Druckjob beginnen
    SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); //Umstellen auf 1/10 mm

    //Schrift-Einstellungen:
    Printer.Canvas.Font.Name:='Courier New';
    Printer.Canvas.Brush.Color:=clWhite;
    Printer.Canvas.Font.Height:=50; //5 mm

    //Blattgöße in 1/10 mm ermitteln:
    breite:=GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE)*10;
    hoehe:=GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE)*10;

// randlinks:=250; //2,5 cm
// randoben:=250; //2,5 cm
    randlinks:=0; //2,5 cm
    randoben:=0; //2,5 cm

    x:=randlinks;
    y:=randoben*-1;

    for zeile:=0 to sl.Count-1 do begin

      if -y>(hoehe-2*randoben) then begin
        y:=randoben*-1;
        Printer.NewPage;
      end;

      if y=-randoben then begin
        Printer.Canvas.Font.Style:=[fsbold];
        Printer.Canvas.TextOut(x, y, 'Seite '+IntToStr(Printer.PageNumber));
        Printer.Canvas.Font.Style:=[];
        y:=y-Printer.Canvas.TextHeight(sl[zeile]);
      end;

      Printer.Canvas.TextOut(x, y, sl[zeile]);

      y:=y-Printer.Canvas.TextHeight(sl[zeile]);

    end;
    Printer.EndDoc;
  end;
  sl.Free;

end;
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat