[GastForen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Forenindex -- Lesezeichen

15 Lesezeichen für skript

Fussnoten in InDesign
Hallo zusammen,

Ich habe einen zweispaltigen Text mit Fussnoten in Adobe InDesign CS2, wuerde aber gern die Fussnoten als *eine* fortlaufende Spalte am Ende jeder Seite haben.

Hat jemand eine Idee, wie man das machen koennte?

Recht vielen Dank im Voraus!
Christoph....
Christoph29
12. Aug 2006, 17:07
|| Frage zu #include
Hallo Jürgen,

versuch's mal so:

Code
eval("#include " + Folder.userData + '/Sprachfiles/Sprachdaten.jsx'); 


#include ist keine gewöhnliche Javascript-Funktion sondern eine "Präprozessoranweisung" und kann nicht Variablen oder Ausdrücke als Argument annehmen. Der einzuschließende Dateipfad muss buchstäblich hinter include stehen. Mit eval() kann man das quasi simulieren.

Sauberer wäre es in diesem Fall aber, die Sprachdatei mit app.doScript() auszuführen:

Code
app.doScript(File(Folder.userData + '/Sprachfiles/Sprachdaten.jsx')); 


LG
Martin
...
Martin Braun
6. Dez 2012, 20:19
Tabellenbreite proportional skalieren
Das Script habe ich grade für eine (eigentlich unsympatische) Anfrage im englischen Forum erstellt.
War eh halb fertig ;)
Ich, nicht das Script.
Das war dreiviertelfertig.
Jetzt ist es ganz fertig.

Also dachte ich, hier hat vielleicht auch einer Freude daran:
Es rechnet die Breite einer Tabelle aus (ohne Konturen am Rand) und zeigt diese in einem Dialog an, so dass ich eine neue Breite eingeben kann. Alle Spalten werden dann proportional verbreitert oder -schmälert, um die neue Breite zu erreichen.

Code
tell application "Adobe InDesign CS3" 
set ms to selection
set aTable to parent of item 1 of ms
if class of aTable ? table then
set aTable to parent of aTable
if class of aTable ? table then
display dialog "no table selected"
return
end if
end if

set nC to count columns in aTable
set tWidth to 0.0
repeat with n from 1 to nC
set aWidth to (width of (column n of aTable))
set tWidth to tWidth + aWidth
end repeat

set myDialog to make dialog with properties {name:"Set Width of Table"}
tell myDialog
make dialog column
tell the result
set tNuWidth to make measurement editbox with properties {edit value:(tWidth * 2.83465), edit units:millimeters}
end tell
end tell
set nu to show myDialog
if nu is true then
set nuWidth to (edit value of tNuWidth) * 0.35278
set scaleClm to nuWidth / tWidth
repeat with n from 1 to nC
set aWidth to (width of (column n of aTable))
set width of column n of aTable to (scaleClm * aWidth)
end repeat
else
destroy myDialog
return
end if
end tell

...
Gerald Singelmann
11. Sep 2007, 19:13
Benchmark für Photoshop
Hallo miteinander,

[edit jekyll]
Uuups. Ich habe das hier total verpasst Blush:

http://www.hilfdirselbst.ch/..._P208582.html#208582


Zitat von Thomas (06.02.2006)
Du hast ja jetzt die 'Lizenz zu ändern'. Bring doch mal ganz vorne den Link in Ordnung.
Mir ist egal ob zu mir:
Aktuell!! http://www.richard-ebv.de/images/HDS/psBench.zip
oder zu dir verlinkst, Hauptsache auf den aktuellen Benchmark.


Habe auch den Titel gleich mit geändert :o)
[/edit]


ich habe mal den PSbench von hier:

http://htttp:/...ages/HDS/psBench.zip

http://www.geocities.com/psbench/index.html

so umgeschrieben das er alleine komplett durchläuft und man nur noch eine Gesamtzeit für die ganze Suite bekommt.

Mich würde mal interressierren, ob die Aktion so unter Windows läuft. Zumindestens im sichern Dialog dürfte es etwas hakeln, aber das tut es unter OS9 und X <.3 auch.

Wer also Lust und Zeit hat, seinen Rechner mal zwischen 2? und 20! Minuten zu quälen, bitte schön:

