Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - PPAP

Страницы: [1]
1
Основной раздел PnP | General board of PnP / Re: ЁРШ!
« : 24 Январь 2019, 12:59:08 »
по той же ссылке доступна Баня.
Поблагодарившие: weballin, Sedova

2
ну тогда как то так//ImageCatalog.jsx
//An InDesign JavaScript
/* 
@@@BUILDINFO@@@ "ImageCatalog.jsx" 3.0.0 15 December 2009
*/
//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 on InDesign/InCopy scripting see the documentation included in the Scripting SDK
//available at http://www.adobe.com/devnet/indesign/sdk.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.
main();
function main(){
   var myFilteredFiles;
   //Make certain that user interaction (display of dialogs, etc.) is turned on.
   app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
   myExtensions = [".jpg", ".jpeg", ".eps", ".ps", ".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai", ".png"]
   //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"){
            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 ":
         case "PNG":
         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 myGetParagraphStyleNames(myDocument){
   var myStyleNames = new Array;
   var myAddLabelStyle = true;
   for(var myCounter = 0; myCounter < myDocument.paragraphStyles.length; myCounter++){
      myStyleNames.push(myDocument.paragraphStyles.item(myCounter).name);
      if (myDocument.paragraphStyles.item(myCounter).name == "Labels"){
         myAddLabelStyle = false;
      }
   }
   if(myAddLabelStyle == true){
      myStyleNames.push("Labels");
   }
   return myStyleNames;
}

function myDisplayDialog(myFiles, myFolder){
   var myLabelWidth = 112;
   var myStyleNames = myGetParagraphStyleNames(app);
   var myLayerNames = ["Layer 1", "Labels"];
   var myDialog = app.dialogs.add({name:"Image Catalog"});
   with(myDialog.dialogColumns.add()){
      with(dialogRows.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()){
               staticTexts.add({staticLabel:"Number of Rows:", minWidth:myLabelWidth});
               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:"Frame width (mm):", minWidth:myLabelWidth});
               //var myHorizontalOffsetField = measurementEditboxes.add({editValue:120, editUnits:MeasurementUnits.points});
                      var myFrameWidthField = measurementEditboxes.add({editValue:210, editUnits:MeasurementUnits.MILLIMETERS});
            }
            with(dialogRows.add()){
               staticTexts.add({staticLabel:"Frame height (mm):", minWidth:myLabelWidth});
               //var myVerticalOffsetField = measurementEditboxes.add({editValue:240, editUnits:MeasurementUnits.points});
                      var myFrameHeightField = measurementEditboxes.add({editValue:297, editUnits:MeasurementUnits.MILLIMETERS});
            }
           
           
            with(dialogRows.add()){
               staticTexts.add({staticLabel:"", minWidth:myLabelWidth});
            }             
           
            with(dialogRows.add()){
               staticTexts.add({staticLabel:"Frame offset hor. (mm):", minWidth:myLabelWidth});
                      var myFrameOffsetHorField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.MILLIMETERS});
            }
            with(dialogRows.add()){
               staticTexts.add({staticLabel:"Frame offset vert. (mm):", minWidth:myLabelWidth});
                      var myFrameOffsetVertField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.MILLIMETERS});
            }
           
           
            with (dialogRows.add()){
               with(dialogColumns.add()){
                  staticTexts.add({staticLabel:"Additional:", minWidth:myLabelWidth});
               }
               with(dialogColumns.add()){
                  var myFitProportionalCheckbox = checkboxControls.add({staticLabel:"Proportional", checkedState:false});
                  var myFitCenterContentCheckbox = checkboxControls.add({staticLabel:"Center content to frame", checkedState:true});
                  var myFitFrameToContentCheckbox = checkboxControls.add({staticLabel:"Justify frame to content", checkedState:false});
               }
            }
            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 myFitProportional = myFitProportionalCheckbox.checkedState;
         var myFitCenterContent = myFitCenterContentCheckbox.checkedState;
         var myFitFrameToContent = myFitFrameToContentCheckbox.checkedState;
         var myFrameWidth = myFrameWidthField.editValue;
         var myFrameHeight = myFrameHeightField.editValue;
             var myFrameOffsetVert = myFrameOffsetVertField.editValue;
             var myFrameOffsetHor = myFrameOffsetHorField.editValue;

             myDialog.destroy();
         myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myRemoveEmptyFrames, myFitProportional, myFitCenterContent, myFitFrameToContent, myFrameWidth, myFrameHeight, myFrameOffsetVert, myFrameOffsetHor);
        }
      else{
         myDialog.destroy();
      }
   }
}

function myMakeImageCatalog(myFiles, myNumberOfRows, myNumberOfColumns, myRemoveEmptyFrames, myFitProportional, myFitCenterContent, myFitFrameToContent, myFrameWidth, myFrameHeight, myFrameOffsetVert, myFrameOffsetHor)
{
   var myPage, myFile, myCounter, myX1, myY1, myX2, myY2, myRectangle;
   var myParagraphStyle, myError;
   var myFramesPerPage = myNumberOfRows * myNumberOfColumns; 
   //var myDocument = app.documents.add();
        var myDocument = app.activeDocument;
   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 myRowOffset = myFrameOffsetVert;
    var myColOffset = myFrameOffsetHor;   
    var myCenteredLeftMargin = (myLiveWidth - ( myFrameWidth*myNumberOfColumns + myColOffset*(myNumberOfColumns-1) )   )/2 + myLeftMargin;
    var myCenteredTopMargin = (myLiveHeight - ( myFrameHeight*myNumberOfRows + myRowOffset*(myNumberOfRows-1) )   )/2 + myTopMargin;     
    var myColumnWidth = myFrameWidth;
    var myRowHeight = myFrameHeight; 
    var myPages = myDocument.pages;
   // 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 = myCenteredTopMargin + (myRowHeight * (myRowCounter-1)) + (myRowOffset * (myRowCounter-1));
         myY2 = myY1 + myFrameHeight;
         for (var myColumnCounter = myNumberOfColumns; myColumnCounter >= 1; myColumnCounter--){ 
            myX1 = myCenteredLeftMargin + (myColumnWidth * (myColumnCounter-1)) + (myColOffset * (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);
      }
   }
   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;
         }
      }
   }
}

ps/криво сделал bbcode в посте)
Поблагодарившие: koros

3
Ёрш! 2012
тесера

тільки для себе
PnP: https://cloud.mail.ru/public/5b5i/p9JHs24xD
Поблагодарившие: Gigasaur, Sedova, Arafrael, Mirex, ann-kiryusha

Страницы: [1]