Hallo an alle,
habe diesen Thread gefunden und wollte das Script für meine Bedürfnisse abändern. Der Crashkurs über Pfingsten in Sachen Scripting hat mich zwar einige Probleme lösen lassen, aber so recht komme ich nicht vorwärts.
Aufgabe: Ich möchte alle Absätze die mit einem bestimmten Absatzformat formatiert sind löschen und jeweils in einen verankerten Textrahmen kopieren, der an erster Stelle des darauffolgenden Absatzes verankert ist. Zusätzlich sollen die Optionen für den verankerten Textrahmen anders sein (siehe hier http://666kb.com/i/b9g6dfl7dinrf5dn4.jpg, als in dem Ursprungsscript von Martin. Und besonders da liegt der Hund begraben. Ich hatte gehoft die entsprechenden Eigenschaften des Textframes alleine heraus zu bekommen, habe aber vergeblich im Datenbrowser gesucht. Vermutlich bin ich blind oder auf einem falschen Weg.
Mein zweites kleines Problem (was ich nun leidlich in den Griff bekommen habe) war, wie ich ID sage das er den Textframe nach dem jeweiligen Absatz (der mit diesem Absatzformat formatiert ist) einfügt. Hier gibt es sicherlich eine elegantere Lösung.
Hier ersteinmal mein derzeitiges Script:
------------------------------------------------------------------
// VerankerteObjekteMarginalienspalte.jsx
//
//clear the find/change text preferences
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.appliedParagraphStyle = "Grundtext ohne Einzug";
app.findTextPreferences.findWhat = '';
var myFound = app.activeDocument.findText();
var theOStyles = app.activeDocument.objectStyles.everyItem().name;
var myOStyleName = myDisplayDialog();
var myOStyle = app.activeDocument.objectStyles.item(myOStyleName);
var myBounds = [ "0p", "0p", "10mm", "10mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]
for( var n = myFound.length-1; n >= 0; n-- )
mySchleife();
function mySchleife()
{
var mySelection=myFound[n].insertionPoints[0];
var myContent = myFound[n].contents;
myFound[n].contents ="";
var myFrame = mySelection.insertionPoints[0].textFrames.add(); // Einfügen eines Textrahmen am Einfügepunkt (Cursor)
myFrame.parent.parentTextFrames[0].characters.length;
myFrame.geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
myFrame.applyObjectStyle(myOStyle, true); // Zuweisung des Objektstils
myFrame.contents = myContent; // Zuweisung des Inhalts
}
function myDisplayDialog()
{
var myFieldWidth = 150;
var myDialog = app.dialogs.add({name:"Objektstil für verankerten Rahmen"});
with(myDialog.dialogColumns.add())
{
with(dialogRows.add())
{
with(dialogColumns.add())
{
staticTexts.add({staticLabel:"Objektstil:", minWidth:myFieldWidth});
}
with(dialogColumns.add())
{
var myOStyleDropDown = dropdowns.add({stringList:theOStyles, selectedIndex:theOStyles.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true)
{
var aOStyle = theOStyles[myOStyleDropDown.selectedIndex]
myDialog.destroy();
}
else
{
myDialog.destroy();
exit();
}
return aOStyle ;
}
------------------------------------------------------------------
Wäre schön, wenn mir jemand auf die Sprünge helfen könnte. Einen guten Wochenstart wünscht Karsten.
WinXP + ID 6
PS: Die Kursivstellung war nicht beabsichtigt, stellt sich aber automatisch ein. Mhhh?