Автор Тема: Как делать ПнП быстро!?), ставить метки обрезки и др. советы  (Прочитано 125938 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн onza_

отредактировал шаблон по умолчанию :) оказалось быстрее
Ну и странно. InDis съел скрипт и нормально отработал.. :/

UPG Какая у Вас версия InDesign стоит?
я так и не понял где вы выкладываете/обновляете скрипт. я пользовался стандартным imagecatalog в 2017 индизайне. в нем поменял var myDocument = app.documents.add(); на var myDocument = app.activeDocument; и стала вываливаться ошибка, как раз ссылаясь на эту строку.
     

    Оффлайн tikitavy

    я так и не понял где вы выкладываете/обновляете скрипт. я пользовался стандартным imagecatalog в 2017 индизайне. в нем поменял var myDocument = app.documents.add(); на var myDocument = app.activeDocument; и стала вываливаться ошибка, как раз ссылаясь на эту строку.
    Ха, так бы сразу и сказали :). Ссылка в шапке - ведёт на сообщение со скриптом, но оно - самое первое на странице, а такая большая шапка его просто перекрывает ;). Т.е. надо пролистать шапку, и первое же сообщение после неё - будет оно. Я скрипт перевыложу тут:

    Как пользоваться. В том же Photoshop определите размеры карточки в points и вводите их в поля Ширина и Высота фрейма. Ну и всё.. лишние параметры (метки) я из скрипта и диалога убрал. Готовый набор центруется по высоте/ширине листа. Из минусов - если по высоте фреймы не влезут на лист, то в момент вставки картинок может вылететь ошибка (решил не перехватывать исключение т.к. времени жаль; может, потом..).

    Работает в свежих версиях InDesign, не требует "игры" с границами листа, не имеет лишних для нашего дела настроек, позволяет руками указывать размеры фреймов и расстояние между ними.

    UPD А, ещё добавил подхват PNG, а то непорядок..
    UPD На сейчас проверено в InDesign 2017 (видео испытания). "По умолчанию" для вставки используется не новый документ, а открытый-активный.

    Извините, вам запрещён просмотр содержимого спойлеров.
    « Последнее редактирование: 16 Февраль 2017, 09:15:45 »
       
      Поблагодарившие: koros, Skyris

      Оффлайн PPAP

      Вот большое спасибо теперь все работает как часы, только может заменить Frame width (pt) на более понятные Frame width (mm), чтобы рамочку рисовать в милимметрах?
        Pen Pineapple Apple Pen
         

        Оффлайн tikitavy

        Вот большое спасибо теперь все работает как часы, только может заменить Frame width (pt) на более понятные Frame width (mm), чтобы рамочку рисовать в милимметрах?
        Лично я пока не готов, с InDesign не работаю, а времени нет на копание в коде просто для удовольствия (этого удовольствия у меня сейчас более чем). Там же скрипт, думаю - кто угодно может это сделать :). Правда, был там какой-то закавык.. (вроде с new UnitValue.. не помню)

        Оффлайн PPAP

        ну тогда как то так//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 в посте)
        « Последнее редактирование: 17 Февраль 2017, 13:35:21 »
          Pen Pineapple Apple Pen
           
          Поблагодарившие: koros

          Оффлайн tikitavy

          ну тогда как то так
          На первый взгляд всё ок. Надо потестить при разных единицах измерения по умолчанию.

          Оффлайн Dimarius

          1. Какое расстояние нужно оставлять между картами, чтобы в полиграфии обрезали нормально?
          2. Где в inDesing CC 2017 вызывается меню скриптов? Справа что-то не вижу
             

            Оффлайн TheRealMaN_

            1. не знаю, не печатал не разу в типографии
            2. меню windows - utilities - scripts
              Видео советы и секреты InDesign для ПнП. InDesign, запили ПнП по-быстрому, оставь время на поиграть!)
               

              Оффлайн amid_v

              • Прохожий
              • *
              • Сообщений: 20
                • Просмотр профиля
              Большое спасибо за тему
                 

                Оффлайн jirik3510

                1. Какое расстояние нужно оставлять между картами, чтобы в полиграфии обрезали нормально?

                Как правило надо вылеты под обрез. Когда делаю раскладку на лист, с каждой стороны любого файла задаю вылеты по 2 мм (модуль для adobe acrobat - quite imposing plus 3), т.е. получается 4 мм.
                   

                  Оффлайн KickeR

                  TheRealMaN_, спасибо за тему. Очень помогла. Печатаю в основном на фотках 10-15, теперь по быстрому любую карточную настолку могу раскидать по фоткам и распечатать.
                  Возник вопросик.  Есть изображение, на нем область из 7 гексов. Как можно так же быстро как с прямогольниками разбить эту область на гексы и подготовить к печати эти гексы (2 шт. на фотку 10-15)? Есть какие-то инструменты в фотошопе или индезайне?
                     

                    Оффлайн wil_low

                    Всего 7 штук? Вручную быстрее всего выделить и повырезать
                       

                      Оффлайн KickeR

                      Всего 7 штук? Вручную быстрее всего выделить и повырезать
                      Эт пример был.  Всего 14 изображений по 7 штук каждую. В ручную не варик и так понятно,  что можно.
                         

                        Оффлайн duckbill

                        Я бы делал так - открыл все файлы слоями, подровнял, чтобы совпаладли, померял сторону шестиугольника. Сгенерил соты с померанной стороной, наложил соты на картинку, используя выделение по цвету на слое с сотами и выделяя бы по стопке шестиугольников, раскидал бы по 7 отдельным картинкам и сохранил послойно эти картинки. Работы хоть и частично руками, но минут на 10.
                           

                          А подскажите, как в Indesign CS6(или 5.5) изменить цвет меток crop marks.
                             

                            Оффлайн TheRealMaN_

                            Можно например в слоях (панель layers) выключить все остальные слои и выбрав все метки, по Ctrl+A например, выбрать цвет из палитры
                              Видео советы и секреты InDesign для ПнП. InDesign, запили ПнП по-быстрому, оставь время на поиграть!)
                               

                              Можно например в слоях (панель layers) выключить все остальные слои и выбрав все метки, по Ctrl+A например, выбрать цвет из палитры

                              Спасибо, помогло.
                                 

                                Оффлайн AlGeMix

                                • Новичок
                                • Сообщений: 1
                                  • Просмотр профиля
                                Спасибо за тему. Первый раз пробую с помощью InDesign подготовить материалы для печати, видео очень помогли. Если у кого-нибудь есть скрипт "Export selected objects as jpg.jsx", скиньте, пожалуйста. Ссылка в шапке нерабочая.
                                   

                                  Оффлайн koros

                                  Хотелось бы вернуться к скрипту, который в автомате расставляет карты на странице. Как сделать так, чтобы изображения карт (могут быть немного разного размера) растягивались полностью на весь фрейм?
                                    Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
                                     

                                    Оффлайн tikitavy

                                    Хотелось бы вернуться к скрипту, который в автомате расставляет карты на странице. Как сделать так, чтобы изображения карт (могут быть немного разного размера) растягивались полностью на весь фрейм?
                                    Изменить скрипт. У фрейма есть параметр (в InDesign) - при вставке файла подгонять его по размеру фрейма, его надо прописать в скрипте.
                                       
                                      Поблагодарившие: koros