как сделать кнопку "показать обложку"

Статус
Закрыто для дальнейших ответов.

shadowbat

Участник
Топикстартер
Сообщения
106
Реакции
1
при добавлении .js файла ничего не происходит (кнопка не появляется)
а при выполнении скрипта в мастере операций ничего нового тоже не появляется, хотя операция считается успешно выполненной
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Гм странно, а ваш код из сообщения #15 кнопку в панель tools добавляет?
Если да то вставьте туда по образу и подобию trustedFunction, beginPriv, endPriv
 
  • Спасибо
Реакции: shadowbat

shadowbat

Участник
Топикстартер
Сообщения
106
Реакции
1
Forbidden items
There are a few menu items that cannot be executed, period. The “Quit” menu item falls into this category. Exiting Acrobat is something Adobe feels should not be done from a script. There are others, but they are not documented. Just be aware there are some menu items that will not execute under any circumstances.
вообще говоря, больше похоже на баг. ведь в мастере операций ShowCoverPage работает, в отладчике JS работает, из другого приложения (VBA+JS) - тоже работает. не работает именно из кнопки. да и на Quit консоль реагирует действительно по-другому:
07.png


похоже нужно создавать тему на баг трекере
он здесь находится? Home

Гм странно, а ваш код из сообщения #15 кнопку в панель tools добавляет?
кнопку добавляет. только первый код работает при нажатии этой кнопки. а второй код не работает - при нажатии на кнопку ничего не происходит

Если да то вставьте туда по образу и подобию trustedFunction, beginPriv, endPriv
сначала нужно сделать работоспособным этот код:
Код:
var DoMyMenuItem = trustedFunction(function(cItemName) {app.beginPriv();
app.execMenuItem(cItemName); app.endPriv(); });
app.addToolButton({
    cName: "MyShowCoverPages",
    cLabel: "Show Cover Pages",
    cEnable: "event.rc = (app.doc != null);",
    cExec: "DoMyMenuItem('FitVisible');"
});

при добавлении такого .js файла и при открытии акробата на пол секунды крутится кружочек вместо мышки (или часики в XP) и сама кнопка не появляется. хотя сам код должен быть рабочим с FitVisible вместо ShowCoverPage.
видимо ошибка при создании кнопки, ведь сама кнопка не появляется с этим кодом
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Ну, сейчас проверил, во всяком случае, на старых версиях акробата такого бага нет. Вот этот код у меня работает нормально:
Код:
if (app.viewerVersion < 10) {
    app.addMenuItem({ cName: "Show cover page", cUser: "Show cover page", cParent: "Tools", cExec: "ShowCoverClass()",
        cEnable: "event.rc = (event.target != null);"});
} else {
    app.addToolButton({ cName: "Show cover page", cLabel: "Show cover page", cExec: "ShowCoverClass()",
        cEnable: "event.rc = (event.target != null);"});
}

ShowCoverClass = app.trustedFunction(function(){
        app.beginPriv();
       
        app.execMenuItem ("ShowCoverPage");

        app.endPriv();
        return;
}
)
 
  • Спасибо
Реакции: shadowbat

shadowbat

Участник
Топикстартер
Сообщения
106
Реакции
1
Вы гений. Код рабочий, спасибо. Наконец-то теперь будет кнопка на панели
Код:
app.addToolButton({cName: "Обложка", cLabel: "Обложка", cExec: "ShowCoverClass()"});
ShowCoverClass = app.trustedFunction(function(){app.beginPriv(); app.execMenuItem ("ShowCoverPage"); app.endPriv();})
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
А, ну тогда, значит, действительно, дело было в привилегированном доступе к отдельным пунктам меню. Похоже, что FitVisible его не требует, а ShowCoverPage, он, внезапно, нужен. Вообще говоря, индусы, разрабатывающие акробат, отличаются какой то особой загадочностью - к примеру, в документации на execMenuItem сказано, что его доступ к отдельным пунктам акробатовского меню вообще можно в реестре блокировать %8'8()'
 
  • Спасибо
Реакции: shadowbat

shadowbat

Участник
Топикстартер
Сообщения
106
Реакции
1
ну я вообще не нашел даже официального полного списка команд execMenuItem(). в SDK есть 80 штук, хотя на самом деле их там как минимум 300 штук
----
там как раз нет ShowCoverPage и подписано, что это белый список команд меню. (ссылки на черный полный список почему-то нет)
This list applies only to document-level access to menu items. It does not apply to application-level JavaScript or JavaScript from a privileged context.

далее с регистром:
HKLM\SOFTWARE\Policies\Adobe\Adobe Acrobat\11.0\FeatureLockDown\cDefaultExecMenuItems\tWhiteList
добавил в значение в конце "|ShowCoverPage" - и о,чудо, - сразу заработал обычный код из сообщения #15

да и какой смысл пихать эти функции в привилегированный список, если они, как оказалось, запускаются из JS скрипта всё равно, если знать как
хотя если у них даже MVP++++ на форуме не знают об этом черном и белом списке, то наверное это сокрытие команд даёт свои плоды
app.execMenuItem ("ShowCoverPage") - not working | Adobe Community
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
ну я вообще не нашел даже официального полного списка команд
Ну, насколько я понимаю, он вообще не документирован и зависит от версии, локализации и т.д., они сами советуют его получать через listMenuItems
далее с регистром:
HKLM\SOFTWARE\Policies\Adobe\Adobe Acrobat\11.0\FeatureLockDown\cDefaultExecMenuItems\tWhiteList
добавил в значение в конце "|ShowCoverPage" - и о,чудо, - сразу заработал обычный код из сообщения #15
Вот в том то все и дело, что существуют какие то загадочные внутренние умолчания, которые правятся через реестр в обе стороны. Сложно сказать, какой кармической логикой руководствовались разработчики, придумав такое '))'
 
  • Спасибо
Реакции: shadowbat
Статус
Закрыто для дальнейших ответов.