HTML-Feld erzeugt zu kurze Zeilen

Hallo,
wir arbeiten mit LL Version 23, geliefert von proALPHA, d.h. weder veränderbare Datenquellen noch DOM oder ähnliches (da kenne ich mich auch gar nicht aus).

Ich versuche Etiketten in LL zu erstellen, das klappt auch sehr gut. Allerdings ist der Platz sehr beschränkt. Deshalb versuche ich den optimal mit einem HTML-Feld zu füllen. Das klappt auch meist gut, aber manchmal bricht das HTML-Feld den Text viel zu oft um, was dann zu einem viel zu kleinem Text führt. Dies ist hier links zu sehen, rechts sieht es gut aus:


Hier die Ansicht in LL:

Und hier ist der dazugehörige Code aus dem HTML Feld:

'<font face="Arial"><big>'+ttS_Artikel_P.Firma_Artikel@osS_Artikel_P.Firma_Artikel:Bezeichnung001+ " " 
+ttS_Artikel_P.Firma_Artikel@osS_Artikel_P.Firma_Artikel:Bezeichnung002+ " " + 
ttS_Artikel_P.Firma_Artikel@osS_Artikel_P.Firma_Artikel:Bezeichnung003 + " " 
+ttS_Artikel_P.Firma_Artikel@osS_Artikel_P.Firma_Artikel:Bezeichnung004+ ' </big><br><nobr><small>' 
+str$(ttMD_Artikel_P.Firma_Basislager@ttML_Ort_PBase.Firma_LagerOrt:LagerOrt,0,0) + " "
+ttMD_Artikel_P.Firma_Basislager@ttML_Ort_PBase.Firma_LagerOrt:ttML_Ort_PBase.LagerOrt_Firma@osML_Ort_PBase.LagerOrt_Firma:Bezeichnung
+ ", eingel. vor pA" + "</nobr></small></font>"

Der Code ist nicht schön, aber ich kann HTML eigentlich gar nicht. Die letzte Zeile ist nicht so wichtig, deshalb soll sie kleiner sein. Das

<nobr> 

sorgt dafür, dass er da nicht auch dauernd umbricht. Alle Experiement damit oben, für die ersten Bezeichnungen, haben aber nicht geklappt… Google hat mir auch nicht weitergeholfen, aber vielleicht suche ich auch nur nach den falschen Begriffen.

Vielen Dank schon jetzt für Ideen, wie ich das mit einem HTML-Feld oder ganz anders, besser umsetzen kann.

Beste Grüße
Karl schneider

Das Problem entsteht dadurch, dass erst versucht wird, das Objekt in “Originalgröße” auszugeben. Dabei werden die Umbrüche berechnet. Anschließend - ich nehme an Sie haben beim HTML-Objekt die Option “In Objekt einpassen” gewählt - wird dann der Text verkleinert, damit er in der Höhe vollständig passt. Etwas unglücklich in Ihrem Szenario, aber ansonsten würde man hier leicht 10-15 Durchläufe brauchen bis die optimale Konfiguration aus Höhe und Breite gefunden wurde.

Ich würde das wie folgt lösen. Platzieren Sie zwei Textobjekte, das eine für den großen, oberen Bereich, das andere für die kleine, unwichtige Zeile übereinander. Für die “Zeilenumbruch” Option der Textobjekte wählen Sie dabei “Optimal einpassen” - diese Option ist speziell für Etikettenprojekte geeignet, bei denen der Text “so groß wie möglich” sein soll:

