Сохранение и автозагрузка вкладок Adobe Acrobat Reader
Я создал Javascript для Acrobat Reader, который позволяет сохранять открытые в данный момент вкладки. Добавлены пункты меню: "Сохранить вкладки", "Загрузить вкладки" и "Переключить автоматическую загрузку". Он сохраняет вкладки и номера страниц, а также восстанавливает их.
Это особенно полезно для Linux, где не так много читателей PDF. Однако я не смог выяснить, как перехватить события открытия или закрытия документа или установить какое-либо событие таймера для автоматического сохранения текущего списка вкладок.
Вот оригинальная ссылка на API для Adobe Acrobat.
/*
Here is the script, put it in $HOME/.adobe/Acrobat/9.0/JavaScripts (or in
the equivalent program files folder under Windows,) and it will automatically
be loaded.
When you need to save current state, choose menu "view -> Save Tabs", to restore
recently saved tabs choose "view -> Load Tabs".
*/
var delim = '|';
var parentMenu = "View";
/*
Loading Saved Tabs
*/
function LoadTabs() {
if (global.tabs_opened == null) {
return;
}
var flat = global.tabs_opened.split(delim);
for (i = 0; i < flat.length; i += 2) {
try {
app.openDoc(flat[i]);
app.execMenuItem("FirstPage");
for (ii = 0; ii < flat[i + 1]; ++ii) {
app.execMenuItem("NextPage");
}
} catch (ee) {
app.alert("Error while opening the requested document.\n" + flat[i], 3);
}
}
}
/*
Function with trusted section returning opened documents
*/
trustedActiveDocs = app.trustedFunction(function () {
app.beginPriv();
var d = app.activeDocs;
app.endPriv();
return d;
})
/*
Saving Tabs that are opened
*/
function SaveTabs() {
var d = trustedActiveDocs();
var tabs = '';
for (var i = 0; i < d.length; i++) {
if (i > 0)
tabs += delim;
// app.alert(d[i].path+"------"+d[i].pageNum,3);
tabs += d[i].path;
tabs += delim;
tabs += d[i].pageNum;
}
global.tabs_opened = tabs;
global.setPersistent("tabs_opened", true);
app.alert("Tabs Saved", 3);
}
/*
Toggle auto load tabs
automatically loading tabs when reader starts
*/
function ToggleAuto() {
if (global.tabs_auto == 0 || global.tabs_auto == null) {
global.tabs_auto = 1;
global.setPersistent("tabs_auto", true);
app.alert("Tabs auto loading enabled", 3);
} else {
global.tabs_auto = 0;
global.setPersistent("tabs_auto", true);
app.alert("Tabs auto loading disabled", 3);
}
}
app.addMenuItem({
cName: "-",
cParent: parentMenu,
cExec: "void(0);"
});
app.addMenuItem({
cName: "&Save Tabs",
cParent: parentMenu,
cExec: "SaveTabs();"
});
app.addMenuItem({
cName: "&Load Tabs",
cParent: parentMenu,
cExec: "LoadTabs();"
});
app.addMenuItem({
cName: "Toggle auto load",
cParent: parentMenu,
cExec: "ToggleAuto();"
});
if (global.tabs_auto == 1) {
LoadTabs();
}
Ответы
Ответ 1
Спасибо за фантастическое начало реализации этого вопиющего упущения в зрелом продукте. Скрипт Autohotkey выполнит то, что вы ищете. Я создал один ниже, который будет автоматически сохранять макет вкладки при закрытии Acrobat.
Этот скрипт работает с последней версией Acrobat Pro DC. В этой версии пункты меню скрипта отображаются в нижней части меню "Вид". Если ваша версия отличается, вам придется изменить этот скрипт; пожалуйста, сообщите в комментариях, если ваша версия Acrobat помещает пользовательские пункты меню Javascript в другое место.
if WinActive("ahk_class #32770") & WinActive("Adobe Acrobat", "Do you want to close all tabs or the current tab") {
Send, !c
WinWaitActive, ahk_class AcrobatSDIWindow
Send, !v{Up 3}{Enter}
WinWaitActive, Warning: JavaScript, Tabs Saved
Send, {Space}
WinMenuSelectItem, ahk_class AcrobatSDIWindow, , View, Save Tabs
Send, ^q
}
Ответ 2
Я использовал ваш script как базу для создания и загрузки разных сеансов и не всегда одинаковых. Это в моем GitHub: https://github.com/JoseCM/PDFSessions. Надеюсь, нет проблем...
Ответ 3
Есть ли шанс, что кто-нибудь сможет обновить его для работы с последней версией Acrobat Pro DC 2019.012.20034? Я получаю сообщение "Произошла внутренняя ошибка". при нажатии любой из новых опций в разделе Просмотр в последней версии Acrobat.
Ответ 4
Есть ли шанс, что кто-нибудь сможет обновить его для работы с последней версией Acrobat Pro DC 2019.012.20034? Я получаю сообщение "Произошла внутренняя ошибка". при нажатии любой из новых опций в разделе Просмотр в последней версии Acrobat. Извините за публикацию в качестве ответа, но он не позволит мне прокомментировать последний ответ.