http://www.e-b-v.de/...enchautorun1.atn.zip
http://www.e-b-v.de/...enchautorun3.atn.zip

Die Aktion laden, starten und der Rest sollte sich selbst erklären;-)

Das kam hier so raus (für 1-fache Durchläufe):
G3 b/w 400MHz 768MB RAM 256 davon für PS6: 19'30" = 1170" = 100%
G4 2x800MHz 1,5GB RAM 700 davon für PS7: 5'33" = 333" = 350%
G4/500 1,4GHz 768MB RAM 350 davon für PS7: 5'54" = 354" = 330%
G4 2x1GHz 1,25GB RAM 800 davon für PS6: 4'34" = 274" = 427%
Tibook akku 867 1GB RAM 800 davon für PS7: 10'30" = 630" = 186%
Tibook Netz 867 1GB RAM 800 davon für PS7: 6'58" = 418" = 280%
G5 2x2GHz 2GB RAM 1350 davon für PS7: 2'14" = 134" = 873%

[Nachtrag 28.1.04]

G5 2x2GHz 2GB RAM 1350 davon für PSCS: 2'46" = 166" = 705%

Also etwa auf PS7 auf dem selben Gerät und gleicher Konfiguration:

-20%

Ich habe allerdings noch nicht festmachen können, was da bremst. Die langen Filter am Ende des Tests sind jeweils nur etwa 1 sec langsammer. Allerdings ist Punktieren von etwa 14" auf knapp 30" fast nur noch halb so schnell.

[Ende Nachtrag 28.1.04]


MfG

Thomas...
Thomas Richard
23. Nov 2003, 02:01
Zeichen zählen
In http://www.adobeforums.com/[email protected]@.3c063846/5 hat Harbs heute ein erweitertes Skript zum Zählen von Zeichen, Wörtern, Zeilen und Absätzen in der Auswahl, dem ausgewählten Textabschnitt oder in allen Textabschnitten veröffentlicht:

Code
//TextCounter 
//An InDesign 3 JavaScript
//
//Counts text objects in the selection, in the selected story, or in all stories in a document.
//
//For more on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting.html
//or visit the InDesign Scripting User to User forum at http://www.adobeforums.com
//
if(app.documents.length != 0){
if(app.activeDocument.stories.length > 0){
myDisplayDialog();
}
else{
alert("The current document does not contain any text.");
}
}
else{
alert("No documents are open. Please open a document and try again.");
}

