Frage zu SetDuplexMode

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

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Frage zu SetDuplexMode

Beitrag von mini990 »

Hallo,
Folgende Eigenheit ist mir aufgefallen
ich nutze Druckerobjekt:SetDuplexMode( XBPPRN_DUPLEXMODE_BOOK )
Funktioniert auch einwandfrei bei mehrseitigen Drucken.
Was mir nicht gefällt:
Das Blatt wird auch bei einem einseitigen Druckauftrag nochmal eingezogen.
Kann man das abstellen?
Problem: Ich weiß vor Startdoc() nicht wie viele Seiten das Dokument haben wird.

Gruß Stefan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Der Drucker auch nicht ;-)

Du könntest die Datenermittlung durchlaufen ohne zu drucken und die Anzahl der Seiten ermitteln.

Eventuell kann man dem Drucker auch einstellen "leere Seiten" nicht zu drucken, eventuell erkennt er dann vor dem Einziehen, dass es eine leere Seite wird.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Herbert »

mini990 hat geschrieben:Problem: Ich weiß vor Startdoc() nicht wie viele Seiten das Dokument haben wird.
Ich würde nicht ein zweimaliges Durchlaufen des Erstellens vornehmen.
Versuche vor dem Druckbefehl zu bestimmen, ob bloss wenig Daten entstehen werden. Entsprechend für diesen Fall den Duplex-Modus ausschalten.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Die Daten vorab in Arrays zu sammeln und "in einem Rutsch" zu drucken hätte noch den Vorteil bei sehr vielen Treffern eine Sicherungsabfrage einzubauen ...
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Frage zu SetDuplexMode

Beitrag von AUGE_OHR »

mini990 hat geschrieben:Das Blatt wird auch bei einem einseitigen Druckauftrag nochmal eingezogen.
Kann man das abstellen?
siehe dir mal das Beispiel zu XbpPrinter() im Xbase++ Help File an.

ein Drucker behält nun seine (Vor-) Einstellung so lange bis er "gelöscht" ( oDC:destroy() ) wird.
XbpPrinter(), XbpFont() und XbpBitmap() Objecte sollte man IMHO immer explizit löschen um keine "Memory" Leaks zu produzieren
mini990 hat geschrieben:Problem: Ich weiß vor Startdoc() nicht wie viele Seiten das Dokument haben wird.
du machst einen Denkfehler da dir der "Presentation-Space" nicht klar ist.

Code: Alles auswählen

FUNCTION PrinterPS( cPrinterObjectName )
LOCAL oPS, oDC := XbpPrinter():New() 
   ... 
   oPS   := XbpPresSpace():New() 
   oPS:Create( oDC, aSize, GRA_PU_LOMETRIC ) 
RETURN oPS    

FUNCTION Drucke() 
   oPS := PrinterPS()
   oPS:device():startDoc() 
   ...
   GRA*(oPS, ... )
   ...
   oPS:device():endDoc()
alles was du mit GRA* Function "malst" passiert ja im oPS "Presentation-Space". der Drucker ist lediglich ein möglicher "Device-Context" für eine Ausgabe.

wie du im Beispiel c:\ALASKA\XPPW32\Source\samples\basics\Printer\PrintOut.prg im Preview siehst kannst du den Druck-Auftrag an jeden installierten Drucker schicken,
der sich dann um den Duplex-Druck kümmern muss WENN du mehr als 1 Seite im "Presentation-Space" hast.
gruss by OHR
Jimmy
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Herbert »

Jimmy, den Duplex-Modus musst du vor dem Startdoc setzen. Deshalb muss vorher die mögliche Seitenzahl>1 bestimmt werden.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Im Hinblick auf mögliche SQL Erweiterungen sollte man heute eh nicht mehr wärend dem Suchlauf direkt drucken, denn das kann man dann gleich wieder in die Tonne treten wenn man auf SQL umsteigt.
Besser ist es die Datensammlung von der Ausgabe zu trennen, und dann hat man auch keine Probleme vorher zu ermitteln wieviele Datensätze gefunden wurden.
Insbesondere spart man sich 2 Suchläufe wenn man auch noch eine Vorschau will ;-)

