Entschuldigt bitte, dass ich ein altes Thema wieder aufmache: Ich konnte nicht anders
Ich möchte
das Ganze beim Drucken benutzen. Die auszudruckenden Bilder sollen alle der Vermerk "Kopie" erhalten, so dass niemand mehr den Stempel zücken muss. Ich habe deshalb den Quellcode in meine an sich kurze Druck-Routine eingebaut. So weit so gut. Es wird dann auch der schräge Text gedruckt. Zu klein, an der falschen Stelle und nicht transparant, was sich aber vermutlich noch ändern ließe.
Ich habe aber ein Problem mit der Geschwindigkeit! Wenn ich nur eine einzige DIN-A4-Seite drucke, geht der Rechner für ca. 2 Minuten total in die Knie
Liegt es an mir?
Mein Quelltext sieht nach dem Integrieren wie folgt aus, wobei DruckJob eine
TStringList ist und
Label4 ausgibt, wieviel Seiten des Auftrags schon gedruckt wurden:
Delphi-Quellcode:
Procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
I : Integer;
PNG : TPNGObject;
lf : TLogFont;
tf : TFont;
Begin
// Drucker zum Drucken auswählen
Printer.PrinterIndex:=Printer.Printers.IndexOf(ComboBox1.Text);
Try
tf:=Font.Create;
// Zeiger auf Schrift
PNG:=TPNGObject.Create;
// Zeiger auf PNG-Datei
Printer.BeginDoc;
// Drucker vorbereiten
Printer.Title:='
Ausdruck';
For I:=0
To Pred(DruckJob.Count)
Do
Begin
PNG.LoadFromFile(DruckJob.Strings[I]);
Printer.Canvas.StretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),PNG);
Printer.Canvas.Font.
Name:='
Arial';
// Schriftsart für Wasserzeichen
Printer.Canvas.Font.Size:=24;
// Schriftgröße für Wasserzeichen
tf.Assign(Printer.Canvas.Font);
GetObject(tf.Handle,SizeOf(lf),@lf);
lf.lfEscapement:= 320;
lf.lfOrientation:=320;
SetBkMode(
Handle,TRANSPARENT);
tf.Handle:=CreateFontIndirect(lf);
Printer.Canvas.Font.Assign(tf);
Printer.Canvas.TextOut(Width
div 2, Height
div 2, '
KOPIE');
If I<Pred(DruckJob.Count)
Then
Printer.NewPage;
// Neue Seite anfangen
PB1.Position:=I;
Label4.Caption:=FormatFloat('
#,##0',Succ(I));
Application.ProcessMessages;
End;
Finally
Printer.EndDoc;
// Druckauftrag beenden
tf.Free;
PNG.Free;
End;
Close;
End;
Schonmal Dank für Eure Ideen
Alex