Benutzerdefinierte Papiergrösse

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

Moderator: Moderatoren

Antworten
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Benutzerdefinierte Papiergrösse

Beitrag von Roger »

Hallo,

Ich möchte mit einem Nadeldrucker massenhaft Einzahlungsscheine (Endlos-Formular, Traktor-Einzug) bedrucken. Das Papierformat entspricht ungefähr A5-hoch (Empfangsschein über dem Einzahlungsschein), ist aber dummerweise etwa 1,5 mm länger als A5. Das heisst, wenn ich als Form A5 wähle, passt nur der erste Ausdruck genau, danach verschiebt sich alles (nach oben).

In der XbpPrinter-Klasse habe ich noch keine passende Methode gefunden, um die Papiergrösse selbst zu setzen.

:setFormSize() arbeitet mit der FormID, :paperSize() dient nur der Abfrage.

Wie lässt sich eine benutzerdefinierte Papiergrösse einstellen?

Vielen Dank im voraus für jeden Hinweis!
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: Benutzerdefinierte Papiergrösse

Beitrag von AUGE_OHR »

hi,
Roger hat geschrieben: Ich möchte mit einem Nadeldrucker massenhaft Einzahlungsscheine (Endlos-Formular, Traktor-Einzug) bedrucken. Das Papierformat entspricht ungefähr A5-hoch (Empfangsschein über dem Einzahlungsschein), ist aber dummerweise etwa 1,5 mm länger als A5. Das heisst, wenn ich als Form A5 wähle, passt nur der erste Ausdruck genau, danach verschiebt sich alles (nach oben).

In der XbpPrinter-Klasse habe ich noch keine passende Methode gefunden, um die Papiergrösse selbst zu setzen.

:setFormSize() arbeitet mit der FormID, :paperSize() dient nur der Abfrage.

Wie lässt sich eine benutzerdefinierte Papiergrösse einstellen?
Du suchst an der falschen Stelle. Das XbpPrinter Object gibt dir nur
zurück was am Drucker eingestellt ist. Dieses kannst also unter Drucker/
Eigenschaften/Geräteeinstellungen/Zuordnung zwischen Papierformat und
Ausgabeschacht/Traktoreinzug mal andere Werte einstellen.

gruss by OHR
Jimmy
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Beitrag von Roger »

Hmm ... Im Dialog Druckereinstellungen lässt sich tatsächlich eine benutzerdefinierte Papiergrösse einstellen, aber die gilt offenbar nur für den aktuellen Printjob!

Beim nächsten Aufruf "erinnert" sich der Druckertreiber zwar noch, dass er eine benutzerdefinierte Papiergrösse verwenden soll, aber nicht mehr an die Masse - und verwendet einfach die Defaultwerte. In meinem Fall (Epson LQ-670) sind das 254 x 254 [1/10 mm]: ziemlich klein :?

Und mit :setFormSize() kann ich ebenfalls das Formular wählen (z.B. A5, oder eben "benutzerdefiniert"), aber wieder ohne die exakten Masse mitzugeben.

Gäbe es vielleicht einen Weg, diese zusätzliche Funktion des Setup-Dialoges zu nutzen, obwohl das in der XbpPrinter-Klasse nicht vorgesehen ist?
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:

Beitrag von Wolfgang Ciriack »

Hallo Roger,
Hast du mal unter Drucker- und Faxgeräte mit der rechten Maustaste die Servereigenschaften aufgerufen und dein Papierformat angelegt ? Es sollte dann für die Drucker verfügbar sein. Meistens sind für Endlosformulare Zollangaben vorhanden, d.h. statt A4 hat man das etwas längere 12" (30,72 cm) Papier oder viele Formulare sind auch in 8" (20,48 cm) oder 6" (15.36 cm). In deinem Fall würde ich mal auf 6" Papier tippen.
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:

Beitrag von brandelh »

Roger hat geschrieben:Gäbe es vielleicht einen Weg, diese zusätzliche Funktion des Setup-Dialoges zu nutzen, obwohl das in der XbpPrinter-Klasse nicht vorgesehen ist?
Sieh mal diesen Befehl in der Hilfe:
XbpPrinter()

Syntax

:setupDialog() --> self

Rückgabe

Die Methode gibt das Objekt zurück, das die Methode ausgeführt hat.

Beschreibung

Die Methode :setupDialog() aktiviert den Dialog, mit dem Jobmerkmale eines Druckjobs eingestellt werden. Er wird dazu verwendet, druckerspezifische Einstellungen für einen Druckjob festzulegen (z.B. die Papiergröße, oder ob im Hoch- oder Querformat gedruckt werden soll).
Die Methode schließt den Ausgabekanal des Druckers und darf daher nicht zwischen :startDoc() und :endDoc() aufgerufen werden.
das müsste doch das sein was du willst oder ?

Aber wie Wolfgang schon weiter oben geschrieben hat, werden alle Einstellungen in dieser Ebene normalerweise nicht dauerhaft gespeichert.
Dafür muss man das Druckerobjekt direkt aufrufen.
Gruß
Hubert
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Beitrag von Roger »

Hallo Wolfgang

