在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再次忽略了页码数组,并顽固地打印了整个文档。
打印只是一种方法...
我的任务是重新排列一本书的页面(遵循某种算法)。按确定的新顺序打印它们只是我重新排列它们的懒惰解决方案。如果可以以其他方式进行重新排序(例如,按所需顺序提取然后重新组合),那也是一种解决方案。
答案 0 :(得分:2)
很遗憾,答案是Acrobat 11(XI)版本首先支持printRange
参数。您可以从documentation中查看这些内容。
我建议您按照文档中的建议,至少检查脚本中的版本:
if (typeof app.viewerVersion != "undefined" && app.viewerVersion >= 11.0)
{
// Perform version specific operations.
}
然后,如果不支持printRange
,则当然可以采用其他方法。例如,您可以暂时删除不需要的页面,然后打印整个文档-有点破烂,但仅影响XI以下的版本。
答案 1 :(得分:0)
最终我对这个问题的解决方法是:
我购买了Gilad Denneboom(http://try67.blogspot.com/)为此目的而开发的工具(Javascript),他还为Acrobat提供了许多其他工具,其中一些是免费的,有些是购买的(价格合理)。
解决我问题的工具是他的 提取非连续页面 脚本。要使其完全运行存在一些最初的问题,但是Gilad立即解决了这些问题。
提取非顺序页面完全符合我的要求(以及我最初想对自己编程的内容):
1)启动时,它会显示一个对话框,要求输入页码序列,例如5,7,13,6,101,2,4,200-210或任何组合。可以键入或复制粘贴。
2)然后从原始文档中按此顺序提取页面,并将页面(按此顺序)收集到新文档中。新文档被赋予一些随机名称。
3)可以存储该新文档,然后以新的顺序打印页面。
答案 2 :(得分:0)
var pp = this.getPrintParams();
/*initial print range*/
pp.printRange=[[1,3]];
/*additional ranges are added to array through javascript push*/
pp.printRange.push([20,21]);}
pp.printerName="Adobe PDF";
this.print(pp);