function myDisplayDialog(){
var myCountButtons, myRangeButtons;
var myDialog = app.dialogs.add({name:"TextCounter"});
with(myDialog.dialogColumns.add()){ with(borderPanels.add()){
staticTexts.add({staticLabel:"Count:"});
with(myCountButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Characters"});
radiobuttonControls.add({staticLabel:"Words", checkedState:true});
radiobuttonControls.add({staticLabel:"Lines"});
radiobuttonControls.add({staticLabel:"Paragraphs"});
}
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"Range:"});
with(myRangeButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Selection", checkedState:true});
radiobuttonControls.add({staticLabel:"Selected Story"});
radiobuttonControls.add({staticLabel:"All Stories"});
}
}
}
var myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
var myRangeType = myRangeButtons.selectedButton;
var myCountType = myCountButtons.selectedButton;
myDialog.destroy();
myTextCounter(myRangeType, myCountType);
}
else{
myDialog.destroy();
}
}
function myTextCounter(myRangeType, myCountType){
var myDocument, myTextCount, mySelection, myCountingUnit;
with (myDocument = app.activeDocument){
//Set the AlreadyCounted key of any stories in the document to false.
for (var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myDocument.stories.item(myStoryCounter).insertLabel("AlreadyCounted", "False")
}
switch (myRangeType){
case 0:
//Count the text in the selection.
//If multiple text frames are selected, all of the
//text in the frames will be counted.
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType); }
else{
myTextCount = 0;
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 1:
//Count the text in the parent story (or stories) of the selection)
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType);
}
else{
myTextCount = 0;
//Now iterate through the items and count the text.
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 2:
//Count the text in all stories of the active document.
myTextCount = 0;
for(var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myTextCount = myTextCount + myCountText(myDocument.stories.item(myStoryCounter), myCountType);
}
break;
}
switch(myCountType){
case 0:
if (myTextCount == 1){
myCountingUnit = "character";
}
else {
myCountingUnit = "characters";
}
break;
case 1:
if (myTextCount == 1){
myCountingUnit = "word";
}
else {
myCountingUnit = "words";
}
break;
case 2:
if (myTextCount == 1){
myCountingUnit = "line";
}
else {
myCountingUnit = "lines";
}
break;
case 3:
if (myTextCount == 1){
myCountingUnit = "paragraph";
}
else {
myCountingUnit = "paragraphs";
}
break;
}
var myDialog = app.dialogs.add({name:"TextCounter", canCancel:false});
with(myDialog){
//Add a dialog column.
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"InDesign found "});
with(dialogColumns.add()){
textEditboxes.add({editContents:myTextCount+""});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:myCountingUnit});
}
}
}
}
myDialog.show();
myDialog.destroy();
}
}
function mySelectionSorter(myObject, myRangeType, myCountType){
var myTextCount;
switch (myObject.constructor.name){
case "Text":
case "InsertionPoint":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject, myCountType);
break;
case 1:
myTextCount = myCountText(myObject.parentStory, myCountType);
break;
}
break;
case "TextFrame":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject.texts.item(0), myCountType);
break;
case 1:
//Has the parent story already been counted?
myStory = myObject.parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myCountText(myStory, myCountType);
myStory.insertLabel("AlreadyCounted", "True");
}
else {
myTextCount = 0;
}
break;
}
break;
default:
//Selection is a not a text object.
//There's still a chance it could be a textPath object.
if (myObject.textPaths.length !=0){
myTextCount = 0;
if (myRangeType == 1){
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myStory = myObject.textPaths.item(myTextPathCounter).parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).parentStory, myCountType);
myObject.textPaths.item(myTextPathCounter).parentStory.insertLabel("AlreadyCounted","True");
}
else{
myTextCount = 0;
}
}
}
else {
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).texts.item(0), myCountType);
}
}
}
else {
myTextCount = 0;
}
break; }
return myTextCount;
}
function myCountText(myTextObject, myCountType){
var myTextCount;
switch(myCountType){
case 0:
//count characters
myTextCount = myTextObject.characters.length;
break;
case 1:
//count words
myTextCount = myTextObject.words.length;
break;
case 2:
//count lines
myTextCount = myTextObject.lines.length;
break;
case 3:
//count paragraphs
myTextCount = myTextObject.paragraphs.length;
break;
}
return myTextCount;
}

...
Martin Fischer
27. Feb 2008, 23:36
for-Schleife einmal ohne, einmal mit geschweiften Klammern
Hallo, miteinander!
Kai und ich rätseln schon ein paar Tage. Weshalb funktioniert das folgende Script. Es soll abfragen, ob im Dokument die Farbe "Test" bereits vorkommt. Falls NEIN, die Farbe anlegen, falls JA, nichts weiter tun. Daß dieses (erfolgreich auszuführende) Script zustande kam, beruht übrigens auf einem Schreibfehler. Wir hatten schlicht und ergreifend die geschweiften Klammern zu setzen vergessen ;-)
Code
for (var n=0; n< app.activeDocument.swatches.length; n++) 
if(app.activeDocument.swatches[n].name == "Test"){
exit ();
}
else (app.activeDocument.swatches[n].name != "Test")
{app.activeDocument.colors.add({name:"Test", model:ColorModel.PROCESS, colorValue:[0, 100, 100, 0]});
};


Im folgenden Script hingegen wird ein Fehler geworfen: "Dieser Farbfeldname wird bereits verwendet. Wählen Sie einen anderen Namen." Logisch (jedenfalls denke ich mir das so), da das Script mehrmals versucht eine Farbe mit gleichem Farbfeldnamen anzulegen.
Code
//JS soll prüfen, ob ein Farbname im Dokument enthalten ist. 
//Falls JA, nichts weiter tun
//Falls NEIN eine Farbe mit dem geprüften Namen anlegen:

//DIES FUNKTIONIERT NICHT, DA DAS SCRIPT VERSUCHT DIE FARBE "Test" MEHRMALS ANZULEGEN.

for (var n=0; n< app.activeDocument.swatches.length; n++){
if(app.activeDocument.swatches[n].name == "Test"){
exit ();
}
else (app.activeDocument.swatches[n].name != "Test")
{app.activeDocument.colors.add({name:"Test", model:ColorModel.PROCESS, colorValue:[0, 100, 100, 0]})
};
};

