Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 3 Drucker drucken alles richtig einer nur ein weißes batt?! (https://www.delphipraxis.net/114379-3-drucker-drucken-alles-richtig-einer-nur-ein-weisses-batt.html)

guitar1 24. Mai 2008 11:28


3 Drucker drucken alles richtig einer nur ein weißes batt?!
 
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

ascotlx 24. Mai 2008 11:45

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
moin,

wie ist der HP Drucker eingestellt ?
Welcher Druckmodus wird verwendet ?? Irgendeine PCL-6 oder PCL-5 Emulation ?
Schau mal in die Konfiguration und wähl mal die HP-Laserjet Emulation aus (wenn vorhanden)

gruß

ascotlx

grizzly 24. Mai 2008 14:32

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
Und es kann sich nicht um die alte Geschichte handeln, daß das Drucken mit den VCL Routinen (Einfach auf Printer.Canvas malen) bei einigen Geräten nicht funktioniert? Ich hatte das früher gelegentlich und drucke seither mit dem Code den ich hier (wow, schon 10 Jahre alt) gefunden habe.

Gruß
Michael

Muetze1 24. Mai 2008 16:23

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
Jupp, grizzly hat den richtigen Link.

Hintergrund: Die BitBlt() Funktion ist von vielen Druckertreibern unterstützt und von ebenso vielen nicht. Von daher immer mit der MSDN-Library durchsuchenGetDIBits() Funktion arbeiten und nicht mit MSDN-Library durchsuchenBitBlt() (und deren Abarten). Die Draw() Routine arbeitet mit MSDN-Library durchsuchenBitBlt() bzw. MSDN-Library durchsuchenStretchBlt().

guitar1 24. Mai 2008 20:04

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
hey, vielen Dank für den Link, ich konnte es jetzt zwar noch nicht auf dem HP ausprobieren (geht erst am Mo wieder) aber da der Canon es auch nach der Änderung noch druckt bin ich da mal optimistisch eingestellt :-D

guitar1 26. Mai 2008 19:24

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi allerseits,

wie gesagt auf dem Canon und PDF-Drucker wird alles richtig gedruckt ... beim HP hingegen ... wird zwar auch alles gedruckt, jedoch mit einem dunkelgrauen Hintergrund !?!?! jetzt frag ich mich und auch euch - wie kann das sein ??? ich sende dem Drucker ja den Canvas des "Bildes" und auf dem Canvas ist der Hintergrund devinitiv WEIß und nicht grau!
Ich habe hier mal einen eingescannte version, damit sich jeder ein Bild davon machen kann, wie das aussieht ... ich habe auch schon in den Druckereinstellungen herumprobiert ... aber alle Ausdrucke hatten den selben, grauen Hintergrund :(

ich hoffe ihr habt eine Idee :wink:

grüße
guitar1

PS: zu dem Bild muss man sagen, das die Farben durchs einscannen entstanden sind, eigentlich ist das ganze Blatt einheitlich grau, der weiße Rand um das Bild ist der Randbereich auf dem der Drucker nicht drucken kann.

grizzly 26. Mai 2008 19:33

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
Nö. :(
Vielleicht irgendwas mit Paletten? Wird dem Bitmap in SeitenAnsicht irgendwann mal ein Pixelformat zugewiesen (in FormDruckansicht.DruckCanvas)? Wenn nicht, dann hat das Bitmap das pixelformat pfDevice - und mit dem hab ich mich auch schon gelegentlich geärgert.
Aber wie gesagt, ich hab sonst keinen Verdacht...

Gruß
Michael

guitar1 1. Jun 2008 17:05

Re: 3 Drucker drucken alles richtig einer nur ein weißes bat
 
hi grizzly,

vielen dank für denn tipp, es lag wirklich an der palette, ich hab sie jetzt geändert und alles klappt super :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz