2016-08-11 9 views
1

Я получаю Data out of range с помощью скрипта indesign jsx. Мои сценарии останавливаются по адресу: Line 102 Source: pageWidth = width;Данные вне диапазона с помощью скриптов Indesign, из-за небольшого размера страницы

Я думаю, что из-за края больше размера бумаги. Я попытался обработать сценарий наименьшего размера бумаги: A11, с if else statement.

И я попытался удалить главную страницу с помощью app masterpages remove and pop, но я не знаю, как это сделать.

Как я могу отдать все размеры бумаги в поле «5 мм», а «A11» - «0 мм»? Я использую Indesign CS6 на ОС Windows 7.

Это мой JSON данные:

var papersizes = [ 
    { 
     "name": "4A0", 
     "length": 2378, 
     "width": 1682 
    }, 
    { 
     "name": "2A0", 
     "length": 1682, 
     "width": 1189 
    }, 
    { 
     "name": "A0", 
     "length": 1189, 
     "width": 841 
    }, 
    { 
     "name": "A1", 
     "length": 841, 
     "width": 594 
    }, 
    { 
     "name": "A2", 
     "length": 594, 
     "width": 420 
    }, 
    { 
     "name": "A3", 
     "length": 420, 
     "width": 297 
    }, 
    { 
     "name": "A4", 
     "length": 297, 
     "width": 210 
    }, 
    { 
     "name": "A5", 
     "length": 210, 
     "width": 148 
    }, 
    { 
     "name": "A6", 
     "length": 148, 
     "width": 105 
    }, 
    { 
     "name": "A7", 
     "length": 105, 
     "width": 74 
    }, 
    { 
     "name": "A8", 
     "length": 74, 
     "width": 52 
    }, 
    { 
     "name": "A9", 
     "length": 52, 
     "width": 37 
    }, 
    { 
     "name": "A10", 
     "length": 37, 
     "width": 26 
    }, 
    { 
     "name": "A11", 
     "length": 26, 
     "width": 18 
    } 
    ]; 

Это мой код:

var bleed = "4mm"; 
var margin = "10mm"; 

for (index = 0; index < papersizes.length; ++index) {  
     papersize = papersizes[index]; 
     name = papersize["name"]; 
     length = papersize["length"]; 
     width = papersize["width"]; 

     var doc = app.documents.add(); 

     with(doc.viewPreferences) { 
      horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
      verticalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
     } 

     with(doc.documentPreferences) { 
      pageHeight = length; 
      //Here does my script stops 
      pageWidth = width; 
      pageOrientation = PageOrientation.PORTRAIT; 
      pagesPerDocument = 1; 

      documentBleedBottomOffset = bleed; 
      documentBleedTopOffset = bleed; 
      documentBleedInsideOrLeftOffset = bleed; 
      documentBleedOutsideOrRightOffset = bleed; 
     } 

     //Here I try to handle the paper size 
     if(name != "A11") { 
      with (doc.pages.item(0).marginPreferences){ 
       bottom = margin; 
       //When document.documentPreferences.facingPages == true, 
       //"left" means inside; "right" means outside. 
       left = margin; 
       right = margin; 
       top = margin; 
      } 
     } else { 
      with (doc.pages.item(0).marginPreferences){  
       bottom = 0; 
       //When document.documentPreferences.facingPages == true, 
       //"left" means inside; "right" means outside. 
       left = 0; 
       right = 0; 
       top = 0; 
      } 
     }    

     //If the active document has not been saved (ever), save it. 
     if(app.activeDocument.saved == false){ 
      //If you do not provide a file name, InDesign will display the Save dialog box. 
      app.activeDocument.save(new File("C:/IndesignOutput/DIN_"+name+"_"+length+"mm_"+width+"mm.indd")); 
      app.activeDocument.close(); 
     } 
} 
+0

Это работает, когда вы делаете это вручную? – usr2564301

+1

Когда я создаю A11 бумагу с 0 маркой из графического интерфейса, тогда это возможно. Так почему же он не работает со сценарием? –

ответ

1

Вы правильно, вы можете» t измените размер документа из-за полей по умолчанию. Поэтому да: их изменение должно заставить его работать. Тем не менее, вы должны изменить их до, пытаясь установить этот маленький размер, а не после этого.

Но, увы, это не единственное. Как оказалось, недостаточно изменить только текущий стр. - изменение размера документа также изменяет размеры его основных спредов, поэтому вам также необходимо изменить их.

Мой обычный трюк, чтобы установить количество элементов, использующих одни и те же свойства, заключается в следующем:

// doc.masterSpreads.item(0).pages.everyItem().marginPreferences.properties = { ... }; 

... но, довольно удивительно, everyItem ничего не делает здесь! Таким образом, вам нужно вручную перебрать страницы в masterSpreads. К счастью, вам не нужно менять первую страницу документа, потому что по умолчанию он использует этот первый расширенный спред.

Это все еще не сработало, и после нескольких пробных ошибок я обнаружил, что есть еще один набор полей, которые необходимо сбросить: собственные значения по умолчанию для документа. (. Не знаю, почему Может быть, в случае, если вы удалите все мастер разворотов, или что-то странное подобное, а значения полей по-прежнему не должны «жить» где-нибудь.)

Это работает для меня:

length = 26; 
width = 18; 
bleed = "4mm"; 
margin = "10mm"; 

var doc = app.documents.add(); 

with(doc.viewPreferences) { 
    horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
    verticalMeasurementUnits = MeasurementUnits.MILLIMETERS; 
} 

doc.marginPreferences.properties = { top:0, bottom:0, left:0, right: 0 }; 
for (i=0; i<doc.masterSpreads.item(0).pages.length; i++) 
doc.masterSpreads.item(0).pages.item(i).marginPreferences.properties = { 
    bottom:0, 
    //When document.documentPreferences.facingPages == true, 
    //"left" means inside; "right" means outside. 
    left:0, 
    right:0, 
    top:0 
}; 

with(doc.documentPreferences) { 
    pageOrientation = PageOrientation.PORTRAIT; 
    pagesPerDocument = 1; 

    documentBleedBottomOffset = bleed; 
    documentBleedTopOffset = bleed; 
    documentBleedInsideOrLeftOffset = bleed; 
    documentBleedOutsideOrRightOffset = bleed; 

    pageHeight = length; 
    pageWidth = width; 
} 

Поверка имя, кстати, прекрасно, если вы заранее знаете, какое имя вызовет проблему. Но может быть лучше узнать, какие размеры (ширина или высота) возникнет, и установить поля на 0, если один из этих размеров слишком низок.

 Смежные вопросы

  • Нет связанных вопросов^_^