[AI CS4-CS6] Размещение линков многостраничного PDF

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
А было бы весело, если бы можно было выбрать pdf-файл, диапазон страниц, и это всё в линках вываливалось на монтаж.
У Карлоса (и остальных товарищей в той теме) недоделано.
Скрипт открывает файл, выбранное количество отрабатывает, но только всегда первую страницу выкладывает, повторяя её заданное количество раз.
Или в CS5 чего-то не хватает для этого?

Ведь если сохранить такой монтаж, то при открытии Илл понимает, какие страницы из линка размещены. Где-то он это записывает...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А теперь для тех кто в танке то же самое помедленнее и развернуто объясняя каждое действие
И суть хотелки
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Гм, он открывает нужную страницу PDF через такую конструкцию
Код:
var pdfOptions = app.preferences.PDFFileOptions;
pdfOptions.pageToOpen = j;
 var pdfDoc = open(fileRef, DocumentColorSpace.RGB);
Данная конструкция хоть и описана в референсе, но чертовски безумна с точки зрения программистской логики.
Я лично не проверял ни разу, но странно как она вообще у кого то работать может правильно?
Хотя я относительно адобовского скриптинга уже ничему не удивляюсь, Восток - дело тонкое! '))'
 

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
Если делать вручную.
Делаем Place PDF с птичкой link.
Если файл многостраничный - открывается окно выбора нужной страницы.
Размещаем линк нужной страницы на монтаже.
Здесь всё понятно?

Были попытки автоматизировать это. (Вот нужно кому-то разместить на монтажке все (или только выбранные) страницы pdf-файла в форме линков.
Но они привели к вышеописанной мною проблеме - автоматом размещается всегда первая страница.
Или, если при этом пользоваться скриптом ResetPDF (который позволяет выбрать номер страницы pdf, и если его мышкой перетянуть на монтаж, то размещается линк именно этой страницы из файла), то...
Можно этим скриптом поменять номер страницы и снова кликнуть по монтажу - разместится другая страница.

Не получается записать это в Action (хотя бы), чтобы при каждом новом клике и перетаскивании файла, он размещал линк новой страницы на монтажке.

(Не скажете, почему нельзя выкладывать ссылки на яндекс.диск?)
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Если до конца тред дочитать - там есть попытка сделать то же самое, но слегка по другому:
Код:
p = Prefs.getIntegerPreference('plugin/PDFImport/PageNumber'); 
    Prefs.setIntegerPreference('plugin/PDFImport/PageNumber', p + 1);
Этот подход лично мне кажется более дельным
 

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
Да я хотел скрипт ResetPDF приложить. Я уже не помню, откуда он...
Получается, нужно как-то из этого всего собрать работающую конструкцию.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Не получается записать это в Action (хотя бы)
Кстати да, универсальный подход, который выручает в случае импотенции иллюстраторовского скриптинга - оформление нужного действия как экшн и и запуск его через doScript()
В данном случае должно работать гарантированно
Чтобы там картинки не выкладывали вместо того, чтобы к посту прикреплять и чтобы потом не получалось так:

Не по теме:
Ты бы лучше шрифт мне нашел, а то я в тупике :(
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Да я хотел скрипт ResetPDF приложить. Я уже не помню, откуда он...
Получается, нужно как-то из этого всего собрать работающую конструкцию.
Ну неплохо бы глянуть, какая именно конструкция работает у вас
Фирменный стиль адобовского программирования - делать каждое действие десятью разными способами, девять из которых работают неправильно или не работают вообще '\:E@@@'
 

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
#target illustrator
#targetengine session

var doc = app.activeDocument;
var pdfOptions = app.preferences.PDFFileOptions;
var win = new Window ("palette");
win.location = [50, 500];
var btnReset = win.add("button",undefined,"reset");
var btnInc = win.add("button",undefined,"+1");
var txtcpt = win.add("statictext",undefined,"Page number : " + pdfOptions.pageToOpen);

btnInc.onClick = function()
{
pdfOptions.pageToOpen++;
txtcpt.text = "Page number : " + pdfOptions.pageToOpen;
}
btnReset.onClick = function()
{
pdfOptions.pageToOpen = 1;
txtcpt.text = "Page number : " + pdfOptions.pageToOpen;
}
win.show();
pdfOptions.pageToOpen++;
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Чертовски странно
Вы сами видите, что в обоих скриптах используется один и тот же принцип выбора страницы - через pdfOptions.pageToOpen
Но по какой то невероятной причине в первом скрипте этот метод не работает а во втором - работает правильно
Сегодня прямо какой то день необъяснимых загадок Adobe :(
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Попробуем для начала попинать шину
Задайте в карлосовском скрипте страницу в явном виде, скажем, вместо
pdfOptions.pageToOpen = j;
поставьте
pdfOptions.pageToOpen = 2;

Будет все время вторые страницы помещать или по прежнему первые?
 

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
pdfOptions.pageToOpen = 2 открывает 2 страницу.
Это через скрипт ResetPDF (если в нем записать везде pdfOptions.pageToOpen = 2)

Есть промежуточный (для моей задачи) выход. Это на данном отрезке времени.
Скопировать в буфер нужный pdf.
Потом делать Paste и с помощь скрипта ResetPDF менять номер страниц, вставляемых следом.
В любом случае, это намного быстрее, чем всё вручную делать).
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
var doc = app.activeDocument;
app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
var pdfOptions = app.preferences.PDFFileOptions;
var firstPage = 1;
var lastPage = 10;
pdfFile = File.openDialog("Open Multi-page PDF", "*.pdf", false);
for (i= firstPage;i<lastPage;i++)
{
pdfOptions.pageToOpen = i;
var thisPlacedItem = doc.placedItems.add();
thisPlacedItem.file = pdfFile;
};
Если здесь поменять i на 2, все равно 1 страница открывается.

Вы все время говорите про Карлосовский скрипт. Но у него нет скрипта, которые помещает линки.
Если просто открыть мультиPDF - то да, такой есть, он работает.
Но мы о другом говорим.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А, так вот вы о чем!
Нет, тогда надо делать совершенно по другому, не факт что вообще получится такое странное
Ваша конструкция
Код:
pdfOptions.pageToOpen = i;
var thisPlacedItem = doc.placedItems.add();
thisPlacedItem.file = pdfFile;
и не должна работать по определению ибо pageToOpen как следует из названия,только для Open но никак не link
Тогда однозначно только
оформление нужного действия как экшн и и запуск его через doScript()
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а чем обусловлено использование именно AI? В InDesign было бы несколько проще
 

egorus2010

Топикстартер
12 лет на форуме
Сообщения
1 520
Реакции
51
В InDesign было бы несколько проще
1. Не работаю в нем, нужды нет. Это практически единичный случай для ID.
Ну а как в нем это делается?
2. По скрипту (который ResetPDF). Почему он показывает только один разряд? То есть 21 страницу он покажет, как 2.
Как исправить?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
По скрипту (который ResetPDF). Почему он показывает только один разряд? То есть 21 страницу он покажет, как 2.
А где полный текст скрипта? Я так понимаю, вы постили только какие то грубонарезанные правленные куски его?