Aber weshalb funktioniert die obere Version des Scripts ohne die geschweiften Klammern um die Anweisungen der for-Schleife herum?
...
Uwe Laubender
23. Sep 2009, 21:18
Textrahmen, die ein bestimmtes Absatzformat enthalten, auf andere Ebene kopieren per Skript
Damit?

Code
// Adobe InDesign CS3 Script 

Absatzformat = app.activeDocument.paragraphStyles.item( 'Normal' );
Ebene = app.activeDocument.layers.item( 'Ebene 1' );

app.findTextPreferences = app.changeTextPreferences = NothingEnum.nothing;
try { app.findTextPreferences.appliedParagraphStyle = Absatzformat; } catch(e) { alert( 'Fehler\rAbsatzformat ok?' )}

f = app.activeDocument.findText();
for ( i = 0; i < f.length; i++ )
try { f[i].parentTextFrames[0].itemLayer = Ebene; } catch(e) { alert('Fehler\rEbene ok?\rEventuell steckt der Absatz im Überlauf.' )}


Mist, Du brauchtest es für CS2.
Damit?

Code
// Adobe InDesign CS2 Script 

Absatzformat = app.activeDocument.paragraphStyles.item( 'Normal' );
Ebene = app.activeDocument.layers.item( 'Ebene 1' );

app.findPreferences = app.changePreferences = NothingEnum.nothing;
try { app.findPreferences.appliedParagraphStyle = Absatzformat;} catch(e) {alert('Fehler\rAbsatzformat ok?')}

f = app.activeDocument.search();
for (i = 0; i < f.length; i++)
try {f[i].parentTextFrames[0].itemLayer = Ebene;} catch(e) {alert('Fehler\rEbene ok?\rEventuell steckt der Absatz im Überlauf.')}

...
Martin Fischer
23. Jan 2008, 22:52
[JS] Indexeinträge im Umbruch visualisieren
Peter Kahrel hat in den letzten Tagen im Adobe Scripting-Forum zwei interessante CS3-Skripte zur Visualisierung von Indexeinträgen veröffentlicht, die ich hier festhalten möchte:

1. Taggen
Mit diesem Skript werden die Indexeinträge an Ort und Stelle in Tags dargestellt:
'<ix>Indexeintrag</ix>'. Untereinträge werden durch '#' separiert.

Code
index2text (app.activeDocument);  
//delete_index (app.activeDocument);

function index2text (doc)
{
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
tops[i].pageReferences[j].sourceText.contents =
'<ix>' + topic_path (tops[i], tops[i].name) + '</ix>';
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}


2. Inline-Graphiken
Im Unterschied zum o.g. Skript erscheinen die Indexeinträge nicht zwischen Tags, sondern werden in einen verankerten Textrahmen, der mit dem Objektstil 'sidebar' (muss vor Ausführung des Skripts angelegt sein) ausgezeichnet wird, eingefügt. Sie laufen damit im Text mit.

Code
index2text (app.activeDocument);  
//delete_index (app.activeDocument);

function index2text (doc)
{
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
{
var ip = tops[i].pageReferences[j].sourceText;
var p_ref = topic_path (tops[i], tops[i].name);
side_note (ip, p_ref)
}
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}

function side_note (ins_point, s)
{
var sidebar = ins_point.textFrames.add ();
sidebar.geometricBounds = [0,0,10,70];
sidebar.appliedObjectStyle = app.activeDocument.objectStyles.item ('sidebar');
sidebar.contents = s;
sidebar.fit (FitOptions.frameToContent);
}


Diese beiden Skriptversionen haben mir so gut gefallen, dass ich gleich noch eine kleine Änderung für InDesign CS4 vorgenommen habe. Die Indexeinträge werden hier an Ort und Stelle in bedingten Text ('Index') umgesetzt und können damit ein- und ausgeblendet werden.

Code
// index2conditionalText.jsx 
// Original by Peter Kahrel
// modified by Martin Fischer to take use of InDesign CS4 conditional text
// 04.12.2008

Object.prototype.get = function( )
{
try {
var myObject = this.item( arguments[0].name );
myObject.name;
}
catch (e) {
var myObject = this.add( arguments[0] );
}
return myObject;
}

