在Adobe Acrobat(版本X)中,我想以特定的,不寻常的顺序向打印机发送书籍页面。事实证明,这比我想象的要困难。由于Acrobat的打印对话框接受手动输入的页面范围最多只能包含100个字符,因此我需要更好的解决方案。
我希望我可以通过Javascript来做到这一点。
为了测试,我使用了以下内容:
var pp = this.getPrintParams();
pp.printRange = [[2,5], [8,8], [10,10]];
this.print(pp);
应该打印3-6,9,11页
但是,它没有这样做。我打印的内容总是整本书(300页)。
这是什么问题?
注意:我真正的打印作业
上面使用的页面范围仅用于测试。我最终想要的是按特定顺序打印页面,例如
> 1, 151, 152, 2, 3, 153, 154, 4...
等
这显然将被翻译成基于0的
> [0,0],[150,150],[151,151],[1,1]...
或者至少,所以我想。
我的数组(页面)长达300项(或更多)可能会出现另一个问题,我不知道pp.printRange是否接受了那么多...
另一个考验
我也试过了
var pages = [[0,0],[150,150],[151,151],[1,1]]
var pp = this.getPrintParams();
pp.printRange = pages;
this.print(pp);
结果:Acrobat再次忽略页码数组并顽固地打印整个文档。
印刷只是一种方式......
我的任务是重新排序书籍的页面(遵循某种算法)。以某种新的顺序打印它们只是我重新订购它们的懒惰解决方案。如果可以以其他方式完成重新排序(例如,以期望的顺序提取然后重新组合),那也将是一种解决方案。
不幸的是,答案是首先支持Acrobat版本11(XI)的printRange
参数。你可以从documentation查看这些东西。
无论如何,我建议您按照文档中的建议检查脚本中的版本:
if (typeof app.viewerVersion != "undefined" && app.viewerVersion >= 11.0)
{
// Perform version specific operations.
}
然后,如果不支持printRange
,您当然可以使用其他方法。例如,您可以暂时删除不需要的页面然后打印整个文档 - 它有点hackish,但只影响XI以下的版本。
最终我解决这个问题的方法如下:
我购买了一个由Gilad Denneboom(http://try67.blogspot.com/)为此目的制作的工具(Javascript),他还有很多其他的Acrobat工具,其中一些是免费的,一些是购买的(价格合理)。
解决我问题的工具是他的Extract Non-Sequential Pages脚本。让它完全运行有一些初始问题,但吉拉德立即解决了这些问题。
提取非连续页面完全符合我的要求(以及我最初想要编程的内容):
1)在启动它时,它显示一个对话框,询问一系列页码,例如5,7,13,6,101,2,4,200-210或其他任何组合。这可以输入或复制粘贴。
2)然后,它从原始文档中按顺序提取页面,并在新文档中收集它们(按此顺序)。新文档有一些随机名称。
3)可以使用新订单中的页面存储,然后打印此新文档。