Was meinst Du genau mit "Server-Einstellungen"? Die Druckereinstellungen habe ich wie erwähnt schon einige Male angepasst, die genauen Masse werden aber offenbar nicht gespeichert :( Aber mit dem Begriff "Server-Einstellungen" kann ich an der Stelle nichts anfangen ...

Danke und viele Grüsse,
Roger
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Beitrag von Roger »

Hallo Hubert

Eigentlich möchte ich den Printer-Setup-Dialog lieber nicht anzeigen. Und eben auch den Benutzern nicht zumuten, dass sie sich in dem Dialog jedesmal zur benutzerdefinierten Papiergrösse durchhangeln um dort 1490 x 2115 zu erfassen.

Oder meintest Du etwas anderes?

Danke und Gruss,
Roger
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

Beitrag von AUGE_OHR »

hi,
Roger hat geschrieben: Was meinst Du genau mit "Server-Einstellungen"?
ist das selbe wie Geräte Einstellung
Roger hat geschrieben: Eigentlich möchte ich den Printer-Setup-Dialog lieber nicht anzeigen. Und eben auch den Benutzern nicht zumuten, dass sie sich in dem Dialog jedesmal zur benutzerdefinierten Papiergrösse durchhangeln um dort 1490 x 2115 zu erfassen.
gibt es an der Stelle einen Button "hinzufügen" ? Wenn nein kann das die
Hardware genau so wenig wie mein alter NEC P60. Du must schon ein
eigenes Format in die :forms() Liste bekommen sonst kannst du es auch
nicht verwenden.
Zu beachten, wenn du nicht vorher "den" Printer einstellst das M$ immer
den "default Standart Drucker" nimmt.

Bei meinem Kyocera 1010 geht das wenn ich dann

Code: Alles auswählen

:setFormSize(XBPPRN_FORM_USER)
verwenden.

Ich gehe mal davon aus das du mit

Code: Alles auswählen

SET PRINTER TO OBJECT <oXbpPrinter>
arbeitest.

was ich aber an der ganzen Sache nicht verstehe wie du es grundsätzlich
schaffst, mit einem Nadeldrucker (was für einer?), solche Formulare zu
bedrucken und so zu justieren das es "passt". Wenn ich mich richtig
erinnere musste ich bei meinem P60 per "micropitch" und ESC Sequenzen
rumhantieren (Grafik Mode) um ein befriedigendes Ergebniss zu erhalten.

gruss by OHR
Jimmy
Zuletzt geändert von AUGE_OHR am Do, 31. Jan 2008 21:49, insgesamt 1-mal geändert.
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:

Beitrag von brandelh »

Roger hat geschrieben:Hallo Hubert

Eigentlich möchte ich den Printer-Setup-Dialog lieber nicht anzeigen.
das kann ich verstehen, deshalb muss man es einmalig im Druckobjekt direkt ändern.
Roger hat geschrieben:Oder meintest Du etwas anderes?
ich wollte nur zeigen wie man diesen aufrufen kann, da ich dich so verstanden hatte, dass du meinst das geht nicht.
Gruß
Hubert
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:

Beitrag von Wolfgang Ciriack »

Hallo Roger,
für das Windows Drucksystem kann man eigene Formulargrößen erstellen, die dann bei den einzelnen Druckern über die Eigenschaften eingestellt werden können. Wenn du im geöffneten Fenster "Drucker und Faxgeräte" das Kontextmenü mit der rechten Maustaste öffnest, so gibt es dort den Menüpunkt "Servereigenschaften". Dort kannst du z.B. "MeinFormat" mit benutzerdefinierten Seitenwerten neu anlegen, diese hast du nach dem Abspeichern dann in den einzelnen Druckereinstellungen zur Verfügung.
Viele Grüße
Wolfgang
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Beitrag von Roger »

Hallo zusammen

Vielen Dank erstmal für die verschiedenen Hinweise!

Momentan scheint mir das Definieren eines eigenen Formulars gemäss Wolfgangs Tipp am erfolgsversprechendsten.
Werde ich gleich morgen testen!

Antwort auf die Frage von Jimmy:
Jimmy hat geschrieben: was ich aber an der ganzen Sache nicht verstehe wie du es grundsätzlich
schaffst, mit einem Nadeldrucker (was für einer?), solche Formulare zu
bedrucken und so zu justieren das es "passt".
Ich verwende eine Druckerklasse eines Kollegen aus der Zürcher Xbase-Usergroup. Darin wird mit XbpPrinter gearbeitet, d.h. zuerst ein Printer-Objekt erzeugt und konfiguriert und dann ein Presentation-Space erzeugt.
Die eigentlichen Druckausgaben werden dann mit GraStringAt() positionsgenau ausgegeben. Funktioniert alles, egal ob ich einen Laserdrucker oder den Epson LQ-670 Nadeldrucker ansteuere.
Wenn nur die ungewöhnliche Endlos-Formularlänge nicht wäre ...

Und schliesslich noch eine Frage betreffend des Kommentars von Hubert:
Hubert hat geschrieben: deshalb muss man es einmalig im Druckobjekt direkt ändern.
Genau das stelle ich mir vor! Meinst Du auch sowas wie Wolfgang, oder auf einem anderen Weg (alles aus meiner Applikation heraus)?

Viele Grüsse,
Roger
Roger
Rookie
Rookie
Beiträge: 10
Registriert: Do, 17. Mai 2007 7:59

Beitrag von Roger »

Hallo zusammen

Jetzt hat es doch noch geklappt 8)

Die Einstellung der benutzerdefinierten Papiergrösse bei den Druckereigenschaften werden nur dann dauerhaft gespeichert, wenn der Druckerdialog nicht im Rahmen eines Druckjobs aufgerufen wird, sondern unter Einstellungen - Drucker und Faxgeräte.

Danach lässt sich dieses Formular auch verwenden:

Code: Alles auswählen

 :setFormSize(XBPPRN_FORM_USER)
Eigentlich ganz einfach - ich hatte nur dummerweise zig-mal die Formulargrösse im Druckerdialog des Druckjobs geändert, und das ging jedesmal wieder verloren ...

Danke nochmal für alle Eure Hinweise!

Viele Grüsse,
Roger
Antworten