Drucker - Papiergroesse

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Drucker - Papiergroesse

Beitrag von linus »

Hallo Experten - ich habe ein echt trickreiches Problem mit Ausdrucken. Also: Ich benutze einen CAB-Etikettendrucker zur Ausgabe von Endlosetiketten unter Suse 11.4 (Lazarus 0.9.28.2). Die Etiketten sind im PPD-File des Druckers entsprechend definiert, der CUPS-Testseitenausdruck ist OK.

Etiketten-Format ist B=75mm, H=58mm. Postscriptmaessig auf 1/72-Zoll umgerechnet ergibt das also B=75/25.4*72=213 , H analog dazu 165. Soweit - sogut und auch so im PPD-File fixiert.

Lt. Doku im Unit Printers liefert die Methode TPrinter.GetPageWidth (bzw. .GetPageHeight) die Groesse der Seite in Points/Pixels. Bei meiner Etikettengroesse und einer Druckeraufloesung von 300 dpi (die wird von TPrinter auch korrekt ermittelt) sollte man also B=75/25.4*300=885 dots, bzw. H=669 dots erwarten.

ABER: TPrinter.PageWidth liefert 2550 und .PageHeight liefert 3300 dots zurueck?! Also - erstens sind die Werte fuer Breite/Hoehe offensichtlich vertauscht und zweitens irgendwie falsch. Und dementsprechend sind anschliessend die Werte fuer die BoundingBox im erzeugten PostScript-Dokument auch falsch (wenn ich die zurueckrechne komme ich auf ein Format von 11" x 8.5" - ist das ein LETTER-Format? Und falls ja - warum?)

Entweder ich habe irgendwas nicht oder falsch verstanden oder etwas laeuft hier schief...

So - let me know...
Wer mehr denkt hat mehr vom Hirn...

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Drucker - Papiergroesse

Beitrag von carli »

linus hat geschrieben:ABER: TPrinter.PageWidth liefert 2550 und .PageHeight liefert 3300 dots zurueck?! Also - erstens sind die Werte fuer Breite/Hoehe offensichtlich vertauscht und zweitens irgendwie falsch. Und dementsprechend sind anschliessend die Werte fuer die BoundingBox im erzeugten PostScript-Dokument auch falsch (wenn ich die zurueckrechne komme ich auf ein Format von 11" x 8.5" - ist das ein LETTER-Format? Und falls ja - warum?)


Es ist ja egal, was du als Höhe und was als Breite definierst. Der Testseitenausdruck scheint das ganze wohl auch erst um 90° gedreht zu haben. Und eine Drehung um 90° sollte ja dann kein Problem darstellen.

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: Drucker - Papiergroesse

Beitrag von linus »

carli hat geschrieben:Es ist ja egal, was du als Höhe und was als Breite definierst


Nö - ist es natürlich nicht. Denn stell Dir mal vor, eine Textanwendung bekommt falsche Informationen über die Seitenbreite - wie soll die Anwendung korrekte Zeilenumbrüche erzeugen oder einen ordentlichen Blocksatz machen? Und wenn die Seitenhöhe nicht stimmt - wie soll denn dann ein "weicher" Seitenumbruch in einem Fließtextbereich ermittelt werden?

Außerdem ist die CUPS-Testseite richtig, gerade eben weil CUPS die Testseite als Querformat ausgibt, d.h. wenn man die so erzeugte Testseite lesbar vor sich hält, ist die lange Seite des Papiers unten quer, genauso, wie es sein soll - nur die Methoden von TPrinter (via Package Printer4Lazarus) liefern falsche Werte.
Wer mehr denkt hat mehr vom Hirn...

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: Drucker - Papiergroesse

Beitrag von linus »

Nachtrag: Also, das ist ja noch viel schlimmer, als ich dachte: Ich habe jetzt (so rein spaßeshalber) das selbe für meinen Brother-Drucker ausprobiert, der standardmäßig mit A4-Papier bestückt ist und auch so eingerichtet ist. Und es sieht so aus, als ob TPrinter.PageWidth immer den Wert 2550 und .PageHeight immer den Wert 3300 dots zurück liefert. Die selben Werte kommen auch, wenn ich diesen Drucker z.B. auf A5 einrichte. (Interessanterweise wechselt der Rückgabewert von TPrinter.PaperSize.PaperName, wenn ich das Papierformat wechsle - also irgendwas wird da schon ausgewertet).

Stehen diese Werte womöglich hart im Printer-Package drin, weil der Entwickler garnicht daran dachte, daß es auch Europäer gibt, die mit US-Letter nix am Hut haben??? Bin ich ernsthaft der erste, der sich das genauer anschaut? Kann ich kaum glauben...
Wer mehr denkt hat mehr vom Hirn...

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Drucker - Papiergroesse

Beitrag von pluto »

