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

  • Автор темы Автор темы egorus2010
  • Дата начала Дата начала

egorus2010

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

Ведь если сохранить такой монтаж, то при открытии Илл понимает, какие страницы из линка размещены. Где-то он это записывает...
 
А теперь для тех кто в танке то же самое помедленнее и развернуто объясняя каждое действие
И суть хотелки
 
Гм, он открывает нужную страницу PDF через такую конструкцию
Код:
var pdfOptions = app.preferences.PDFFileOptions;
pdfOptions.pageToOpen = j;
 var pdfDoc = open(fileRef, DocumentColorSpace.RGB);
Данная конструкция хоть и описана в референсе, но чертовски безумна с точки зрения программистской логики.
Я лично не проверял ни разу, но странно как она вообще у кого то работать может правильно?
Хотя я относительно адобовского скриптинга уже ничему не удивляюсь, Восток - дело тонкое! '))'
 
Если делать вручную.
Делаем Place PDF с птичкой link.
Если файл многостраничный - открывается окно выбора нужной страницы.
Размещаем линк нужной страницы на монтаже.
Здесь всё понятно?

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

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

(Не скажете, почему нельзя выкладывать ссылки на яндекс.диск?)
 
Последнее редактирование:
Если до конца тред дочитать - там есть попытка сделать то же самое, но слегка по другому:
Код:
p = Prefs.getIntegerPreference('plugin/PDFImport/PageNumber'); 
    Prefs.setIntegerPreference('plugin/PDFImport/PageNumber', p + 1);
Этот подход лично мне кажется более дельным
 
Да я хотел скрипт ResetPDF приложить. Я уже не помню, откуда он...
Получается, нужно как-то из этого всего собрать работающую конструкцию.
 
Не получается записать это в Action (хотя бы)
Кстати да, универсальный подход, который выручает в случае импотенции иллюстраторовского скриптинга - оформление нужного действия как экшн и и запуск его через doScript()
В данном случае должно работать гарантированно
Чтобы там картинки не выкладывали вместо того, чтобы к посту прикреплять и чтобы потом не получалось так:

Не по теме:
Ты бы лучше шрифт мне нашел, а то я в тупике :(
 
Да я хотел скрипт ResetPDF приложить. Я уже не помню, откуда он...
Получается, нужно как-то из этого всего собрать работающую конструкцию.
Ну неплохо бы глянуть, какая именно конструкция работает у вас
Фирменный стиль адобовского программирования - делать каждое действие десятью разными способами, девять из которых работают неправильно или не работают вообще '\:E@@@'
 
#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++;
 
Чертовски странно
Вы сами видите, что в обоих скриптах используется один и тот же принцип выбора страницы - через pdfOptions.pageToOpen
Но по какой то невероятной причине в первом скрипте этот метод не работает а во втором - работает правильно
Сегодня прямо какой то день необъяснимых загадок Adobe :(
 
Попробуем для начала попинать шину
Задайте в карлосовском скрипте страницу в явном виде, скажем, вместо
pdfOptions.pageToOpen = j;
поставьте
pdfOptions.pageToOpen = 2;

Будет все время вторые страницы помещать или по прежнему первые?
 
pdfOptions.pageToOpen = 2 открывает 2 страницу.
Это через скрипт ResetPDF (если в нем записать везде pdfOptions.pageToOpen = 2)

Есть промежуточный (для моей задачи) выход. Это на данном отрезке времени.
Скопировать в буфер нужный pdf.
Потом делать Paste и с помощь скрипта ResetPDF менять номер страниц, вставляемых следом.
В любом случае, это намного быстрее, чем всё вручную делать).
 
Последнее редактирование:
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 - то да, такой есть, он работает.
Но мы о другом говорим.
 
А, так вот вы о чем!
Нет, тогда надо делать совершенно по другому, не факт что вообще получится такое странное
Ваша конструкция
Код:
pdfOptions.pageToOpen = i;
var thisPlacedItem = doc.placedItems.add();
thisPlacedItem.file = pdfFile;
и не должна работать по определению ибо pageToOpen как следует из названия,только для Open но никак не link
Тогда однозначно только
оформление нужного действия как экшн и и запуск его через doScript()
 
а чем обусловлено использование именно AI? В InDesign было бы несколько проще
 
В InDesign было бы несколько проще
1. Не работаю в нем, нужды нет. Это практически единичный случай для ID.
Ну а как в нем это делается?
2. По скрипту (который ResetPDF). Почему он показывает только один разряд? То есть 21 страницу он покажет, как 2.
Как исправить?
 
По скрипту (который ResetPDF). Почему он показывает только один разряд? То есть 21 страницу он покажет, как 2.
А где полный текст скрипта? Я так понимаю, вы постили только какие то грубонарезанные правленные куски его?