我有一个近400页的文档,我需要 [随机] 重新排序页面。 (如果你需要知道,这是一本需要随机分发的单页故事书。我创建了一个随机的页面列表,可以输入到脚本中。)
我一直在使用我在互联网上其他地方找到的修改过的脚本来创建一个数组并移动页面:
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);
}
这段代码有效,除了它一直将它们重新排列成错误的随机顺序,这在一天结束时是可行的,但是对于故事索引来说,这只是一个更大的痛苦。 / p>
我怀疑问题可能是由于文档开始而不是结束而引起的,所以我修改了脚本以便在结束时开始,然后 app.activeDocument.pages [范围[moveThis]] 一直未定义。
所以我说他妈的并尝试了这个:
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]);
对于每一页都是如此。 (这让我想起了我在初中使用 sendKeys 在Visual Basic中创建程序的时间。如果我打算认真学习JavaScript而不是创建糟糕的AOL聊天室卷轴,我今天可能不会在这里。)
尽管如此,我收到了以下错误:
错误号码:30477 错误字符串:方法'move'的参数'reference'的值无效。预期页面或传播,但一无所获。
我正在努力避免手动移动页面,特别是考虑到我已经在处理这个问题的时间。关于我需要改变什么的任何建议?谢谢!
答案 0 :(得分:0)
问题可能是您在每个跨页上使用了多个页面,然后尝试在跨跨页上随机排列它们。更好的方法是每个跨页使用单个页面。 这是一个可以在我的计算机上运行的小片段
<select class="uk-select uk-form-blank uk-form-width-medium uk-margin-small-bottom">
<option>London</option>
<option>Paris</option>
<option>Berlin</option>
</select>
<input value="" class="uk-input uk-form-blank uk-form-width-medium uk-margin-small-bottom" type="text" disabled>
这是什么