Vielleicht hat TPrinter Probleme mit den Seiten-Format. Also ob Quer oder Hochkannt. Hast du mal geschaut, welche Einheiten Verwendet wird?
Hast du schon in einem Delphi Forum nach dem Problem gesucht oder z.b. nach TPrinter? Wenn du Glück hast, geht die dortige Lösung auch hier in Lazarus.
http://www.delphipraxis.net/dp_search.php
Vielleicht ist da was dabei.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Drucker - Papiergroesse

Beitrag von Christian »

Probeier das ganze bitte mal mit Lazreport, das würde erklären warum das bei TPrinter itself niemandem aufällt. Drucker direkt ansteuern ist ja auch irgendiwie n stück weit pervers ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: Drucker - Papiergroesse

Beitrag von linus »

pluto hat geschrieben:Hast du schon in einem Delphi Forum nach dem Problem gesucht oder z.b. nach TPrinter?


Leider habe ich nichts verwertbares gefunden...

Christian hat geschrieben:Drucker direkt ansteuern ist ja auch irgendiwie n stück weit pervers


Also - unter meinem Projekt liegen ziemlich ausgereifte Objektstrukturen (die ich projektunabhängig eingesetze, weil sie robust, zuverlässig und universell sind) und diese Strukturen beinhalten auch eine Art Report-Generator. Der ist zwar sicher nicht so umfangreich wie LazReport, aber doch so gut, daß ich bisher alle Anforderungen damit abdecken konnte (u.a. automatische Listenerzeugung, Datenintegration für Tabellen, Einzel-Objekte und Datenfelder über Platzhalter, Format-Anweisungen für die Datendarstellung, Grafik-Ausgabe, milimetergenaues Positionieren von Elementen Text/Grafik, freie Skalierbarkeit/Zoomen, u.v.a.m.) Und weil dieses Tool eben so unkompliziert und wunderbar mit meinen Basis-Objekten arbeiten kann, will ich das auch unter Linux haben.

Nur - das geht eben alles voll in die Hose, wenn die Maße, die TPrinter liefert, nicht stimmen. Außerdem will ich ja nicht den Drucker itself steuern, sondern ich benutze eben die Schnittstelle (CUPS), die vom Betriebssystem genau dafür bereitgestellt wird. Und obendrein ist die Ansteuerung von Druckern nicht pervers, sondern eingentlich auch nur eine Geräteansteuerung wie viele andere auch. @Christian: Hast Du sowas schonmal gemacht? Das ist nix für HighLevel-Anwender, da muß man i.d. Regel tief in die Eingeweide blicken...
Wer mehr denkt hat mehr vom Hirn...

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Drucker - Papiergroesse

Beitrag von pluto »

Nur - das geht eben alles voll in die Hose, wenn die Maße, die TPrinter liefert,

Hast du schon im FPC Forum nach geschaut? Vielleicht ist das ein Bekannter BUG. Du kannst dir auch mal den Code dazu anschauen. Vielleicht fällt dir ein Fehler auf.

Es könnte noch einen Grund geben: Bei Google "Erde" hatte ich mal den Fehler, dass die Position Angaben nicht gestimmt haben. Warum? Ganz einfach: Es wurden Falsche Einheiten Verwendet. Vielleicht wäre das ein Hinweis bzw. eine grobe Spur. Weißt du wie ich meine?

Ich könnte mir vorstellen, dass es beim TPrinter den selben Fehler gibt. Ich muss aber gestehen: Ich habe noch nicht viel mit TPrinter gemacht.

Ich würde inzwischen einfach alles nach HTML && CSS Exportieren und das drucken den Web-Browser überlassen. Wäre vermutlich das einfachste und sicherste.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Drucker - Papiergroesse

Beitrag von Maik81ftl »

pluto hat geschrieben:
Nur - das geht eben alles voll in die Hose, wenn die Maße, die TPrinter liefert,

Hast du schon im FPC Forum nach geschaut? Vielleicht ist das ein Bekannter BUG. Du kannst dir auch mal den Code dazu anschauen. Vielleicht fällt dir ein Fehler auf.

Es könnte noch einen Grund geben: Bei Google "Erde" hatte ich mal den Fehler, dass die Position Angaben nicht gestimmt haben. Warum? Ganz einfach: Es wurden Falsche Einheiten Verwendet. Vielleicht wäre das ein Hinweis bzw. eine grobe Spur. Weißt du wie ich meine?

Ich könnte mir vorstellen, dass es beim TPrinter den selben Fehler gibt. Ich muss aber gestehen: Ich habe noch nicht viel mit TPrinter gemacht.

Ich würde inzwischen einfach alles nach HTML && CSS Exportieren und das drucken den Web-Browser überlassen. Wäre vermutlich das einfachste und sicherste.


und denn Manuell durcken? ich glaube er wollte Direkt ein Druckmenü nutzen, sag ich aber gleich im Vorfeld, das ich da auch noch massen zu lesen habe... :D TStrinGrid inkl. extra daten drucken. aber zum Test, werd ich des ja erst mal via PDF machen. :D ist ja analog des selbe.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Drucker - Papiergroesse

Beitrag von pluto »

