[GastForen Programme Print/Bildbearbeitung Adobe InDesign [CS1] - MacScript "Place Images"

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

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

26. Feb 2006, 13:14
Beitrag # 1 von 15
Bewertung:
(14609 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo allerseits,

bei Adobe gibt es ein gut zu gebrauchendes Script, welches Bilder eines Ordners automatisch in ein ID-Dokument platziert. Leider ist dies aber nur für den Mac... http://share.studio.adobe.com/...3%26submit1%2Ey%3D10

Gibt es so etwas auch für Windows? Ich habe zwar hier im Forum und in der Linksammlung ebenso wie bei Adobe gesucht, konnte aber nicht fündig werden... Vielleicht bin ich aber auch nur blind ;-) - deshalb meine Frage...

Schönen Sonntag noch...

(Dieser Beitrag wurde von peppi am 26. Feb 2006, 13:14 geändert)
X

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

26. Feb 2006, 16:55
Beitrag # 2 von 15
Beitrag ID: #214018
Bewertung:
(14588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Unter den Beispielskripten zu InDesign CS2 findet sich ImageCatalog.jsx, welches diese Aufgabe auf beiden Plattformen erledigt.


als Antwort auf: [#213995]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

26. Feb 2006, 18:49
Beitrag # 3 von 15
Beitrag ID: #214035
Bewertung:
(14580 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für die Antwort... Aber leider würde ich ein solches Script für die Version CS1 benötigen...


als Antwort auf: [#214018]

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

26. Feb 2006, 19:11
Beitrag # 4 von 15
Beitrag ID: #214040
Bewertung:
(14569 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo peppi,

in meinem CS-Ordner habe ich ImageCatalog.js für InDesign CS gefunden.
Es stammt wahrscheinlich aus dem Adobe Scritping Forum und könnte eine Vorabversion des mit ID CS2 gelieferten Skripts sein.
Probier's mal aus und gib Bescheid, ob es bei Dir tut.
Code
//ImageCatalog.js  
//An InDesign CS JavaScript
//
//Creates an image catalog from the graphic files in a selected folder.
//Each file can be labeled with the file name, and the labels are placed on
//a separate layer and formatted using a paragraph style ("label") you can
//modify to change the appearance of the labels.
//
//For more information on InDesign scripting, go to http://www.adobe.com/...esign/scripting.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
var myFiles = new Array;
var myFilteredFiles = new Array;
//The myExtensions array contains the extensions of the graphic file types you want
//to include in the catalog. You can remove extensions from or add extensions to this list.
var myExtensions = [".jpg", ".jpeg", ".eps", ".ps", ".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai"]
//Display the folder browser.
var myFolder = Folder.selectDialog("Select the folder containing the images", "");
//Get the path to the folder containing the files you want to place.
if(myFolder != null){
for(myExtensionCounter = 0; myExtensionCounter < myExtensions.length; myExtensionCounter++){
myExtension = myExtensions[myExtensionCounter];
myFiles = myFolder.getFiles("*"+ myExtension);
if(myFiles.length != 0){
for(var myFileCounter = 0; myFileCounter < myFiles.length; myFileCounter++){
myFilteredFiles.push(myFiles[myFileCounter]);
}
}
}
if(myFilteredFiles.length != 0){
myDisplayDialog(myFilteredFiles, myFolder);
}
}
function myDisplayDialog(myFiles, myFolder){
var myLabelWidth = 115;
var myDialog = app.dialogs.add({name:"Image Catalog"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Information"});
}
}
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
staticTexts.add({staticLabel:"Source Folder:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myFolder.path + "/" + myFolder.name});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Number of Images:", minWidth:myLabelWidth});
staticTexts.add({staticLabel:myFiles.length + ""});
}
}
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Options"});
}
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Number of Rows:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myNumberOfRowsField = integerEditboxes.add({editValue:3});
}
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Number of Columns:", minWidth:myLabelWidth});
var myNumberOfColumnsField = integerEditboxes.add({editValue:3});
}
with(dialogRows.add()){
var myLabelsCheckbox = checkboxControls.add({staticLabel:"Add Labels", checkedState:true});
}
with(dialogRows.add()){
var myRemoveEmptyFramesCheckbox = checkboxControls.add({staticLabel:"Remove Empty Frames:", checkedState:true});
}
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var myNumberOfRows = myNumberOfRowsField.editValue;
var myNumberOfColumns = myNumberOfColumnsField.editValue;
var myLabels = myLabelsCheckbox.checkedState;
var myRemoveEmptyFrames = myRemoveEmptyFramesCheckbox.checkedState;
myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames);
}
myDialog.destroy();
}
function myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames){
var myPage, myFile, myCounter, myX1, myY1, myX2, myY2, myRectangle, myLabelStyle, myLabelLayer;
var myFramesPerPage = myNumberOfRows * myNumberOfColumns;
var myDocument = app.documents.add();
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
var myDocumentPreferences = myDocument.documentPreferences;
var myNumberOfFrames = myFiles.length;
var myNumberOfPages = Math.round(myNumberOfFrames / myFramesPerPage);
if ((myNumberOfPages * myFramesPerPage) < myNumberOfFrames){
myNumberOfPages++;
}
myDocumentPreferences.pagesPerDocument = myNumberOfPages;
myDocumentPreferences.facingPages = false;
var myPage = myDocument.pages.item(0);
var myMarginPreferences = myPage.marginPreferences;
var myLeftMargin = myMarginPreferences.left;
var myTopMargin = myMarginPreferences.top;
var myRightMargin = myMarginPreferences.right;
var myBottomMargin = myMarginPreferences.bottom;
var myLiveWidth = myDocumentPreferences.pageWidth - (myLeftMargin + myRightMargin);
var myLiveHeight = myDocumentPreferences.pageHeight - (myTopMargin + myBottomMargin);
var myFrameWidth = myLiveWidth / myNumberOfColumns;
var myFrameHeight = myLiveHeight / myNumberOfRows;
var myPages = myDocument.pages;
if(myLabels == 1){
//Create the label paragraph style if it does not already exist.
myLabelStyle = myDocument.paragraphStyles.item("labels");
try{
myLabelStyle.name;
}
catch (myError){
myLabelStyle = myDocument.paragraphStyles.add({name:"labels"});
}
myLabelStyle.pointSize = 8;
//Create the label layer if it does not already exist.
var myLabelLayer = myDocument.layers.item("labels");
try{
myLabelLayer.name;
}
catch (myError){
myLabelLayer = myDocument.layers.add({name:"labels"});
}
}
// Construct the frames in reverse order. Don't laugh--this will
// save us time later (when we place the graphics).
for (myCounter = myDocument.pages.length-1; myCounter >= 0; myCounter--){
myPage = myPages.item(myCounter) ;
for (var myRowCounter = myNumberOfRows; myRowCounter >= 1; myRowCounter--){
myY1 = myTopMargin + (myFrameHeight * (myRowCounter - 1));
myY2 = myTopMargin + (myFrameHeight * myRowCounter);
for (var myColumnCounter = myNumberOfColumns; myColumnCounter >= 1; myColumnCounter--){
myX1 = myLeftMargin + (myFrameWidth * (myColumnCounter - 1));
myX2 = myLeftMargin + (myFrameWidth * myColumnCounter);
myRectangle = myPage.rectangles.add(myDocument.layers.item(-1), undefined, undefined, {geometricBounds:[myY1, myX1, myY2, myX2], strokeWeight:0, strokeColor:myDocument.swatches.item("None")});
}
}
}
// Because we constructed the frames in reverse order, rectangle 1
// is the first rectangle on page 1, so we can simply iterate through
// the rectangles, placing a file in each one in turn. myFiles = myFolder.Files;
for (myCounter = 0; myCounter < myNumberOfFrames; myCounter++){
myFile = myFiles[myCounter];
myRectangle = myDocument.rectangles.item(myCounter);
myRectangle.place(File(myFile));
myRectangle.label = myFile.fsName.toString();
myRectangle.fit(FitOptions.proportionally);
myRectangle.fit(FitOptions.centerContent);
myRectangle.fit(FitOptions.frameToContent);
if(myLabels == 1){
myX1 = myRectangle.geometricBounds[1];
myY1 = myRectangle.geometricBounds[2];
myX2 = myRectangle.geometricBounds[3];
myY2 = myRectangle.geometricBounds[2]+24;
myTextFrame = myRectangle.parent.textFrames.add(myLabelLayer, undefined, undefined,{geometricBounds:[myY1, myX1, myY2, myX2], contents:myRectangle.label});
myTextFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.leadingOffset;
myTextFrame.paragraphs.item(0).appliedParagraphStyle = myLabelStyle;
}
}
if (myRemoveEmptyFrames == 1){
for (var myCounter = myDocument.rectangles.length-1; myCounter >= 0;myCounter--){
if (myDocument.rectangles.item(myCounter).contentType == ContentType.unassigned){
myDocument.rectangles.item(myCounter).remove();
}
else{
//As soon as you encounter a rectangle with content, exit the loop.
break;
}
}
}
}



