Я написал несколько пользовательских скриптов для Adobe Acrobat Pro (я работаю с большим количеством PDF-файлов для научных исследований), и они отлично работают на Mac и Windows. В Linux есть только Adobe Reader, но мне все равно удалось добиться отображения пунктов меню в меню файлов при запуске, как показано на снимке экрана файла Readme по адресуhttps://github.com/lmmx/CropScience(в Windows).
Поскольку в документации Acrobat нет никаких упоминаний о Linux (вероятно, потому что доступен только Reader, а не полный Acrobat), я немного не понимаю, куда поместить свои файлы, чтобы предоставить им необходимые разрешения для запуска (при щелчке).
Пример скрипта «CropPrintNature.js», соответствующий настройкам для академического журнала Nature:
app.addMenuItem({cName:"Crop for Nature (articles and ed.)",cParent:"Crop and Print", cExec:"for(var p=0;p<n();p++){o=a().getPageBox('BBox',p);o[0]+=34;o[1]-=37;o[2]-=33;o[3]+=22;if(p==0){o[1]-=38}for(b=0;b<4;b++){a().setPageBoxes(d[b],p,p,o)}};this.print();"});
Я переместил их из /opt/Adobe/Reader9/Reader/Javascripts в ~/.adobe/Acrobat/9.0/Javascripts, но они все равно не работают (но я думаю, что это правильное место, поскольку оно относится к конкретному пользователю, а не к всей системе).
В этой последней папке glob.js пуст, а glob.settings.js содержит только��({})
Я предполагаю, что никаких ошибок TypeError нет — я вижу кнопку «Обрезать» и «Печать», которая должна соответствовать элементу cParent, на который ссылается нажатие одной из кнопок — вместо этого происходит попытка доступа к чему-то за пределами его уровня привилегий в качестве последнего сообщения (которое выводится в консоль при нажатии кнопки).
Нужно ли мне их переместить или добавить какой-то файл конфигурации...? Конец журнала консоли следующий:
App.addMenuItem:1:Folder-Level:User:CropPrintAnnuRev.js
===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintBriefBioinfo.js
===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintJMolBioEarly.js
===> Parameter cParent.
TypeError: Invalid argument type.
App.addMenuItem:1:Folder-Level:User:CropPrintAAutoBoundaries.js
===> Parameter cParent.
NotAllowedError: Security settings prevent access to this property or method.
Doc.setPageBoxes:1:Menu Crop for Nature Rev. Mol. Cell. Bio.:Exec
решение1
Указанный вами cParent не является элементом меню в Acrobat/Reader. Вам необходимо указать допустимый элемент меню.
Кроме того, вы можете проверить в документации Acrobat JavaScript, доступен ли setPageBoxes для Reader (при условии, что вы запустили скрипт в Reader).