und denn Manuell durcken? ich glaube er wollte Direkt ein Druckmenü nutzen,

Stimmt. Aber ich glaube es wäre leichter dem Browser ein Tasten Code zu senden: z.b. strg+p als den Fehler bei TPrinter zu suchen *G*.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Drucker - Papiergroesse

Beitrag von Maik81ftl »

pluto hat geschrieben:
und denn Manuell durcken? ich glaube er wollte Direkt ein Druckmenü nutzen,

Stimmt. Aber ich glaube es wäre leichter dem Browser ein Tasten Code zu senden: z.b. strg+p als den Fehler bei TPrinter zu suchen *G*.


Gut da weiß ich ja, das noch auf mich zukommen wird.

a) Grid to HTML/CSS
b) aus dem Proggi heraus browser öfen, Drucken und Browser schleißen. ^^
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Drucker - Papiergroesse

Beitrag von Christian »

Nur - das geht eben alles voll in die Hose, wenn die Maße, die TPrinter liefert, nicht stimmen. Außerdem will ich ja nicht den Drucker itself steuern, sondern ich benutze eben die Schnittstelle (CUPS), die vom Betriebssystem genau dafür bereitgestellt wird. Und obendrein ist die Ansteuerung von Druckern nicht pervers, sondern eingentlich auch nur eine Geräteansteuerung wie viele andere auch. @Christian: Hast Du sowas schonmal gemacht? Das ist nix für HighLevel-Anwender, da muß man i.d. Regel tief in die Eingeweide blicken...
linus


Ich hab schon genug Lowlevel zeug gemacht, glaub mir :) Und ja ich hab vor 18 Jahren auch schonmal etliches mit TPrinter gemacht und ja ich steure auch Drucker mit Mikrocontrollern an, deswegen kann ich auch behaupten das das pervers ist ;).
Worumms mir eher ging ist das Lazreport das korrekt macht, und er verwendet auch TPrinter. Deswegen hab ich dich gebeten das bei dir mal zu probieren. Ich würde mich nicht erdreisten dir vorschreiben zu wollen was du nutzen sollst. Dort kannst du dir aber anschauen wie die das gelöst haben.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Drucker - Papiergroesse

Beitrag von Maik81ftl »

Christian hat geschrieben:
Nur - das geht eben alles voll in die Hose, wenn die Maße, die TPrinter liefert, nicht stimmen. Außerdem will ich ja nicht den Drucker itself steuern, sondern ich benutze eben die Schnittstelle (CUPS), die vom Betriebssystem genau dafür bereitgestellt wird. Und obendrein ist die Ansteuerung von Druckern nicht pervers, sondern eingentlich auch nur eine Geräteansteuerung wie viele andere auch. @Christian: Hast Du sowas schonmal gemacht? Das ist nix für HighLevel-Anwender, da muß man i.d. Regel tief in die Eingeweide blicken...
linus


Ich hab schon genug Lowlevel zeug gemacht, glaub mir :) Und ja ich hab vor 18 Jahren auch schonmal etliches mit TPrinter gemacht und ja ich steure auch Drucker mit Mikrocontrollern an, deswegen kann ich auch behaupten das das pervers ist ;).
Worumms mir eher ging ist das Lazreport das korrekt macht, und er verwendet auch TPrinter. Deswegen hab ich dich gebeten das bei dir mal zu probieren. Ich würde mich nicht erdreisten dir vorschreiben zu wollen was du nutzen sollst. Dort kannst du dir aber anschauen wie die das gelöst haben.


Ok danke für den wink. weiß ich schon mal, was ich in meinen µC Nie machen werde. :D :lol:
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

ErnstVolker
Beiträge: 336
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Drucker - Papiergroesse

Beitrag von ErnstVolker »

Guten Morgen,

ich bin zu blöd und stehe auf dem Schlauch. Ich möchte über einen Lazarus-Report Schlüsselanhänger bedrucken. Diese Dinger hier:

https://www.realgarant-shop.de/Schluess ... Weiss.html

23 dieser Streifen ergeben in etwa eine DIN-A4-Seite.

Ich habe einen Lazreport mit Masterband und darauf die Felder die gedruckt werden sollen. Ich bekomme auch 23 auf die Seite, nur die Aufteilung passt nicht. Es kommt zu Verschiebungen.

Wie muß ich das anstellen, dass das passt?

Vielen Dank und viele Grüße

Volker

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Drucker - Papiergroesse

Beitrag von Soner »

ErnstVolker hat geschrieben:
Do 7. Sep 2023, 06:23
..
Wie muß ich das anstellen, dass das passt?
..
Wichtig ist die Bandhöhe, du musst es es genauso hoch wie die Schlüsselanhänger einstellen und alle " Streched, Autosize" oder ähnliche Eigenschaften von allen Objekten, auch von Band-Objekte, auf False setzen. LazReport rechnet ab und zu die Größen falsch.

Edit: Und die Ränder vom Blatt muss auch richtig eingestellt sein.

Antworten