AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SynPDF und "Bonrollen"

Ein Thema von noisy_master · begonnen am 12. Mai 2021 · letzter Beitrag vom 12. Mai 2021
Antwort Antwort
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
224 Beiträge
 
Delphi XE5 Professional
 
#1

SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 10:13
Hallo Gemeinde,

ich hätte da mal eine Frage zu SynPDF: Normalerweise gebe ich etwas auf einem Bondrucker (80mm und ich glaube 72dpi) aus. Dazu benutze ich die normale printer unit mit BeginDoc, canvas.TextOut, EndDoc. Nun soll das Ganze aber als PDF erzeugt werden. Ist ja mit SynPDF im Prinzip genau das gleiche Vorgehen. Aber jetzt kommt der Knackpunkt:
Zu einem späteren Zeitpunkt soll das PDF wieder auf dem Bondrucker ausgegeben werden. Dazu wäre es meinem Verständnis nach sinnvoll, wenn das "Seitenformat" des PDF dem des Bondruckers entsprechen würde, oder habe ich dort ein Missverständnis?

Wenn das richtig ist: Wie überzeuge ich denn nun den Canvas des SynPDF davon "genauso zu sein" wie der des Bondruckers(insbesondere in Hinblick auf "endlos" und beschränkte Breite)?

Danke schon mal wieder vorab!

Gruß
Dirk
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.040 Beiträge
 
Delphi 7 Professional
 
#2

AW: SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 11:04
Schau Dir in den Quellen von SynPdf mal diese Methode an:
Delphi-Quellcode:
procedure TPdfDocument.SetDefaultPaperSize(const Value: TPDFPaperSize);
const PAPERSIZE: array[TPDFPaperSize] of array[0..1] of integer =
  ( (595,842), (419,595), (842,1190), (1190,1683), (1683,2382), (2382,3369),
    (612,792), (612,1008), (0,0) );
begin // psA4, psA5, psA3, psA2, psA1, psA0, psLetter, psLegal, psUserDefined
  FDefaultPaperSize := Value;
  if Value<>psUserDefined then begin
    FDefaultPageWidth := PAPERSIZE[Value,0];
    FDefaultPageHeight := PAPERSIZE[Value,1];
  end;
end;
Anhand dieser Werte kannst Du dann das von Dir benötigte Format berechnen.
Code:
(595,842) entspricht DIN A4 mit 210 x 297 mm bzw. 21,0 cm x 29,7 cm

Kettensatz:
? = 80 mm
210 mm = 595

595 * 80 / 210 = 226,66666666666666666666666666667

DefaultPageWidth := 226;
Da Du ja "endloslange" drucken musst, musst Du die DefaultPageHeight (jeweils vom Inhalt abhängig) individuell berechnen.
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
224 Beiträge
 
Delphi XE5 Professional
 
#3

AW: SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 11:40
Da Du ja "endloslange" drucken musst, musst Du die DefaultPageHeight (jeweils vom Inhalt abhängig) individuell berechnen.

Ah, Danke! Das mit der Breite war ja schon mal einfach Aber das mit der Länge ist ja blöd...Dann müsste das Drucken ja quasi in 2 Durchgängen erfolgen: 1*ohne Ausgabe um die Höhen zu errechnen, dann die Höhe setzen und dann nochmal "richtig" drucken. Kann man die Papersize auch noch nach BeginDoc setzen(um die Papersize größer oder kleiner zu machen)?
Dirk
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.040 Beiträge
 
Delphi 7 Professional
 
#4

AW: SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 11:57
Keine Ahnung, ob man die Papiergröße noch während der Ausgabe verändern kann. Einfach ausprobieren und die PDF anschauen.

Aber warum muss denn die Ausgabe auf eine Seite?

Ein PDF kann doch 1:n Seiten enthalten.

Wenn man die Seite auf 80 mm "kleinbiegen" kann, kann man dann doch auch die Höhe auf einen sinnvollen Wert "runterbiegen". Dann bekommt halt die PDF ganz viele kleine Seiten, die hintereinander auf den Bondrucker geschickt werden. (ok: Sofern der das zulässt).

Ausprobieren: Eine PDF mit drei Seiten von z. B. 80 x 80 mm machen und die dann ausdrucken.

Kommt dabei ein Bon raus oder macht der Drucker daraus dann drei einzelne Bons?

Weißt Du denn zum Beginn eines Ausdruckes schon, wieviel da so an Ausgabe kommen wird?

Z. B. Seitenkopf und Seitenfuß plus 25 Zeilen für 25 Artikel.

Dann ist das letztlich auch "nur" Mathematik.

Man muss halt einmal wissen, wir hoch Seitenkopf und Seitenfuß sind und wie hoch eine Zeile.

Ohne konkrete Aufgabenstellung, was genau ausgegeben werden muss und wie der prinzipielle Aufbau der Ausgabe ist, ist es leider nicht möglich hier einen sinnvollen Lösungsansatz zu liefern.

Mal ein Muster so eines Ausdruckes als Bild hier anhängen oder genauer beschreiben, was genau ausgegeben werden soll. Eventuell gibt's dann ja einen konkreteren Lösungsansatz.
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
224 Beiträge
 
Delphi XE5 Professional
 
#5

AW: SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 12:31
Tja, das muss ich dann wohl doch mal ausprobieren, ob man die Seitenhöhe auch nach dem BeginDoc setzen kann. Das Problem mit mehreren Seiten ist, dass der Bondrucker nach jeder Seite den Bon abschneidet...Somit kommen dann aus einem PDF mit mehreren Seiten leider mehrere "Teilbons" raus...und das findet der Kunde alles andere als schön ;-(

Das Vorberechnen der "benötigten" Zeilen ist leider auch nicht so einfach, da der Bon ganz unterschiedlich lang sein kann(Bewirtungsbeleg oder nicht, TSE funktioniert, oder nicht, Bar oder Unbarzahlung etc.)
Aber trotzdem erstmal DANKE!
Dirk
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.040 Beiträge
 
Delphi 7 Professional
 
#6

AW: SynPDF und "Bonrollen"

  Alt 12. Mai 2021, 12:44
Blöde Idee:

Mach Dir ein TImage (o. ä.) und darauf die Ausgabe. Die Imagegröße müsstest Du variabel gestalten können.

Wenn das Image fertig ist, gibst Du das als PDF aus, so dass jedes PDF letztlich nichts weiter ist, als ein 80 mm breites und "beliebig" hohes Bild.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf