Как поменять размер листа через JS

  • Автор темы Автор темы Spirit412
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Spirit412

Топикстартер
15 лет на форуме
Сообщения
873
Реакции
129
Мучуюсь уже второй день, и не могу сообразить - как поменять размер листа в открытом документе.
Код:
if ( app.documents.length == 0 ) {
//если открытых документов нет
var myPreset = new Object (DocumentPreset);
myPreset.units = RulerUnits.Millimeters; // размер в мм
myPreset.colorMode = DocumentColorSpace.CMYK; // цветовая модель
myPreset.previewMode = DocumentPreviewMode.OverprintPreview; //режим просмотра
myPreset.title = "Test"; // название документа
myPreset.width = 500; // задаем ширину документа
myPreset.height = 500; // задаем высоту документа
myPreset.name = "pr";
app.documents.addDocument ("pr", myPreset);  
}
else {
//если документ открыт (активный)
doc = app.activeDocument;
doc.colorMode = DocumentColorSpace.CMYK;
doc.width = 612;
doc.height = 612;
}

И второй вопрос = параметр которым задаётся bleed у листа?
 
Ответ: Как поменять размер листа через JS

У открытого документа нельзя поменять размер.
 
Ответ: Как поменять размер листа через JS

Что значит нельзя? Можно поменять размер артборда.
 
Ответ: Как поменять размер листа через JS

Можно поменять размер артборда.
Как? Опять скажем спасибу продвинутой фирме адоба. Все свойства Read-Only. Разве что, новый документ создать и туда импортировать-скопировать. И к блиду тоже доступа IMHO нет.
 
Ответ: Как поменять размер листа через JS

Речь идёт о каких-то древних версиях? Если да, то не знаю, проверить не могу.
 
Ответ: Как поменять размер листа через JS

CS3
А что - в CS5 уже можно?
 
Ответ: Как поменять размер листа через JS

В CS4 точно помню менял. Даже что-то сюда выкладывал, вроде. Про CS3 уже не скажу. Были там артборды?
Помню только что это была самая ужасная версия. Немало денег из-за неё вылетело в трубу (из-за Photoshop) :)
 
Ответ: Как поменять размер листа через JS

У меня CS5.
Так может напишите как поменять можно?
 
Ответ: Как поменять размер листа через JS

Да никак, только через пересохранение-переоткрытие. Во всяком случае, готового решения не нашел, проще оказалось сделать так. Возможно, Fog_path знает какой то способ через бридж, но мне чтото сомнительно. ':(8'
 
Ответ: Как поменять размер листа через JS

Код:
Set appRef = CreateObject("Illustrator.Application")
Set doc = appRef.ActiveDocument

i = doc.Artboards.GetActiveArtboardIndex
mysell = doc.Selection
aa = mysell(0).VisibleBounds
doc.Artboards(i + 1).ArtboardRect = aa

Выделяем объект, получаем его габариты в виде массива. назначаем их артборду.
Вместо выделения объекта можно самому заносить размеры через Array
 
Ответ: Как поменять размер листа через JS

И то хлеб. Жаль, на CS3 у документа нет свойства Artboards :-(
 
Ответ: Как поменять размер листа через JS

а в CS3 и нельзя
A document’s color space, height, and width can only be set when the document is created. You cannot modify these properties in an existing document.
 
Ответ: Как поменять размер листа через JS

Богатейшие возможности скриптинга. Что и говорить. :D
 
Ответ: Как поменять размер листа через JS

Попробовал код. Не работает - ругается на первую строку.
Может я ошибаюсь... но разве приведенный пример не из VB???
Я же ищу решение на JS
 
Ответ: Как поменять размер листа через JS

Из VB. А что, у них разные объектные модели?
По идее (проверить не могу у меня, повторяю, CS3) если переписать код в стиле JS (позаменять = на := поставить везде ; и т.д.) должно сработать. Ключевой момент - будет ли ругаться на строку
Код:
i := app.activeDocument.Artboards.GetActiveArtboardIndex;
 
Ответ: Как поменять размер листа через JS

Нашел решение.
На CS5 работает

Код:
var docRef = app.activeDocument;
var myArtboard = new Array ();

     var myLeft = 0;   var myRight = 1;   var myTop = 2;   var myBottom = 3; 
          
          myArtboard[myLeft] = 0;
          myArtboard[myRight] = 500;
          myArtboard[myTop] = 500;
          myArtboard[myBottom] = 0;          

docRef.artboards[0].artboardRect = myArtboard;

Страница (0) с размером 500*500.


Ну и второй пример кода.
Если на странице есть объект, то скрипт устанавливает размер страницы = объект +20, без объекта страница выходит 20*20
Код:
#target illustrator
 
var doc = app.activeDocument;
 
var docVB = doc.visibleBounds;
 
var left = docVB[0] - 20;
var top = docVB[1] + 20;
var right = docVB[2] + 20;
var bottom = docVB[3] - 20;
 
var ab = doc.artboards.getActiveArtboardIndex();
 
doc.artboards[ab].artboardRect = [left,top,right,bottom];
 
  • Спасибо
Реакции: Dmitri_J
Ответ: Как поменять размер листа через JS

А, так они еще и по разному называются на JS и VB... ':('
 
Ответ: Как поменять размер листа через JS

Чем отличаются? Почему по-разному?
Вот две ключевые строки:
doc.Artboards(i + 1).ArtboardRect = aa
docRef.artboards[0].artboardRect = myArtboard;
В чем отличие? Да ни в чём. Не понимаю затруднений автора темы.

Кстати, на басике можно написать так doc.Artboards(1).ArtboardRect = Array (0, 500, 500, 0). Думаю в js тоже можно упростить.

(ага, добавил автор, можно).
 
Ответ: Как поменять размер листа через JS

doc.Artboards(1) - это если для второго листа. если лист в документе один то doc.Artboards(0)


doc.Artboards(0).ArtboardRect = Array (0, 500, 500, 0);
не работает.
А вот параметр bleed для документа через скрипты не задать. :(
 
Ответ: Как поменять размер листа через JS

Это на жаве, а в бейсике первый артборд это 1.

Короче, осталось вам разобраться со строкой:
i = doc.Artboards.GetActiveArtboardIndex
Которая получает индекс активного артборда. Для полного счастья.
 
Статус
Закрыто для дальнейших ответов.