Adobe Acrobat Reader Tabs Saving And Autoloading

Stworzyłem Javascript dla Acrobat Reader, który pozwala zapisać aktualnie otwarte karty. Dodaje elementy menu: „Zapisz karty”, „Załaduj karty” i „Przełącz automatyczne ładowanie”. Zapisuje karty i numery stron, a także przywraca je.

Jest to szczególnie przydatne dla Linuksa, gdzie nie ma wielu dostępnych czytników pdf. Nie udało mi się jednak dowiedzieć, jak złapać otwarte lub zamknięte zdarzenia dokumentu, lub ustawić jakieś zdarzenie czasowe, aby automatycznie zapisywać bieżącą listę kart.

Oto oryginalne odwołanie do API dla 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();
}

questionAnswers(1)

yourAnswerToTheQuestion