als Antwort auf: [#214035]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

26. Feb 2006, 19:30
Beitrag # 5 von 15
Beitrag ID: #214041
Bewertung:
(14565 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

darf ich Dich mal virtuell knutschen? Du bist ein Schatz... Das wird mir zukünftig viel Arbeit ersparen. Erst heute Nacht habe ich händisch 64 Bilder platziert. Und anschließend noch proportional und zentriert in den Rahmen eingepaßt...

Vielen, vielen herzlichen Dank...

P.S.: Wegen des Knutschens wollte ich nur mal anmerken, daß ich weiblich bin ;-) ... und wir neigen halt immer zu Gefühlsausbrüchen...

Schönen Rest vom Sonntag noch...


als Antwort auf: [#214040]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

27. Feb 2006, 11:49
Beitrag # 6 von 15
Beitrag ID: #214118
Bewertung:
(14538 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

leider muß ich zu diesem Thema nochmals nerven... Mit diesem Script wird immer ein neues Dokument erstellt. Ich würde es aber für das momentan aktuelle Dokument (mit allen Seiteneinstellungen) benötigen. Wo muß ich da ansetzen? Ich habe schon einmal versucht, das .Add in Zeile 94 wegzunehmen, dann bekomme ich aber Fehlermeldungen...

Könntest Du mir hier bitte nochmals auf die Sprünge helfen?


als Antwort auf: [#214041]

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

27. Feb 2006, 11:56
Beitrag # 7 von 15
Beitrag ID: #214126
Bewertung:
(14535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peppi,

ändere die Zeile
"var myDocument = app.documents.add();"

in

Code
var myDocument = app.documents[0]; 



als Antwort auf: [#214118]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

27. Feb 2006, 12:28
Beitrag # 8 von 15
Beitrag ID: #214135
Bewertung:
(14524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke, das hilft schon mal ein kleines Stückchen weiter...

Jetzt die nächste Frage (ja, ich weiß... wenn man mir den kleinen Finger gibt, will ich gleich die ganze Hand *grins*):
Kann ich diesem Script irgendwo sagen, daß es mit dem Platzieren der Bilder auf der aktuellen Seite (oder durch Eingabe der Seitenzahl) beginnen soll?
Zur Erklärung: Ich habe immer erst eine Menge Textseiten, und dann kommen die Grafiken an den Schluß des Dokuments. Momentan werden mit dem Script die Bilder ab Seite eins über den Text eingefügt...

Es tut mir leid, wenn ich so "dröbbelschesweise" (wie wir hier in Hessen sagen würden) mit meinen Fragen komme. Aber mit js stehe ich noch auf Kriegsfuß *schäm*, so daß ich nicht schon anhand des Scripts sehen könnte, was denn hier passiert. Ich merke nur dann, wenn es durchläuft, was - für meine Bedürfnisse - richtig und/oder falsch ist.
Irgendwann - und wenn's im nächsten Leben ist - werde ich mich auch intensiver mit js beschäftigen... ich versprech's Dir *grins*...


als Antwort auf: [#214126]

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

27. Feb 2006, 13:17
Beitrag # 9 von 15
Beitrag ID: #214153
Bewertung:
(14516 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peppi,

> Kann ich diesem Script irgendwo sagen, daß es mit dem Platzieren der Bilder
> auf der aktuellen Seite (oder durch Eingabe der Seitenzahl) beginnen soll?

Ich verstehe Dein Anliegen.
Allerdings müßte man dazu das Skript genauer studieren und umbauen, wofür mir im Moment die Zeit fehlt.

Im Moment legt das Skript ein Dokument mit einer erechneten Zahl an notwendigen Seiten an.
Das Hinzufügen von Seiten ist eine andere Routine.
Außerdem müßte das Skript Deine aktuelle Seite auslesen und dort mit dem Einfügen anfangen.

Vielleicht im nächsten Leben. ;-)


als Antwort auf: [#214135]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

27. Feb 2006, 14:12
Beitrag # 10 von 15
Beitrag ID: #214175
Bewertung:
(14503 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ok, danke für die Nachricht...

Gibt es denn dann einen einfachen Weg, die Seiten des neu angelegten Dokuments in das "richtige" zu übernehmen? Irgendwie habe ich da nichts Gescheites gefunden...


als Antwort auf: [#214153]

[CS1] - MacScript "Place Images"

OlliDruck
Beiträge gesamt: 529

27. Feb 2006, 14:45
Beitrag # 11 von 15
Beitrag ID: #214185
Bewertung:
(14496 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Vielen Dank für dieses Script. Auch ich suche sowas schon lange.

Mfg,Oliver


als Antwort auf: [#214175]

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

27. Feb 2006, 15:13
Beitrag # 12 von 15
Beitrag ID: #214189
Bewertung:
(14488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Gibt es denn dann einen einfachen Weg, die Seiten des neu angelegten Dokuments
> in das "richtige" zu übernehmen?

Seiten in der Seitenpalette im Quelldokument auswählen und per drag & drop ins Zieldokument ziehen und fallenlassen.

Und vielleicht klappts ja mit der Überarbeitung des Skripts noch ein halbes Leben vor dem nächsten ... (also - mutmaßlich - in den nächsten Tagen).


als Antwort auf: [#214175]

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

27. Feb 2006, 15:31
Beitrag # 13 von 15
Beitrag ID: #214193
Bewertung:
(14482 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

aha, beim gestrigen Versuch, die kopieren Seiten "fallenzulassen" hat ID nicht mitgespielt und hat sich einfach verabschiedet *heul* ... aber ich lass' nicht locker und versuch's immer weiter. Mal sehen, wer den längeren Arm hat *grins* ...

"...Und vielleicht klappts ja mit der Überarbeitung des Skripts noch ein halbes Leben vor dem nächsten ... (also - mutmaßlich - in den nächsten Tagen)..." - Das wäre natürlich das Sahnehäubchen... Werde also - entgegen meines ansonsten eher "hibbeligen" Wesens - geduldig warten...


als Antwort auf: [#214189]

[CS1] - MacScript "Place Images"

Martin Fischer
  
Beiträge gesamt: 12783

27. Feb 2006, 18:51
Beitrag # 14 von 15
Beitrag ID: #214218
Bewertung:
(14463 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peppi,

ich fürchte, diesmal muß ich passen.
Nach gut einer dreiviertel Stunde, die ich in die Analyse des Skripts reingesteckt habe (und die ich besser anders verwendet hätte), muß ich feststellen: Mit einem einfachen Umbau wäre es nicht getan.
Das Skript ist in seiner Struktur darauf angelegt, daß mit einem neuen Dokument gearbeitet wird.
Wendest Du es auf ein vorhandenes Dokument an, dann können - für Dich - unvorhersehbare Dinge passieren.

Das Skript greift z.B. zum Plazieren des ersten Bilds auf den ersten Bildrahmen in Deinem Dokument zurück. Wenn ein neues Dokument angelegt wird, ist so ein Zugriff zulässig und spart während der Ausführung eventuell Zeit.
Bei einem vorhandenen Dokument ist so ein Zugriff jedoch unzulässig, denn es würde ggf. den Inhalt eines ursprünglich bereits vorhandenen Bildrahmens überschreiben.

Das Skript müßte sinnvollerweise komplett neu entwickelt werden.
Dafür finde ich in den nächsten Wochen keine Zeit.

Sorry.

Aber vielleicht möchte sich jemand anders daran üben.
Du könntest z.B. im Adobe Scripting Forum anfragen.
Wenn Du das tust, dann beschreibe bitte möglichst genau Deine Anforderungen (müssen mehrere Bilder auf einer Seite plaziert werden können, oder kann's auch ein einzelnes sein; wo sollen die Bilder plaziert werden ...).


als Antwort auf: [#214193]
(Dieser Beitrag wurde von Martin Fischer am 27. Feb 2006, 18:52 geändert)

[CS1] - MacScript "Place Images"

peppi
Beiträge gesamt: 347

27. Feb 2006, 23:15
Beitrag # 15 von 15
Beitrag ID: #214259
Bewertung:
(14449 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

dann danke ich Dir sehr herzlich - für die Zeit, die Du investiert hast, um das Script umzuschreiben, auch wenn es denn doch nicht geklappt hat...

Ich werde jetzt also versuchen, mein ID dazu zu bewegen, mir die neu erstellten Seiten in das aktuelle Dokument zu kopieren... Und wehe, wenn's das nicht so macht, wie ich das will *grins*.

Es ist schon toll, immer wieder zu beobachten, wie Du Dich hier einbringst, und versuchst, jeden Wunsch umzusetzen... Man sollte Dich in Gold aufwiegen...


als Antwort auf: [#214218]
X