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

Автор TheRealMaN_, 12 ноября 2012, 08:37:27

« назад - далее »

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

onza_

Цитата: tikitavy от 15 февраля 2017, 10:10:16
Цитата: onza_ от 15 февраля 2017, 09:53:36
отредактировал шаблон по умолчанию :) оказалось быстрее
Ну и странно. InDis съел скрипт и нормально отработал.. :/

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

tikitavy

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

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

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

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

Извините, вам запрещён просмотр содержимого спойлеров.
  •  
    Пользователи, которые поблагодарили этот пост: koros, Skyris

PPAP

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

tikitavy

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

PPAP

#244
ну тогда как то так
//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 в посте)
Pen Pineapple Apple Pen
  •  
    Пользователи, которые поблагодарили этот пост: koros

tikitavy

Цитата: PPAP от 17 февраля 2017, 13:04:34ну тогда как то так
На первый взгляд всё ок. Надо потестить при разных единицах измерения по умолчанию.

Dimarius

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

TheRealMaN_

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

amid_v

  •  

jirik3510

Цитата: Dimarius от 15 апреля 2017, 18:19:11
1. Какое расстояние нужно оставлять между картами, чтобы в полиграфии обрезали нормально?

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

KickeR

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

wil_low

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

KickeR

Цитата: wil_low от 05 февраля 2018, 17:17:22
Всего 7 штук? Вручную быстрее всего выделить и повырезать
Эт пример был.  Всего 14 изображений по 7 штук каждую. В ручную не варик и так понятно,  что можно.
  •  

duckbill

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

Космическая Ветчина

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

TheRealMaN_

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

Космическая Ветчина

Цитата: TheRealMaN_ от 05 мая 2018, 16:42:18Можно например в слоях (панель layers) выключить все остальные слои и выбрав все метки, по Ctrl+A например, выбрать цвет из палитры

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

AlGeMix

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

koros

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

tikitavy

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