index2text (app.activeDocument);
//delete_index (app.activeDocument);

function index2text (doc)
{
var myConditionSet = app.activeDocument.conditions.get( {name:'Index', indicatorMethod:ConditionIndicatorMethod.USE_HIGHLIGHT} )
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
{
var ip = tops[i].pageReferences[j].sourceText;
var p_ref = topic_path (tops[i], tops[i].name);
conditional_note (ip, p_ref, myConditionSet)
}
myConditionSet.visible = false;
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}

function conditional_note (ins_point, s, c)
{
ins_point.appliedConditions = c;
ins_point.contents = s;
}


Nach Ausführung des Skripts ist der bedingte Text 'Index' ausgeblendet.
Bei Bedarf kann der bedingte Text über die Suche-Ersetze Funktion wieder gelöscht werden (etwa für eine erneute Visualisierung der Indexeinträge nach einer Erweiterung derselben).
...
Martin Fischer
5. Dez 2008, 08:07
Indesign Farbeinstellungen vorgeben
Das auskommentieren ist absicht gewesen. habs mal hier im Forum auskommentiert - nicht das irgendwas komische passiert.

ich hab jetzt mal dran weitergebastelt aber er aktiviertmir nicht das "TIP Zeitung" - es bleibt immer "Benutzerdefiniert" bei Farbprofil stehen!

Hier das momentane Script:

// Farbmanagement - Einstellungen (c) alex rath

with (app.colorSettings)
{

enableColorManagement = true;
//cmsSettingsPath = "W:\Allgem\Color\Settings";
//cmsSettingsPath = "C:\Dokumente und Einstellungen\tipdvs\anwendungsdaten\Adobe\Color\Settings";
cmsSettings = "TIP Zeitung";
rgbPolicy = ColorSettingsPolicy.convertToWorkingSpace;
cmykPolicy = ColorSettingsPolicy.preserveEmbeddedProfiles;
workingSpaceRGB = "Adobe RGB (1998)";
workingSpaceCMYK = "ISOnewspaper26v4";

alert("Voreinstellungen LAYOUT eingerichtet!");
}


Danke für die hilfe....

alex
...
alex77
15. Jan 2008, 10:03
automatischer Textfluss
Hier die CS3-Version des obigen Skripts 'AppendPagesIfStoryOverflows.jsx':

Code
//AppendPagesIfStoryOverflows_CS3.jsx  
//
// thanks to Dave Saunders for the functions isText() and DumbRunPages()
// http://jsid.blogspot.com/2005/10/standard-methods-and-functions.html

Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}

if ((app.documents.length> 0) && (app.selection.length > 0) && (app.selection[0].isText())) {
var aStory = app.selection[0].parentStory;
var aDoc = app.documents[0];

DumbRunPages(aDoc, aStory)
}
else {
alert("Fehler\rBitte Text auswählen.")
}

function DumbRunPages(theDoc, theStory) {
// What makes this "dumb" is that default master pages are used.
var uRuler = theDoc.viewPreferences.rulerOrigin;
theDoc.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
while (theStory.textContainers[theStory.textContainers.length-1].overflows) {
//Seite nach der letzten Textrahmenseite einfügen
var backPage = aDoc.pages.add(LocationOptions.after, aStory.textContainers[theStory.textContainers.length-1].parent)

app.activeWindow.activePage = backPage;
backPage.appliedMaster = theDoc.pages[-2].appliedMaster;
var myPbounds = backPage.bounds;
var myNewTF = backPage.textFrames.add();
if ( (!theDoc.documentPreferences.facingPages) || (backPage.side == PageSideOptions.rightHand) ) {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.left,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.right];
} else {
myNewTF.geometricBounds =
[myPbounds[0] + backPage.marginPreferences.top,
myPbounds[1] + backPage.marginPreferences.right,
myPbounds[2] - backPage.marginPreferences.bottom,
myPbounds[3] - backPage.marginPreferences.left];
}
myNewTF.itemLayer = theStory.textContainers[theStory.textContainers.length-1].itemLayer;
myNewTF.previousTextFrame = theStory.textContainers[theStory.textContainers.length-1];
myNewTF.textFramePreferences.textColumnCount = backPage.marginPreferences.columnCount;
myNewTF.textFramePreferences.textColumnGutter = backPage.marginPreferences.columnGutter;
if (myNewTF.characters.length == 0){
theDoc.viewPreferences.rulerOrigin = uRuler;
alert("Permanently overset"); // This indicates a permanent overset condition so break out of loop
}
}
theDoc.viewPreferences.rulerOrigin = uRuler;
}

