AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Große Bitmaps drucken zerschiessen Spoolsystem
Thema durchsuchen
Ansicht
Themen-Optionen

Große Bitmaps drucken zerschiessen Spoolsystem

Ein Thema von Sven Janssen · begonnen am 9. Okt 2006 · letzter Beitrag vom 10. Okt 2006
 
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#1

Große Bitmaps drucken zerschiessen Spoolsystem

  Alt 9. Okt 2006, 14:37
Hallo,

ich muss Bitmaps mit einer Auflösung von ca. 3500x2400 bzw. 2400x3500 Pixel drucken.
Dabei habe ich das Problem, das mir regelmäßig das Drucksystem von Windows XP (wahrscheinlich auch andere Systeme ) den Bach runter geht. Das macht sich Bemerkbar, das beim erneuten Ausdruck eine leere Seite ausgedruckt wird.
Erst ein Neustart der Druckerwarteschlange unter Verwaltung->Dienste bringt das System wieder zum drucken.

Hier der relativ simple Quellcode:
Delphi-Quellcode:
   seitenHoehe:=printer.PageHeight;
   seitenBreite:=printer.PageWidth;

                
        Printer.BeginDoc;
        image:=TImage.create(nil);
   try
      image.Picture.LoadFromFile(bildpfad);
        except
      messagedlg('Konnte das Bild "'+bildpfad+'" nicht laden',mterror,[mbok],0);
                image.free;
              continue;
        end;
   bitmap:=TBitmap.Create;

   GRect.Left:=0;
   GRect.Top :=0;
   bitmap.assign(image.Picture.graphic);

   w:=Image.Picture.width;
        h:=Image.Picture.height;
        if w > h then begin
      rotateBitmap(bitmap,90);
      hlp:=w;
      w:=h;
      h:=hlp;
   end;

   if h/w < seitenHoehe / seitenBreite then begin
      GRect.Bottom := Trunc(((h / f) / (w/f)) * seitenBreite);
      GRect.Right := trunc(seitenBreite);
   end else begin
      GRect.Bottom := trunc(seitenHoehe);
      GRect.Right := Trunc( (w/f) / (h/f) * seitenHoehe);
   end;

        Printer.Canvas.StretchDraw(Grect,bitmap);

   bitmap.Free;
   image.free;
   Printer.enddoc;
Freue mich über anregungen wie man das Problem in den Griff bekommen kann.

Mir ist auch aufgefallen, das einige Drucker(treiber) direkt eine weiße Seite ausdrucken, andere wenigstens das Bild einmal ausdrucken bevor das Spoolsystem den Geist aufgibt.

Sven
PS:Benutze Delphi6
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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