Fehlverhalten beim Abbruch vom Druck

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 253
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 17 Mal
Danksagung erhalten: 4 Mal

Fehlverhalten beim Abbruch vom Druck

Beitrag von Dominik Krebs »

Hallo zusammen,
ich drucke meine Rechnungen mit der tbxWinPrint Klasse von Friedhelm.
Diese greift auf auf den XbpPrinter() zurück.

Um die Anzahl der zu druckenden Seiten zu ermitteln, durchlaufe ich jeden Druck immer Zwei mal. Einmal um die Seitenanzahl zu ermitteln und einmal und das Dokument auszugeben.

Den Druck zu Seitenanzahlermittlung breche ich nach dem Durchlauf mittels

Code: Alles auswählen

oPrinter:abort()
ab, damit das Dokument nicht ausgedruckt wird.

Dies klappt auch in 99% Prozent der Fälle. Leider bleibt da doch das 1%. Grade bei Rechnungen mit > 5 Seiten, kommt es immer mal wieder vor, das der Druck zur Druckseitenermittlung ebenfalls ausgedruckt wird. Meistens ist es dann so, dass irgendwo im letzten viertel des Dokuments sichtbar aufgehört wurde zu drucken.

Laut der Beschreibung von

Code: Alles auswählen

:abort()
, sollte alles was seit

Code: Alles auswählen

:startDoc()
dem Spooler übergeben wurde, gelöscht werden sollte.

Dies scheint aber nicht immer der Fall zu sein. Hat jemand ähnliche Erfahrungen gemacht?
Gruß Dominik
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15745
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 77 Mal
Danksagung erhalten: 41 Mal
Kontaktdaten:

Re: Fehlverhalten beim Abbruch vom Druck

Beitrag von brandelh »

Ich meine man kann im Druckertreiber einstellen ob er sofort weiterleitet oder wartet bis der Druckjob komplett ist.
Man könnte die Druckwarteschlange auch anhalten, ob das aber aus einem Programm heraus geht weiß ich nicht.

Ich habe das in meiner Druckerklasse so geregelt, dass ein Flag verhindert, dass z.b. bei der Druckvorschau die echten Druckbefehle ausgeführt werden. Das nützt dir aber nix.
Gruß
Hubert
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 253
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 17 Mal
Danksagung erhalten: 4 Mal

Re: Fehlverhalten beim Abbruch vom Druck

Beitrag von Dominik Krebs »

Wie genau machst du das den mit der flag?
Gruß Dominik
RolandG
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 178
Registriert: Mi, 09. Jan 2019 16:02
Wohnort: Neresheim
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Fehlverhalten beim Abbruch vom Druck

Beitrag von RolandG »

Hallo Dominik,

ich frage mich, warum XbpPrinter() alles was gespoolt wird im Speicher behalten sollte?
Ja nach dem was und wie gedruckt wird müsste ein recht großer Buffer bereitgestellt werden der alles bis zum Schluss behält und nichts an den Treiber sendet.
So etwas habe ich nicht gefunden.
Wie Hubert schon schreibt wird das von den Möglichkeiten und Einstellungen des Druckertreibers abhängig sein ob der viel (alles) puffert.
Was wenn auch der Puffer voll ist und Xbase++ das nicht merkt bzw. Deine Druckschleife nicht angehalten werden kann?
Irgendwann hängt alles oder es kommen irgendwann einfach Seiten raus - so wie Du es im Problem beschreibst.

Auf das oPrinter:Abort() würde ich mich nicht 100%ig verlassen.

Gruß
Roland

P.S.
Ich berechne meine Seiten im Voraus oder drucke vorab in eine Datei.
Gruß
Roland
Antworten

Zurück zu „Drucken und Export“