[GastForen Programme Print/Bildbearbeitung Adobe InDesign Text in bestehender Rahmenbreite einpassen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

9. Mai 2006, 14:02
Beitrag # 1 von 13
Bewertung:
(4997 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
ich möchte in InDesign CS1 gerne folgende Anforderung umsetzen: Ein Layout wird vollautomatisch via Templates und Datenbank generiert. Die Tabellen bestehen aus einzelnen Textboxen mit fester Breite. Nun möchte ich die Textboxen gerne so definieren, dass der Text der in die einzelnen Boxen abgefüllt wird, sich der festen Breite anpasst (Schriftbreite reduzieren/unterschneiden). Es dürfte also kein Übersatz entstehen. Gibt es dafür irgendeine Lösung?

Besten Dank und Gruss
X

Text in bestehender Rahmenbreite einpassen

Christoph Steffens
  
Beiträge gesamt: 4896

9. Mai 2006, 14:33
Beitrag # 2 von 13
Beitrag ID: #227919
Bewertung:
(4984 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich glaube, hier gehst Du von "Feinen ins Grobe".
Ich nehme nicht an, dass Du diese database publishing Lösung nicht für ein kleines Projekt brauchst, sondern für einen Katalog oder ähnliches.
Von daher würde ich mich erst mal auf die Suche machen, nach einem Tool, dass Deine Daten/datenbank und dein InDesign so zusammen bringt, wie es brauchst.
Und dann ist eines der Kriterien, ob deine Layoutanforderungen erfüllt werden können. Aber nur eines der Kriterien. Dazu kommen Preis, Verfügbarkeit für dein OS, Komplexität der Anwendung,...


als Antwort auf: [#227901]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

9. Mai 2006, 14:39
Beitrag # 3 von 13
Beitrag ID: #227922
Bewertung:
(4982 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Versteh mich nicht falsch; diese Art von Katalogerzeugung führen wir schon lange so durch. Es klappt alles bestens. Infolge einer neuer Schriftart ist aber nun das Problem mit den "Breiten" dazugekommen. Eigentlich kann man das ganze Datenbank-Zeugs getrost vergessen und von losgelösten InDesign-Dokumenten ausgehen. Die Frage ist nur, ob ich einer Textbox in irgendeiner Form diesen Befehl unterjubeln kann!


als Antwort auf: [#227919]

Text in bestehender Rahmenbreite einpassen

Martin Fischer
  
Beiträge gesamt: 12707

9. Mai 2006, 14:44
Beitrag # 4 von 13
Beitrag ID: #227925
Bewertung:
(4981 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Adobe InDesign Scripting-Forum gab es diesbezüglich mal eine ziemlich umfangreiche Diskussion mit verschiedenen Lösungen für InDesing CS.

Ist aber gut ein Jahr her. Möglicherweise ist dieser Thread bereits gelöscht.
Ich habe die Diskussion damals mangels Eigenbedarfs nicht aktiv verfolgt und nichts gesichert.
Aber vielleicht kann Dir dort jemand anderer helfen (möglicherweise sind noch ein paar Veteranen von damals auf Draht).


als Antwort auf: [#227901]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

9. Mai 2006, 15:44
Beitrag # 5 von 13
Beitrag ID: #227946
Bewertung:
(4965 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Info. Habe noch nichts schlaues gefunden! Ich bleibe dran...


als Antwort auf: [#227925]

Text in bestehender Rahmenbreite einpassen

Martin Fischer
  
Beiträge gesamt: 12707

9. Mai 2006, 15:52
Beitrag # 6 von 13
Beitrag ID: #227951
Bewertung:
(4961 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Schriftgrad global geringfügig reduzieren (bis es paßt) - wäre das keine akzeptable Lösung?


als Antwort auf: [#227946]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

9. Mai 2006, 16:31
Beitrag # 7 von 13
Beitrag ID: #227963
Bewertung:
(4946 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Leider nicht! Die Schrift sollte bei genügend Platz nicht verändert werden sondern nur dann wenn zu viel Information vorhanden ist! Der Kunde ist heikel…


als Antwort auf: [#227951]

Text in bestehender Rahmenbreite einpassen

Martin Fischer
  
Beiträge gesamt: 12707

9. Mai 2006, 16:53
Beitrag # 8 von 13
Beitrag ID: #227969
Bewertung:
(4938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Nun möchte ich die Textboxen gerne so definieren, dass der Text der in die einzelnen Boxen
> abgefüllt wird, sich der festen Breite anpasst (Schriftbreite reduzieren/unterschneiden).
> Es dürfte also kein Übersatz entstehen. Gibt es dafür irgendeine Lösung?

Könnte man die Anforderung so formulieren:
1. prüfe alle Textrahmen.
2. wenn in einem Textrahmen ein Textüberlauf ist, dann reduziere die Schriftbreite in 0,1%-Schritten so lange, bis zu einem bestimmten Grenzwert (98%) oder bis der Text gänzlich in den Textrahmen paßt;
3. ist der Grenzwert von z.B. 98% erreicht und immer noch Textüberlauf vorhanden, dann wechsle zu einer anderen Form der Verstümmeltung (z.B. Reduzierung der Unterscheidung);
4. sollen die gemarterten Texte noch irgendwie kenntlich gemacht werden (z.B. unsichtbare Etikettierung, um sie später per Skipt wieder aufzufinden)?

Bin für ne Stunde mit meinem Roller unterwegs und hernach bereit für alle möglichen Schandtaten. Pirate


als Antwort auf: [#227963]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

9. Mai 2006, 17:17
Beitrag # 9 von 13
Beitrag ID: #227981
Bewertung:
(4933 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja, das wäre genau richtig! eine Markierung der modifizierten Texte wäre schön aber nicht unbedingt zwingend!

nicht, dass du dir jetzt aber ein bein ausreisst...


als Antwort auf: [#227969]

Text in bestehender Rahmenbreite einpassen

Martin Fischer
  
Beiträge gesamt: 12707

9. Mai 2006, 18:45
Beitrag # 10 von 13
Beitrag ID: #227995
Bewertung:
(4916 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo kp,

versuch's mal mit folgendem Skript:
Code
// textsTortureRack.jsx 

var myScalingLimit = 98;
var myTrackingLimit = -10;
var myStep = 0.1;
var myDoc = app.documents[0];

for (oneFrame = 0; oneFrame < myDoc.textFrames.length; oneFrame++)
{
var myScale = 100;
var myTracking = myDoc.textFrames[oneFrame].characters[0].tracking;
if (myDoc.textFrames[oneFrame].previousTextFrame == null)
{
var myObject = myDoc.textFrames[oneFrame].parentStory.texts[0]
}
else
{
var myObject = myDoc.textFrames[oneFrame].paragraphs.everyItem();
}
while ((myDoc.textFrames[oneFrame].overflows == true) && (myScale > myScalingLimit))
{
myScale -= myStep;
myObject.horizontalScale = myScale;
}
while (myDoc.textFrames[oneFrame].overflows == true)
{
myObject.tracking = myTracking;
myTracking -= myStep;
if (myTracking <= myTrackingLimit) selectIt(myDoc.textFrames[oneFrame])
}
}

function selectIt(theObj)
{
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoom = ZoomOptions.fitPage;
app.activeWindow.zoomPercentage = 400;
alert("Fehler.\rLaufweitengrenzwert unterschritten.\rBitte von Hand weitermachen.")
exit();
}


Das Skript versucht zunächst bei Textrahmen mit Überlauf, den Text über die Reduzierung der horizontalen Skalierung einzubringen. Die Schrittweite ist in myStep definiert.
Wird der Grenzwert myScalingLimit unterschritten, geht's an die Laufweite.
Zunächst wird der Ausgangswert über den Wert der Laufweite des ersten Buchstabens im Textrahmen festgestellt (oft 0).
Dann wird gefoltert, bis der Textüberlauf weg oder der Grenzwert myTrackingLimit erreicht ist. Wird dieser erreicht, wählt das Skript den betreffenden Textrahmen aus, zoomt ihn heran und fordert eine manuelle Bearbeitung ein.

Eine Sache ist noch nicht ganz hasenrein:
Hat der Textrahmen keine Verknüpfung mit einem anderen Textrahmen (davor), dann bearbeitet das Skript den Textfluß im Textrahmen (also den gesamten Text). Das dürfte keine Probleme geben.
Ist der Textrahmen aber mit einem anderen Textrahmen davor verknüpft (läuft also Text aus einem anderen Rahmen rein), dann ist das zu bearbeitende Objekt nicht über den Textfluß zu bestimmen, sondern über den Text im Rahmen und was ihm folgt. Hier habe ich etwas geschlampert und so getan, als ob nur noch ein Stück vom letzten Absatz fehlen würde. Problematisch wird es, wenn nach dem Absatz, der nicht mehr ganz Platz hat, ein oder mehrere weitere Absätze folgen.
So wie ich dies schreibe, fällt mir ein, wie das in Griff zu kriegen wäre (range).
Vorab aber mal diese nicht lupenreine Version.

Wenn das Skript zu langsam ist, kannst Du mal an der Schrittschraube drehen (myStep erhöhen).


als Antwort auf: [#227981]

Text in bestehender Rahmenbreite einpassen

Martin Fischer
  
Beiträge gesamt: 12707

9. Mai 2006, 21:14
Beitrag # 11 von 13
Beitrag ID: #228027
Bewertung:
(4900 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier eine verbesserte Variante:
Code
// textsTortureRack_2.jsx 

var myScalingLimit = 98;
var myTrackingLimit = -10;
var myStep = 0.1;
var myDoc = app.documents[0];

for (oneFrame = 0; oneFrame < myDoc.textFrames.length; oneFrame++)
{
var myFrame = myDoc.textFrames[oneFrame];
if (myFrame.characters.length > 0)
{
var myScale = myFrame.characters[0].horizontalScale;
var myTracking = myFrame.characters[0].tracking;
var myStart = myFrame.characters[0].index;
var myEnd = myFrame.parentStory.characters[-1].index;
var myObject = myFrame.parentStory.characters.itemByRange(myStart, myEnd)
while ((myFrame.overflows == true) && (myScale > myScalingLimit))
{
myObject.horizontalScale = myScale;
myScale -= myStep;
}
while (myFrame.overflows == true)
{
myObject.tracking = myTracking;
myTracking -= myStep;
if (myTracking <= myTrackingLimit) selectIt(myFrame)
}
}
}
alert("Fertig")

function selectIt(theObj)
{
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoom = ZoomOptions.fitPage;
app.activeWindow.zoomPercentage = 400;
alert("Fehler.\rLaufweitengrenzwert unterschritten.\rBitte von Hand weitermachen.")
exit();
}


Nun wird bei überlaufenden Textrahmen der Text vom ersten Zeichen des Textrahmens bis zum letzten Zeichen des Textflusses (Überlaufs) behandelt.

Wenn Textrahmen verknüpft sind und Absätze des überlaufenden Textrahmens mit dem Adobe Absatzsetzer formatiert sind, kann es doch in Folge von Umbruchverschiebungen während der Ausführung des Skripts zu Ungereimtheiten kommen. => Das Skript ist ein Experiment, keine Lösung. ;-)


als Antwort auf: [#227995]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

10. Mai 2006, 09:56
Beitrag # 12 von 13
Beitrag ID: #228119
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Besten Dank erstmal für deine Mühe!!
Ich kann das ganze momentan noch nicht testen, gebe dir aber möglichst bald ein Feedback!

Gruss


als Antwort auf: [#228027]

Text in bestehender Rahmenbreite einpassen

klassenprimus
Beiträge gesamt: 147

12. Mai 2006, 10:33
Beitrag # 13 von 13
Beitrag ID: #228732
Bewertung:
(4834 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
Ich habe dein Skript getestet! Klappt wunderbar! Tausend Dank! Habe die einzelnen Steps noch ein wenig angepasst, so dass sie unseren Anforderungen entsprechen!

Ich hoffe ich kann mich gelegentlich bei dir revanchieren!

Gruss, KP


als Antwort auf: [#228119]
X