[GastForen Programme Print/Bildbearbeitung Adobe InDesign ImageCatalog.jsx /// Was muss ich tun, damit ein DIN A3 Dokument erzeugt wird?

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

ImageCatalog.jsx /// Was muss ich tun, damit ein DIN A3 Dokument erzeugt wird?

database
Beiträge gesamt:

3. Nov 2006, 15:03
Beitrag # 1 von 3
Bewertung:
(2056 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Über das Skript "ImageCatalog.jsx" ist es möglich ein InDesign Dokument zu erzeugen, in welches automatisiert Bilder eines zuvor definierten Ordners einfließen.
Mein Problem:

Es wird standardmäßig ein DIN A4 Dokument erzeugt.
Ich benötige DIN A3.
Desweiteren wäre es gut zu wissen, wie man die Ränder definiert.

Danke.

________________________________________


//ImageCatalog.jsx
//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/products/indesign/scripting.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com .
//
//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.
//myExtensions is a global. Mac OS users should also look at the file types in the myFileFilter function.
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){
if(File.fs == "Macintosh"){
var myFilteredFiles = myMacOSFileFilter(myFolder);
}
else{
myFilteredFiles = myWinOSFileFilter(myFolder);
}
if(myFilteredFiles.length != 0){
myDisplayDialog(myFilteredFiles, myFolder);
alert("Done!");
}
}
//Windows version of the file filter.
function myWinOSFileFilter(myFolder){
var myFiles = new Array;
var myFilteredFiles = new Array;
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]);
}
}
}
return myFilteredFiles;
}
function myMacOSFileFilter(myFolder){
var myFilteredFiles = myFolder.getFiles(myFileFilter);
return myFilteredFiles;
}
//Mac OS version of file filter
//Have to provide a separate version because not all Mac OS users use file extensions
//and/or file extensions are sometimes hidden by the Finder.
function myFileFilter(myFile){
var myFileType = myFile.type;
switch (myFileType){
case "JPEG":
case "EPSF":
case "PICT":
case "TIFF":
case "8BPS":
case "GIFf":
case "PDF ":
return true;
break;
default:
for(var myCounter = 0; myCounter<myExtensions.length; myCounter++){
var myExtension = myExtensions[myCounter];
if(myFile.name.indexOf(myExtension)>-1){
return true;
break;
}
}
}
return false;
}
function myDisplayDialog(myFiles, myFolder){
var myLabelWidth = 130;
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()){
staticTexts.add({staticLabel:"Horizontal Offset:", minWidth:myLabelWidth});
var myHorizontalOffsetField = measurementEditboxes.add({editValue:12, editUnits:MeasurementUnits.points});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"Vertical Offset:", minWidth:myLabelWidth});
var myVerticalOffsetField = measurementEditboxes.add({editValue:12, editUnits:MeasurementUnits.points});
}
with (dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Label:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myLabelsButtons = radiobuttonGroups.add();
with(myLabelsButtons){
radiobuttonControls.add({staticLabel:"None", checkedState:true});
radiobuttonControls.add({staticLabel:"File Name", checkedState:false});
radiobuttonControls.add({staticLabel:"Full Path", checkedState:false});
}
}
}
with (dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Fitting:", minWidth:myLabelWidth});
}
with(dialogColumns.add()){
var myFitProportionalCheckbox = checkboxControls.add({staticLabel:"Proportional", checkedState:true});
var myFitCenterContentCheckbox = checkboxControls.add({staticLabel:"Center Content", checkedState:true});
var myFitFrameToContentCheckbox = checkboxControls.add({staticLabel:"Frame to Content", 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 myRemoveEmptyFrames = myRemoveEmptyFramesCheckbox.checkedState;
var myLabels = myLabelsButtons.selectedButton;
var myFitProportional = myFitProportionalCheckbox.checkedState;
var myFitCenterContent = myFitCenterContentCheckbox.checkedState;
var myFitFrameToContent = myFitFrameToContentCheckbox.checkedState;
var myHorizontalOffset = myHorizontalOffsetField.editValue;
var myVerticalOffset = myVerticalOffsetField.editValue;
myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames, myFitProportional, myFitCenterContent, myFitFrameToContent, myHorizontalOffset, myVerticalOffset);
}
myDialog.destroy();
}
function myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myLabels, myRemoveEmptyFrames, myFitProportional, myFitCenterContent, myFitFrameToContent, myHorizontalOffset, myVerticalOffset){
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)) + myHorizontalOffset
var myLiveHeight = myDocumentPreferences.pageHeight - (myTopMargin + myBottomMargin)
var myColumnWidth = myLiveWidth / myNumberOfColumns
var myFrameWidth = myColumnWidth - myHorizontalOffset
var myRowHeight = (myLiveHeight / myNumberOfRows)
var myFrameHeight = myRowHeight - myVerticalOffset
var myPages = myDocument.pages;
if(myLabels >0){
//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 + (myRowHeight * (myRowCounter-1));
myY2 = myY1 + myFrameHeight;

for (var myColumnCounter = myNumberOfColumns; myColumnCounter >= 1; myColumnCounter--){
myX1 = myLeftMargin + (myColumnWidth * (myColumnCounter-1));
myX2 = myX1 + myFrameWidth;
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();
//Apply fitting options as specified.
if(myFitProportional){
myRectangle.fit(FitOptions.proportionally);
}
if(myFitCenterContent){
myRectangle.fit(FitOptions.centerContent);
}
if(myFitFrameToContent){
myRectangle.fit(FitOptions.frameToContent);
}
//Add the label, if necessary.
if(myLabels >0){
myX1 = myRectangle.geometricBounds[1];
myY1 = myRectangle.geometricBounds[2];
myX2 = myRectangle.geometricBounds[3];
myY2 = myRectangle.geometricBounds[2]+myVerticalOffset;
switch(myLabels){
case 1:
myString = myFile.name;
break;
case 2:
myString = myFile.fsName.toString();
break;
}
myTextFrame = myRectangle.parent.textFrames.add(myLabelLayer, undefined, undefined,{geometricBounds:[myY1, myX1, myY2, myX2], contents:myString});
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;
}
}
}
}
X

ImageCatalog.jsx /// Was muss ich tun, damit ein DIN A3 Dokument erzeugt wird?

Sacha Heck
Beiträge gesamt: 3281

3. Nov 2006, 16:03
Beitrag # 2 von 3
Beitrag ID: #260033
Bewertung:
(2045 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Database,

Hast du CS2? Dann würde ich es über die Bridge machen. Denn da ist es möglich erst das Format festzulegen und dann das Sript ausführen zu lassen ...

Gruß, Sacha Heck


als Antwort auf: [#260014]

ImageCatalog.jsx /// Was muss ich tun, damit ein DIN A3 Dokument erzeugt wird?

zaphodbeeblebroxx
Beiträge gesamt: 408

4. Nov 2006, 21:14
Beitrag # 3 von 3
Beitrag ID: #260140
Bewertung:
(2012 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Database,

HDS-Suche verwenden ... guckst Du hier ...

http://www.hilfdirselbst.ch/...?post=214072?#214072

zaphodbeeblebroxx


als Antwort auf: [#260014]