[GastForen Programme Print/Bildbearbeitung Adobe InDesign Übersatztext in Tabellen

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

Übersatztext in Tabellen

funkturmmitte
Beiträge gesamt: 114

12. Okt 2015, 15:56
Beitrag # 1 von 1
Bewertung:
(1510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
Vielleicht kann mir jemand von euch bei meinem Problem weiterhelfen.
Die Suche hier im Forum war jedenfalls (bisher) nicht von Erfolg gekrönt.

Ich muss in Dokumenten mit vielen Tabellen Übersatztext beseitigen. Dabei kommt es nicht auf Schönheit an.
Dafür nutze ich ein Scipt, das die Schrift einfach solange verkleinert bis es passt. Nur dummerweise klappt das nicht in Tabellen.
Hat vielleicht jemand eine Idee wie ich dieses Script erweitern könnte um die entsprechende Funktionalität zu erhalten?

Hier ist das Script:
Code
// Die Original-Quelle dieses Scripts ist unbekannt. 
// Mit diesem Script ist es möglich, Übersatztext so zu verkleinern, dass er in das Layout passt.
#target indesign
myDoc = app.activeDocument;
var textArr = new Array(), mRes, myPit, count, done;
mFramesToMove = new Array();
myPit = myDoc.allPageItems; // array with doc pageItems (masterpages and groups included)
for (var k = 0; k < myPit.length; k++)
if (myPit[k].constructor.name == "TextFrame" && myPit[k].overflows )
textArr.push(myPit[k]); // array with overset textFrames
count = textArr.length;

if (count) mRes = mDialog (count);
else {alert ("No overset texts found"); exit (); }

for (var i = 0; i < textArr.length; i++) {
done = mShrink (textArr[i], mRes);
if (!done[0] ) {
alert (done[1] + "\rFill a dialog field with a number");
exit; }
}

if (mFramesToMove.length) {
if (myDoc.layers.item("Overset frames").isValid)
mLayer = myDoc.layers.item("Overset frames");
else
mLayer = myDoc.layers.add({LocationOptions: LocationOptions.AT_BEGINNING, name: "Overset frames"});
for (var i = 0; i < mFramesToMove.length; i++)
mFramesToMove[i].itemLayer = mLayer;
alert ("Some frames (" + mFramesToMove.length + ") stay overset\rTake a look at layer 'Overset Frames' ");
}
else alert (count + " frames overset fixed");

function mDialog (number) {// "What to do" dialog
var w = new Window("dialog","What to do?", undefined, {closeButton: false});
w.add ("statictext", undefined, "Number of overset texts found: " + number.toString() );

var myTop = w.add ("panel");
myTop.alignment = "left";
myTop.orientation = "row";

var myCheckBx = myTop.add ("group");
myCheckBx.orientation = "column";
myCheckBx.alignChildren = "left";
var Ch1 = myCheckBx.add("checkbox", undefined, "point size limit: ");
var Ch2 = myCheckBx.add("checkbox", undefined, "hori scale limit: ");

var myEditBx = myTop.add ("group");
myEditBx.orientation = "column";
var Ed1 = myEditBx.add("edittext", undefined, undefined);
Ed1.enabled = false; Ed1.characters = 4;
var Ed2 = myEditBx.add("edittext", undefined, undefined);
Ed2.enabled = false; Ed2.characters = 4;

Ch1.onClick = function () {
if (Ch1.value) Ed1.enabled = true;
else Ed1.enabled = false;}
Ch2.onClick = function () {
if (Ch2.value) Ed2.enabled = true;
else Ed2.enabled = false;}

var myStatBx = myTop.add ("group");
myStatBx.orientation = "column";
myStatBx.add("statictext", undefined, " pt");
myStatBx.add("statictext", undefined, " %");

var b = w.add ("group");
b.add ("button", undefined, "OK", {name: "ok"});
b.add ("button", undefined, "Abbrechen", {name: "cancel"});

if (w.show() == 1)
return [Ch1.value, Ed1.text, Ch2.value, Ed2.text];
else exit();
}

function mShrink (textFr, ToDoArr) { // input textFrame and array with mDialog result
var pSizeLimAc, pSizeLim, pSizeCurr, pSizeDiff, pSizeStepN, pSizeStep,
hScaleAc, hScaleLim, hScaleCurr, hScaleDiff, hScaleStepN, hScaleStep,
ToDo;
pSizeLimAc = ToDoArr[0];
hScaleAc = ToDoArr[2];

pSizeLim = ToDoArr[1];
if (pSizeLimAc) {
if (isNaN (parseFloat(pSizeLim) ) ) return [false, "point size is not a number"];
else pSizeLim = parseFloat(pSizeLim);
pSizeCurr = textFr.parentStory.pointSize;
pSizeDiff = pSizeCurr - pSizeLim;
pSizeStepN = pSizeDiff / 0.1;
pSizeStep = 0.1;
}

hScaleLim = ToDoArr[3];
if (hScaleAc) {
if (isNaN (parseFloat(hScaleLim) ) ) return [false, "hori scale is not a number"];
else hScaleLim = parseFloat(hScaleLim);
hScaleCurr = textFr.parentStory.horizontalScale;
hScaleDiff = hScaleCurr - hScaleLim;
if (pSizeLimAc) hScaleStepN = pSizeStepN;
else hScaleStepN = hScaleDiff;
hScaleStep = Math.round(hScaleDiff/hScaleStepN*10)/10;
}
if (!(hScaleDiff > 0) ) hScaleAc = false;
if (!(pSizeDiff > 0) ) pSizeLimAc = false;
if (pSizeLimAc && hScaleAc) ToDo = 3;
else if (pSizeLimAc) ToDo = 1;
else if (hScaleAc) ToDo = 2;
else ToDo = 0;

switch (ToDo) {
case 1: {
while (pSizeStepN-- && textFr.overflows)
textFr.parentStory.pointSize -= pSizeStep;
break; }
case 2: {
while (hScaleStepN-- && textFr.overflows)
textFr.parentStory.horizontalScale -= hScaleStep;
break; }
case 3: {
while (hScaleStepN-- && textFr.overflows)
{
textFr.parentStory.pointSize -= pSizeStep;
textFr.parentStory.horizontalScale -= hScaleStep;
}
break; }
default: break;
}
if (textFr.overflows) mFramesToMove.push(textFr);
return [true];
}


Vielen Dank für euere Aufmerksamkeit!

Oliver
X

Aktuell

InDesign / Illustrator

| 23.05.2022

IDUG_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/