Hi,
Eine HTML-Seite soll auf ein vorgefertigtes Formular (ich meine eines aus Papier, A4, nicht <form></form>) ausgedruckt werden.
bei _Dir_ oder bei _jemandem_? In letzterem Fall kannst Du die Sache vergessen, da Du nicht mal weißt, ob der Mensch überhaupt einen Drucker hat, geschweige denn, wie der eingestellt ist, ob er die Schriftart versteht, wie groß er sie macht usw.
Z.Z. steuere ich die Schriftgröße in Abhängigkeit von der Anzahl der Zeichen im Text.
Ja, das ist suboptimal. Aber bricht der Text beim Ausdruck nicht automatisch um? Was für Software wird eigentlich verwendet, wie reagiert/arbeitet diese?
Das einzige, was mir bisher dazu eingefallen ist, ist in einer Tabelle die einzelnen Breiten aller Zeichen abzulegen und dann den Text Zeichen für Zeichen durchzugehen und den Platzbedarf sozusagen aufzusaldieren.
s/Tabelle/Hash/
Abgesehen davon, daß Du ggf. ziemlich viele Zeichen beachten mußt (und einen sinnvollen Default wählen), wäre dies auch das einzige, was mir einfällt. Vielleicht bietet Image::Magick (http://www.cpan.org/) eine Möglichkeit, Text in beliebiger Schriftart in eine Grafik umzuwandeln; in dem Fall könntest Du die Breite (für einen Spezialfall, der nichts mit dem Ausdruck zu tun haben muß!) testen. Nachteil: Zeitaufwand. Nutzen: zweifelhaft. Vorteil: Coolness-Faktor ;-)
Die Ermittlung durch ein Hash dürfte übrigens ein klassischer Einzeiler sein. Die Genauigkeit schätze ich nicht wesentlich geringer ein; wobei natürlich "Unterschneidungen" (sorry, Fachausdruck vergessen; ich meine, daß z.B. bei "Tier" das "i" quasi unter dem "T" steht) nicht beachtet werden.
Zweifel, ob dies genau funktioniert.
_Genau_ funktioniert nur, den Text mit dem System des Benutzers auszudrucken und _dort_ nachzumessen.
Außerdem müßte ich mir die Breite der Zeichen durch ausmessen von z.B. (100 Zeichen) / 100 ermitteln, was die Sache nicht gerade zuverlässiger machen wird.
Richtig, aber diesen Aufwand müßtest Du schon betreiben. Mit einem kurzen Perl-Script kannst Du immerhin den Ausdruck vereinfachen :-)
Danke an alle, die es sich alles durchgelesen haben.
Gern geschehen :-)
Cheatah