Als Zwischenspeicher habe ich immer 2 dimensionale Arrays verwendet, ab 2.0 kann man auch ein normales Array mit DataObjects nutzen.
Bei einer Umstellung auf SQL wird dann nur die Erstellung des Arrays anders sein oder man verwendet gleich das Resultset.
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Martin Altmann »

Hmm,
ich habe noch keinen Duplexdrucker gesehen, der eine Seite zweimal durchzieht, wenn der Duplexmodus eingestellt, aber nur eine (Vorder)seite zu bedrucken ist!
Was anderes ist es natürlich, wenn man am Ende der ersten Seite in dem Fall unnötigerweise eine neue Seite beginnt, um sie gleich wieder zu beenden! Dann würde aber im Nicht-Duplexmodus nach der bedruckten Seite eine leere Seite herauskommen!
Ansonsten zieht ein Duplexdrucker i.A. die Seite ein, bedruckt die Vorderseite und schmeisst sie aus - gewendet wird dann nicht.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Mein HP 8600 Bürofarbspritzer zieht das Blatt erneut ein und wendet es, auch wenn ich nur eine Seite ausdrucke (aktuelle Seite drucken) und Dublex aktiviere.
Mein Canon iP 7200 macht das nicht, er druckt nur die eine Seite und wirft dann gleich aus.

Allerdings kann auch ein Seitenvorschub zu viel eine neue Seite erzwingen:

Code: Alles auswählen

:newPage() --> self
// keine Druckdaten oder leere Zeilen ...
:endDoc() --> self
so wird immer eine leere Seite nachgeschoben !
vor :newPage() muss man also prüfen, ob es übernaupt noch was zu drucken gibt !

PS: bei meinen früheren Laserdruckern gab es eine Option "Leere Seiten unterdrücken", die finde ich bei meinen aktuellen Geräten nicht mehr.
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Martin Altmann »

Mein Reden :!:
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Frage zu SetDuplexMode

Beitrag von mini990 »

Dieses Phänomen tritt hier bei meinem HP OfficeJet 6700 auf.
Bei einem OKI B720 mit Duplexeinheit macht er es nicht.....
Lustige Welt....

Gruß Stefan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Wie geschrieben, auch mein HP OfficeJet PRO 8600 zieht immer ein und dreht das Blatt, sobald Dublex eingeschaltet ist.

Meiner hat einen Netzwerkanschluß und USB, beim Netzwerkzugriff legt er immer nach einer halben Seite einige Sekunden Wartezeit ein,
obwohl die Druckdaten keine Bilder enthalten und mit 100 MBit auch schnell übertragen sein müssten. Mit USB ist er sofort fertig.
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Martin Altmann »

Den Druckertreiber hat wahrscheinlich ein Erstsemester-Informatiker programmiert :badgrin:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Frage zu SetDuplexMode

Beitrag von mini990 »

mein 6700 hängt auch am Netz. Geschwindigkeitsprobleme treten hier jedoch auch bei
großen Dateien bzw. Bildern nicht auf.....

Gruß Stefan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Tom »

Ich meine, mich an einen Duplexdrucker zu erinnern, der zuerst immer die Rückseite gedruckt hat. War ein Kyocera oder so. Selbst im Simplex-Modus :wink: hat er die Seite zweimal eingezogen.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von Wolfgang Ciriack »

Tja, bei allen 3 Monaten ein neues Druckermodel bleibt wenig Zeit, vernünftige Druckertreiber zu entwickeln...
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu SetDuplexMode

Beitrag von brandelh »

Das ist natürlich auch eine Frage der Sortierung, wenn man 3 Seiten auf Dublex druckt und die letzte wird nicht wieder eingezogen,
dann würde die in der falschen Richtung auf dem Stapel liegen. Das wäre uns dann ja auch nicht Recht ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Frage zu SetDuplexMode

Beitrag von AUGE_OHR »

Herbert hat geschrieben:Jimmy, den Duplex-Modus musst du vor dem Startdoc setzen.
Deshalb muss vorher die mögliche Seitenzahl>1 bestimmt werden.
wieso ?

ich kann doch VOR dem o:Startdoc meinen Presspace füllen z.b. für ein Preview und durch die Druckerauswahl
jederzeit den Device-Context wechseln und dann den evtl. Duplex-Modus berücksichtigen.
gruss by OHR
Jimmy
Antworten