Hi,
ich habe Programm entwickelt, das bestimmte Formulare ausdrucke kann. Auf dem PDF Drucker von FreePDF, einem Canon ip3000 und einem Canon ip4200 funktioniert alles super .. es kommt genau so aus dem Drucker wie es soll. Nun habe ich letztens versucht auf einem LaserJet 1018 von HP zu drucken ..nichts .. nur ein weißes Blatt .. mit allen andren Programme Editor, Word, Excel, Paint etc. druckt der Drucker gut, aber nicht mit meinem ??? wie kann das sein?
hier mal etwas Code:
Delphi-Quellcode:
procedure TFormMain.Drucken1Click(Sender: TObject);
var
x,y: integer;
SeitenAnsicht: TImage;
begin
if PrintDialog1.Execute then
begin
Printer.Title:= CboxFormularart.Text+' '+LabNr.Caption;
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_ANISOTROPIC);
x:= GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH);
y:= GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT);
SetWindowExtEx(Printer.Canvas.Handle,x,y,Nil);
SetViewportExtEx(Printer.Canvas.Handle,x,y,Nil);
try
SeitenAnsicht:= Timage.Create(self);
SeitenAnsicht.Visible:= false;
FormDruckansicht.DruckCanvas(SeitenAnsicht, x, y);
Printer.Canvas.Draw(0-GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETX),
0-GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETY),
SeitenAnsicht.Picture.Graphic);
finally
SeitenAnsicht.Free;
end;
Printer.EndDoc;
end;
end;
die procedure DruckCanvas erwartet das als Parameter DruckCanvas(var Img: TImage; Width, Height: Integer);
mit den Angaben von width und height wird das Formular dann passend auf die Größe des Canvas' von Img gezeichnet (alle größen in dem Formular sind proportional zur Höhe und Breite).
Ich hoffe jemand von euch hat eine gute Idee .. denn da der ip3000 an meinem Arbeitsplatz duch den LaserJet ersetzt wurde kann ich momentan nichts mit meinem Programm durcken ... und ich benötige es eigentlich täglich!!!
grüße
guitar1