...
Martin Fischer
22. Jan 2008, 05:38
Alle offenen Dateien speichern... Skript?
Hallo Gerald,

Um alle offenen Dokumente mit "sichern unter" zu sichern und dabei durch Löschen der History ihre Dateigröße zu verringern, verwende ich folgendes Skript. Wink

Code
// saveOpenDocs.jsx 
//DESCRIPTION: Sichert alle geöffneten Dokumente und reduziert ihre Dateigröße

var myDocs = app.documents;
var unsavedDocs = 0;
for (oneDoc = 0; oneDoc < myDocs.length; oneDoc++)
(myDocs[oneDoc].saved == true)
? myDocs[oneDoc].save(myDocs[oneDoc].fullName)
: unsavedDocs++;

if (unsavedDocs > 0)
alert (unsavedDocs + " Dokument(e) nicht gesichert!")


Es sichert nur die Dokumente, die bereits einmal gesichert worden sind (also ihre pysikalische Heimat auf dem Datenträger gefunden haben).
...
Martin Fischer
11. Jan 2008, 15:50
Gruppen im gesamten Dokument auflösen
Hallo Michael,

dann versuche es doch mit diesem JavaScript:
Code
while (app.documents[0].groups.length !=0) { 
app.documents[0].groups.everyItem().ungroup();
}
alert ("Fertig.", "Schon gemacht");

Damit werden auch gruppierte Gruppen von Gruppen aufgelöst.

Gruss, Hans...
Hans Haesler
28. Nov 2007, 14:18
versionierung von dateien OHNE version cue?
Das Eventskript saveCopy.jsx für InDesign CS3 erstellt vor dem Sichern der aktuellen Datei automatisch eine Kopie der ursprünglichen Version in einem Unterordner namens "Sicherung", welcher bei Bedarf vom Skript angelegt wird.
...
Martin Fischer
9. Nov 2007, 18:34
Eventskript "neue Ebenen"
Hallo Stefan,

> Fehlerzeichenfolge: Es existiert bereits eine Ebene dieses Namens.

Ist dem so?
Existiert bei Dir eine Ebene mit Namen "Text"?

Auf die fehlende geschweifte Klammer am Ende hat Quarz bereits hingewiesen.

Eine Ebene (hier die Ebene 'Text') kannst Du mit folgendem Befehl ganz nach oben verschieben:
app.activeDocument.layers.item( 'Text' ).move( LocationOptions.atBeginning );

Das Gegenteil (ganz nach unten) wäre:
app.activeDocument.layers.item( 'Text' ).move( LocationOptions.atEnd );

Übrigens sieht meine eigene Version jetzt so aus:
Code
//addLayer.jsx 
#targetengine "myEngine"

var myEventListener = app.addEventListener( "afterNew", addLayer, false );

function addLayer( myEvent )
{
myDoc = myEvent.parent;
myDoc.layers[0].name = 'Text'
myDoc.layers.add( {name: 'Grafik', layerColor: UIColors.red} );
myDoc.layers.add( {name: 'Notes', layerColor: UIColors.gray} );
// ... weitere Ebenen hinzufügen

// die unterste Ebene aktivieren
myDoc.activeLayer = myDoc.layers[-1]; // oder ... = myDoc.layers.item( 'Text' );
}


D.h. ich lösche die vorhandene Ebene nicht, sondern benenne sie einfach um.
Das Löschen würde Probleme bereiten, wenn ein neues Dokument mit der Option "Mustertextrahmen" angelegt würde. Denn dort würden die Mustertextrahmen auf die Ebene gelegt, die gleich danach gelöscht wird.

Am Ende wird die unterste Ebene aktiviert.
...
Martin Fischer
12. Nov 2007, 10:37
Skalieren von gruppierten Elementen in mm
Ah, wer lesen kann, ist ganz klar mal wieder im Vorteil. Ihr habt von Textrahmen geredet.

