Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - JPEG wird nicht gedruckt
Dusty - Di 26.01.10 19:05
Titel: JPEG wird nicht gedruckt
Ich möchte ein JPEG in Seitengröße als Formular drucken, darauf kommen die Texte.
Mit dem PDF Drucker funktioniert das wunderbar - der Laserjet druckt jedoch das JPEG nicht.
Auch als Bitmap nicht. Woran kann das liegen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| var Image1 : TImage; bmp : TBitMap; begin if PrintDialog1.Execute then begin Printer.Title := 'Meldeschein'; Printer.Orientation := poPortrait; Printer.BeginDoc; Image1 := TImage.Create(nil);
try DruckerInitialisierung; if FileExists(Programmpfad+'Formulare\Meldeschein.JPG') then Image1.Picture.LoadFromFile(Programmpfad+'Formulare\Meldeschein.JPG') else MessageDlg('Formular Meldeschein nicht gefunden!',mtError,[mbOK],0);
with Printer.Canvas do begin
bmp := TBitmap.Create; bmp.PixelFormat := pf8bit; bmp.height := image1.picture.graphic.height; bmp.Width := image1.picture.graphic.Width; bmp.Canvas.Draw(0,0,Image1.Picture.Graphic); Draw(0, 0, bmp); bmp.Free;
.... |
Im PDF wird das Formular sowohl mit Draw(Image1) also auch mit Draw(bmp) korrekt erzeugt.
Nur der Drucker macht da nicht mit :-(
Habe gerade herausgefunden, dass der Drucker das Formular druckt, wenn ich keinen Text nachschiebe.
Aber es muss doch möglich sein, Text auf das JPEG zu drucken?!
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 26.01.2010 um 18:16
---
Moderiert von
Narses: Beiträge zusammengefasst---
Wenn ich das Bitmap beschreibe (with bmp.canvas do ...) und das veränderte Bitmap zum Drucker schicke, habe ich übrigens das gleiche Ergebnis - Druckerblatt leer - PDF-Blatt ok.
Jakob_Ullmann - Di 26.01.10 19:56
Hast du mal StretchDraw probiert? Vielleicht ist das JPEG einfach zu klein für eine Druckerauflösung. Ansonsten kannst du ja mal versuchen, einen Text an den Drucker zu senden, rein zur Probe. Schriftgrößen sind ja zudem auflösungsunabhängig.
Dusty - Di 26.01.10 20:40
Mit Stretchdraw geht es auch nicht.
Das JPEG ist auch nicht zu klein.
Wenn ich statt auf das Canvas vom Drucker auf das Bitmap schreibe und dann drucke,
habe ich das gleiche Ergebnis: PDF ok, Blatt leer.
Speichere ich das veränderte Bitmap und drucke es dann, geht es auch auf dem Drucker!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| with bmp.canvas do begin
... Draw(0,0,Image1.Picture.Graphic);
Font.Name := 'Arial'; Font.Size := 27;
Textout(800,284,EditTurniername.Text); Textout(700,352,EditAusrichter.Text + ' / ' + EditTurnierort.text);
....
end;
bmp.SaveToFile(Programmpfad+'druck.bmp');
if PrintDialog1.Execute then begin Printer.Title := 'Meldeschein'; Printer.Orientation := poPortrait; Printer.BeginDoc; DruckerInitialisierung; Image1.Picture.LoadFromFile(Programmpfad+'druck.bmp'); Printer.Canvas.Draw(0, 0, Image1.Picture.Bitmap ); Printer.EndDoc; end; |
So ganz toll finde ich die Lösung aber nicht. Und außerdem möchte ich wissen,
warum ich nicht auf der Printer.Canvas Leinwand machen kann, was ich will ;-)
jaenicke - Di 26.01.10 21:30
Also ich kann so keinen Fehler reproduzieren. :nixweiss:
Ich weiß nur nicht ob es am Drucker liegt oder ob ich was anders mache als du.
Hast du vielleicht eine kleine Demo bzw. kannst eine schnell machen?
Dusty - Di 26.01.10 22:20
Hier die Demo mit drei Ansätzen das Formular zu drucken.
Variante 1 geht,
Variante 2 hin und wieder - das reicht aber nicht -
und bei Variante 3 wird nur der Text gedruckt, nicht aber das Formular / die Grafik.
Na dann mal viel Spaß :lol:
Bin gespannt, ob du dahinter kommst.
Dusty - Di 02.02.10 21:18
Ich bin jetzt zufällig fündig geworden. In dem Buch "Tipps und Tricks zu Delphi" steht, dass es mit dem Druckertreiber zusammenhängt. Man muss die Farbtiefe mit dem Parameter pixelformat von Hand einstellen, damit es geht. Ausprobiert habe ich es allerdings noch nicht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!