Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » script für Bilder in Zelle

script für Bilder in Zelle

valnera
Beiträge gesamt: 600

9. Apr 2012, 12:17
Bewertung:

gelesen: 4470

Beitrag als Lesezeichen
Hallo Forum,
habe hier ein älteres Script von Martin Fischer (http://www.hilfdirselbst.ch/foren/Bild_in_Tabellenzelle_einpassen_P210600.html) gefunden, das Bilder über das Erstellen eines Bildrahmens in Tabellenzellen angepasst platziert – aber leider funktioniert das nicht mit der CS 5.5 und ich habe auch nichts bei den Scripten gefunden. Gibt es da überhaupt etwas?
Danke und Gruß, Valnera

script für Bilder in Zelle

Uwe Laubender
Beiträge gesamt: 5319

9. Apr 2012, 15:24
Bewertung:

gelesen: 4431

Beitrag als Lesezeichen
Hallo, Valnera!

Mich wundert, dass das erwähnte Script überhaupt jemals wie gewünscht funktioniert hat. Ich beziehe mich auf dieses Script:

http://www.hilfdirselbst.ch/..._P210600.html#210600

Meiner Ansicht nach gibt's da einen Zuordnungsfehler. Ersetze mal VORHER durch NACHHER oder verwende das von mir bearbeitete Script am Ende dieses Beitrags:

VORHER (Die Abbildung wird angesprochen):
Code
myPic.fit(FitOptions.fillProportionally); 


NACHHER (Der Bildrahmen wird angesprochen):
Code
myRec.fit(FitOptions.fillProportionally); 


Es gibt aber noch andere Probleme bei der exakten Konstruktion der Rechteckgröße und -lage für die Abbildung.

Es wird nicht (ausreichend) berücksichtigt:

1. Die voreingestellte Strichstärke eines neuen Rahmens

Abhilfe:
Ersetze die Scriptzeile:
Code
myRec = myCell.insertionPoints[0].rectangles.add({strokeWeight:0}); 


durch:
Code
myRec = myCell.insertionPoints[0].rectangles.add({strokeWeight:0, strokeColor:"None"}); 


2. Die Strichstärke(n) des Zellenrandes in x-Richtung
Änderung siehe weiter unten angehängtes Gesamtscript.

3. Die exakte Größe des Bildrahmens bezogen auf die Zellenausrichtung

Schließlich noch:
4. Ob der erste Einfügepunkt eingezogen ist (ein angewandtes Absatzformat könnte das provozieren) [Könnte aber auch gewünscht sein!]

1 bis 3 habe ich auf die Schnelle berücksichtig.

Frohe Ostern!
Uwe

Hier das Script (ab InDesign CS4) mit einer undo-Funktion versehen. Getestet in InDesign CS5.5 v7.5.2:

Code
//insertPictureIntoCell_CS4-CS5.5.jsx 
//Martin Fischer
//http://www.hilfdirselbst.ch/foren/Bild_in_Tabellenzelle_einpassen_P210600.html#210600

// /*EDIT*/ Uwe Laubender
//

//DESCRIPTION: Paßt ein Bild, das über einen Dialog ausgewählt wird, in einen verankerten Rahmen innerhalb der Zelle ein, in welcher der Cursor steht.

//alternative Anpassungen des Bildes an den Rahmen siehe unten


/*EDIT*/ app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

/*EDIT*/ if(parseFloat(app.version)<6){
alert("Your InDesign app version should be version 6 (CS4) or above!");
exit();
};

/*EDIT*/ if(parseFloat(app.version)>7.6){
alert("Script is not tested for InDesign above version 7.5 (CS5.5)");
exit();
};


/*EDIT*/ app.doScript(_InsertPictureIntoCell, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, "Verankerten Rahmen in Zelle einfügen; Bild darin platzieren.");



/*EDIT*/ function _InsertPictureIntoCell(){



if (app.selection[0].parent.constructor.name == "Cell")
{
/*EDIT*/ var oldPrefs = app.documents[0].viewPreferences.properties;
/*EDIT*/ app.documents[0].viewPreferences.horizontalMeasurementUnits = MeasurementUnits.POINTS;
/*EDIT*/ app.documents[0].viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS;

var myCell = app.selection[0].parent;
var myHeight = myCell.height - myCell.topInset - myCell.bottomInset /*EDIT*/ - myCell.topEdgeStrokeWeight/2 - myCell.bottomEdgeStrokeWeight/2;
var myWidth = myCell.width - myCell.leftInset - myCell.rightInset /*EDIT*/ - myCell.leftEdgeStrokeWeight/2 - myCell.rightEdgeStrokeWeight/2;

var myRec = myCell.insertionPoints[0].rectangles.add({strokeWeight:0 /*EDIT*/, strokeColor:"None"});

myRec.geometricBounds =
[myRec.geometricBounds[0],
myRec.geometricBounds[1],
myRec.geometricBounds[0] + myHeight,
myRec.geometricBounds[1] + myWidth]

myRec.place(File.openDialog("Bild wählen: " ));

/*EDIT*/ myRec.fit(FitOptions.fillProportionally); // alternative Anpassung: contentToFrame, frameToContent, centerContent, proportionally, fillProportionally

/*EDIT*/ app.documents[0].viewPreferences.properties = oldPrefs;
};
else
{
alert("Bitte den Cursor in eine Tabellenzelle plazieren.")
};

/*EDIT*/ }; //End Function "_InsertPictureIntoCell"

*****
Mit herzlichem Gruß,
Uwe Laubender

script für Bilder in Zelle

valnera
Beiträge gesamt: 600

9. Apr 2012, 15:41
Bewertung:

gelesen: 4422

Beitrag als Lesezeichen
Danke Uwe für dein Script, das auf Anhieb funktioniert hat und man kann damit wirklich die anderen Bastelarbeiten mit den Bordmitteln von InDesign vergessen. Was würden wir ohne euch Scriptfreaks machen …
Gruß, Valnera