Acrobat X中的JavaScript:页面打印范围

时间:2019-01-19 22:45:51

标签: javascript acrobat

在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再次忽略了页码数组,并顽固地打印了整个文档。

打印只是一种方法...

我的任务是重新排列一本书的页面(遵循某种算法)。按确定的新顺序打印它们只是我重新排列它们的懒惰解决方案。如果可以以其他方式进行重新排序(例如,按所需顺序提取然后重新组合),那也是一种解决方案。

3 个答案:

答案 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);