Javascript 使用Indesign脚本重新排序/移动页面
我有一个近400页的文档,我需要[随机]重新排序页面。(如果你需要知道,这是一本需要随机分发的单页故事书。我创建了一个随机的页面列表以输入脚本。) 我一直在使用互联网上其他地方找到的一个经过修改的脚本,该脚本创建了一个数组并移动页面:Javascript 使用Indesign脚本重新排序/移动页面,javascript,adobe,adobe-indesign,Javascript,Adobe,Adobe Indesign,我有一个近400页的文档,我需要[随机]重新排序页面。(如果你需要知道,这是一本需要随机分发的单页故事书。我创建了一个随机的页面列表以输入脚本。) 我一直在使用互联网上其他地方找到的一个经过修改的脚本,该脚本创建了一个数组并移动页面: var order="...list of new page numbers..."; // Create an array out of the list: ranges = toSeparate (order); if (ran
var order="...list of new page numbers...";
// Create an array out of the list:
ranges = toSeparate (order);
if (ranges.length != app.activeDocument.pages.length)
{
alert ("Page number mismatch -- "+ranges.length+" given, "+app.activeDocument.pages.length+" in document");
exit(0);
}
// Consistency check:
sorted = ranges.slice().sort(numericSort);
for (a=0; a<sorted.length-1; a++)
{
if (sorted[a] < sorted[a+1]-1 ||
sorted[a] == sorted[a+1])
alert ("Mismatch from "+sorted[a]+" to "+sorted[a+1]);
}
// alert ("New order for "+order+"\nis "+ranges.join(", "));
// Convert from 1..x to 0..x-1:
for (moveThis=0; moveThis<ranges.length; moveThis++)
ranges[moveThis]--;
for (moveThis=0; moveThis<ranges.length; moveThis++)
{
if (moveThis != ranges[moveThis])
{
try{
app.activeDocument.pages[ranges[moveThis]].move (LocationOptions.BEFORE, app.activeDocument.pages[moveThis]);
} catch(_) { alert ("problem with page "+moveThis+"/index "+ranges[moveThis]); }
}
for (updateRest=moveThis+1; updateRest<ranges.length; updateRest++)
if (ranges[updateRest] < ranges[moveThis])
ranges[updateRest]++;
}
function toSeparate (list)
{
s = list.split(",");
for (l=0; l<s.length; l++)
{
try {
if (s[l].indexOf("-") > -1)
{
indexes = s[l].split("-");
from = Number(indexes[0]);
to = Number(indexes[indexes.length-1]);
if (from >= to)
{
alert ("Cannot create a range from "+from+" to "+to+"!");
exit(0);
}
s[l] = from;
while (from < to)
s.splice (++l,0,++from);
}} catch(_){}
}
// s.sort (numericSort);
return s;
}
function numericSort(a,b)
{
return Number(a) - Number(b);
}
每一页都是如此。(这让我想起了我在初中时用sendKeys用Visual Basic创建程序的经历。如果我费心认真学习JavaScript而不是创建糟糕的AOL聊天室滚动条,我今天可能就不会在这里了。)
然而,我收到了以下错误:
错误号码:30477
错误字符串:方法“move”的参数“reference”的值无效。预期页面或跨页,但未收到任何内容
我试图避免手动移动页面,特别是考虑到我已经花了很多时间来处理这个问题。关于我需要改变什么有什么建议吗?谢谢大家! 问题可能是,您在每个排列中使用了多个页面,然后试图将它们在整个排列中移动。更好的方法是使用单页每页。 下面是一个在我的机器上运行的小片段
var doc=app.activeDocument;
doc.documentPreferences.facingPages=false;
对于(变量i=0;i<100;i++){
var index=parseInt((Math.random()*doc.spreads.length)%doc.spreads.length+'',10);
单据价差[index].move();
}
它的作用是
您是否考虑过在新文档中随机插入页面,而不是在单个文档中移动页面?另外:re:indexing,为什么不能自动生成目录?我没有考虑过,但我喜欢这样简单的解决方案。那可能就是我最后要做的。至于索引,它不会以这种方式工作,因为在indesign之外是如何设置的。
app.activeDocument.pages[298].move (LocationOptions.BEFORE, app.activeDocument.pages[366]);
app.activeDocument.pages[33].move (LocationOptions.BEFORE, app.activeDocument.pages[365]);
app.activeDocument.pages[292].move (LocationOptions.BEFORE, app.activeDocument.pages[364]);