Okay, here is something I made up right now. Try to run it only once per document :P as it attempts to ‘clean up’, but hyperlinks may use so many different objects, it’s hard to get that right.
All it requires are objects marked with one of two object styles: ‘prev’ and ‘next’. The objects may appear on any single page, or reside on a Master Page. Only one level deep! That is, not on a master page based on a master page, which in turn is based on a master page … (and so on) … Keep it simple!
After running the script, master page items are overridden, and all ‘prev’ objects will link to the previous page and ‘next’ to the next one. A ‘prev’ link on the first page will not get linked, and neither will a ‘next’ link on the *last* page of a document.
Here is the code; also downloadable from my site as https://www.jongware.com/binaries/linkprevnextpages.zip
//DESCRIPTION:Make Page To Page Links
// A Jongware script 13-Jun-2014
// Do not modify or distribute without permission.
for (p=0; p < app.activeDocument.pages.length; p++)
processPage(app.activeDocument.pages[p]);
function processPage (a_page)
{
var obj, link, e;
/* search the applied master */
if (a_page.appliedMaster != null)
{
for (obj=0; obj<a_page.appliedMaster.pageItems.length; obj++)
{
if (a_page.appliedMaster.pageItems[obj].appliedObjectStyle)
{
if (a_page.appliedMaster.pageItems[obj].appliedObjectStyle.name == ‘prev’ &&
a_page.documentOffset > 0)
{
try {
a_page.appliedMaster.pageItems[obj].override (a_page);
} catch (e)
{
/* no problem */
}
}
if (a_page.appliedMaster.pageItems[obj].appliedObjectStyle.name == ‘next’ &&
a_page.documentOffset < app.activeDocument.pages.length-1)
{
try {
a_page.appliedMaster.pageItems[obj].override (a_page);
} catch (e)
{
/* no problem */
}
}
}
}
}
/* check current objects */
for (obj=0; obj<a_page.pageItems.length; obj++)
{
if (a_page.pageItems[obj].appliedObjectStyle)
{
if (a_page.pageItems[obj].appliedObjectStyle.name == ‘prev’ &&
a_page.documentOffset > 0)
{
removeOldLink (a_page.pageItems[obj]);
link = app.activeDocument.hyperlinks.add (app.activeDocument.hyperlinkPageItemSources.add(a_page.pageItems[obj]),
app.activeDocument.hyperlinkPageDestinations.add(app.activeDocument.pages[a_page.documentOffset-1]) );
link.visible = false;
}
if (a_page.pageItems[obj].appliedObjectStyle.name == ‘next’ &&
a_page.documentOffset < app.activeDocument.pages.length-1)
{
removeOldLink (a_page.pageItems[obj]);
link = app.activeDocument.hyperlinks.add (app.activeDocument.hyperlinkPageItemSources.add(a_page.pageItems[obj]),
app.activeDocument.hyperlinkPageDestinations.add(app.activeDocument.pages[a_page.documentOffset+1]) );
link.visible = false;
}
}
}
}
function removeOldLink (pageitem)
{
var i, hpis = app.activeDocument.hyperlinkPageItemSources, l = hpis.length;
for (i=0; i<l; i++)
{
if (hpis[i].sourcePageItem == pageitem)
{
hpis[i].remove();
return;
}
}
}