Dann erhalten Sie immer die optimale Ausgabe (ich hoffe ich habe mich beim Beispieltext nicht vertippt :slightly_smiling_face:

image

Sehr geehrter Herr Bartlau,
vielen Dank für die schnelle Antwort. Ich kann beim Textobjekt in einer Tabelle diese Option aber nicht finden, sondern nur bei den Absatzeigenschaften, also dem Absatz eines Textobjekts außerhalb einer Tabelle. Meine Variablen sind aber nur in der Tabelle vorhanden. Vielleicht übersehe ich auch nur etwas?

Noch die Antwort zu Ihrer Frage: Ja, ich habe beim HTML-Objekt die Option “In Objekt einpassen” gewählt.

Eine andere Variante war, die unwichtige letzte Zeile als extra Zeile zu machen (vielleicht würde das helfen), aber das HTML-Objekt zentriert sich ja immer automatisch. Kann man das vielleicht umgehen? Sonst sieht das einfach nicht sehr schick aus.

Vielen Dank schon jetzt für die weitere Unterstützung.

Da sollten Sie bei pA mal nachfragen ob sich das, was Sie designen wollen nicht als echtes Etikett mit Variablen darstellen lassen würde - genau dafür ist an sich der Etikettenmodus gedacht, dann können Sie auch direkt die gewünschte Etikettenvorlage auswählen oder Dinge wie die Druckreihenfolge der Etiketten auswählen. Zumindest im Artikelstamm ist der Etikettendruck bei pA meines Wissens schon implementiert, vielleicht lässt sich das auch für Ihre Anwendung aktivieren.

Ansonsten würde mir als Option nur einfallen, die optimale Fontgröße anhand der Länge des Textes abzuschätzen, so in etwa als Formel für die Fontgröße in Punkt:

Cond(Len([Text])<40, 12, Cond(Len([Text])<80, 10,...))

Das würde für Texte bis 40 Zeichen einen 12 Pt-Font wählen, für Texte bis 80 Zeichen einen 10 Pt-Font usw. Das HTML-Objekt bietet sich für diese Anwendung wegen der oben beschriebenen besonderen Art der Umbruchsberechnung leider nicht an.

Ja, aber pA berechnet immer gleich ordentlich Geld für kleinste Anpassungen und das machen wir jetzt schon oft genug. Das ist es mir dann nicht wert. Es ist allerdings schade, dass einem die auf diese Art realisierte pA-Anbindung so viele Möglichkeiten verbaut.

Das mit der Abschätzung funktioniert auch nicht so toll, weil man mal lange Wörter hat und mal kurze und dann entweder 2 oder 3 Zeilen entstehen, obwohl die Zeichenzahl an sich noch nicht für 3 Zeilen ausreichen würde. Ich habe im Forum schon gesehen, dass es auch Silbentrennung gibt, aber das geht wieder nicht, weil wir die pA-Anbindung haben und das nicht nutzen können (List & Label Silbentrennung mit NHunspell unter .NET). Es wäre toll, in der nächsten Version auch für Textobjekte in Tabellen die Funktion “Optimal einpassen” zu haben.

Eine Funktion, ähnlich der Seitenanzahl für die Anzahl an Zeilen, die in einem Textobjekt entstehen gibt es laut meiner Suche nicht. Stimmt das? Ich glaube, wir sollten einfach etwas größere Etiketten verwenden und dann jede Bezeichnung pro Zeile per Textobjekt drucken und die dann in die Zeile “verkleinern” (bei Einpassen statt “Umbrechen”.

Danke also nochmal für die Hilfe!

Ja, aber pA berechnet immer gleich ordentlich Geld für kleinste Anpassungen und das machen wir jetzt schon oft genug.

Ja, klar - jeder Hersteller versucht natürlich seine Kosten zu decken :slight_smile: . Meines Wissens haben Sie auch Möglichkeiten, selbst Erweiterungen vorzunehmen, aber das wissen Sie selbst sicher besser als ich.

Es wäre toll, in der nächsten Version auch für Textobjekte in Tabellen die Funktion “Optimal einpassen” zu haben.

Vielen Dank für den Vorschlag. Das würde in der Tat Sinn machen, dann allerdings nur für den Fall, dass eine feste Höhe vergeben wurde - andernfalls wächst das Objekt ja automatisch wie benötigt. Ich packe das mal auf unsere Wunschliste.

Eine Funktion, ähnlich der Seitenanzahl für die Anzahl an Zeilen, die in einem Textobjekt entstehen gibt es laut meiner Suche nicht. Stimmt das?

Ja, das ist richtig. Solche Funktionen sind auch immer recht gefährlich, da sie häufig zu Zirkelschlüssen führen. Wenn Sie das Ergebnis der Funktion z.B. verwenden, um die Schriftgröße zu ändern würde sich dadurch ja wieder das Ergebnis der Funktion ändern usw. - das ist nur sehr schwierig konsistent zu halten, daher ist die TextWidth()-Funktion auch objektunabhängig und liefert einfach nur die Breite des Textes ohne einen möglichen Umbruch zu berücksichtigen.

Ich glaube, wir sollten einfach etwas größere Etiketten verwenden und dann jede Bezeichnung pro Zeile per Textobjekt drucken und die dann in die Zeile “verkleinern” (bei Einpassen statt “Umbrechen”.

Wenn das eine Option ist, wäre es vielleicht die beste, ja.