Stimmt, die können in Cs2 nicht nach Millimeter Angabe skaliert werden, egal, welche Optionen aktiviert sind oder nicht.
Es sei denn, man hat dieses Script installiert:

Code
tell application "Adobe InDesign CS2" 
set allSel to selection
set {minY, minX, maxY, maxX} to visible bounds of item 1 of allSel
repeat with n from 2 to count allSel
set {t, l, b, r} to visible bounds of item n of allSel
if t < minY then set minY to t
if l < minX then set minX to l
if b > maxY then set maxY to b
if r > maxX then set maxX to r
end repeat
set prevWidth to maxX - minX
set prevHeight to maxY - minY
set myDialog to make dialog with properties {name:"auf mm skalieren"}
tell myDialog
make dialog column
tell the result
make static text with properties {static label:"Neue Breite:"}
make static text with properties {static label:"Neue Höhe:"}
make static text with properties {static label:"Proportional:"}
end tell
make dialog column
tell the result
set nuXSizeField to make measurement editbox with properties {edit value:(prevWidth * 2.83465), edit units:millimeters}
set nuYSizeField to make measurement editbox with properties {edit value:prevHeight * 2.83465, edit units:millimeters}
set nuProp to make checkbox control with properties {checked state:true, static label:" "}
end tell
end tell
set nu to show myDialog
if nu is true then
set nuXSize to (edit value of nuXSizeField) * 0.35278
set nuYSize to (edit value of nuYSizeField) * 0.35278
if checked state of nuProp is true then
if prevWidth = nuXSize then
set xScale to nuYSize / prevHeight
set yscale to nuYSize / prevHeight
else
set xScale to nuXSize / prevWidth
set yscale to nuXSize / prevWidth
end if
else
set xScale to nuXSize / prevWidth
set yscale to nuYSize / prevHeight
end if
set xScale to xScale * 100
set yscale to yscale * 100
set fixPoint to transform reference point of layout window 1
set oben to {top left anchor, top center anchor, top right anchor}
set ymitte to {left center anchor, center anchor, right center anchor}
set unten to {bottom left anchor, bottom center anchor, bottom right anchor}
set myLinks to {top left anchor, left center anchor, bottom left anchor}
set xmitte to {top center anchor, center anchor, bottom center anchor}
set rechts to {top right anchor, right center anchor, bottom right anchor}
if fixPoint is in oben then
set aroundY to minY
else if fixPoint is in ymitte then
set aroundY to (maxY - minY) / 2 + minY
else
set aroundY to maxY
end if
if fixPoint is in myLinks then
set aroundX to minX
else if fixPoint is in xmitte then
set aroundX to (maxX - minX) / 2 + minX
else
set aroundX to maxX
end if
set fixPoint to {aroundX, aroundY}
repeat with aSel in allSel
resize aSel horizontal scale xScale vertical scale yscale around fixPoint
end repeat
-- destroy dialog
else
destroy myDialog
return
end if
end tell


Das funktioniert auch mit mehreren markierten Objekten, kann proportional (nur einen Wert ändern) oder unproportional skalieren und ist eine feine Übung, wie man mit sochen Situationen per Skript umgeht. :)
...
Gerald Singelmann
10. Sep 2007, 10:54

Aktuell

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
04.09.2020 - 05.03.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 04. Sept. 2020, 13.00 Uhr - Freitag, 05. März 2021, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.09.2020 - 23.09.2020

Digicomp Academy AG, Basel, Bern oder virtuell
Dienstag, 22. Sept. 2020, 08.30 Uhr - Mittwoch, 23. Sept. 2020, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

Preis: CHF 1'400.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/desktop-publishing/adobe-photoshop-cc/kurs-adobe-photoshop-cc-basic

Neuste Foreneinträge


Formularfelder mit Mediävalziffern

Tastatur-Kürzel in Dialogen tun nicht mehr

Automatische Farbmengenberechnung

Wörter mit Bindestrichen werden nicht automatisch getrennt. Alternative?

Pfeil zurück geht nur im eingeloggten Zustand

Zeichen nach Absatzformat

HP Designjet Z6100 - Papierzuschuss

Lüftergeräusch nach Installation von Catalina update 10.15.6

QuarkXpress 8 Layouteigenschaften

InDesign - Bild in schräg gestellten Rahmen einfügen
medienjobs