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

JavaScript in Acrobat X: Printing Ranges of Pages

在 Adob​​e 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-based

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

打印只是一种方式...

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

不幸的是,答案是 printRange 参数首先由 Acrobat 版本 11 (XI) 支持。您可以从 documentation.

查看这些内容

我建议您无论如何按照文档中的建议检查脚本中的版本:

if (typeof app.viewerVersion != "undefined" && app.viewerVersion >= 11.0)
{
    // Perform version specific operations.
}

那么,如果不支持printRange,你当然可以求助于其他方法。例如,您可以暂时删除不需要的页面,然后打印整个文档 - 这有点老套,但只影响低于 XI 的版本。

最终我对这个问题的解决方案如下:

我购买了 Gilad Denneboom (http://try67.blogspot.com/) 为此目的制作的工具 (Javascript),他还有很多其他 Acrobat 工具,其中一些是免费的,一些是购买的(负担得起)。

解决我问题的工具是他的提取非连续页面脚本。最初有一些问题要完全得到它 运行,但 Gilad 立即解决了这些问题。

Extract Non-Sequential Pages 完全符合我的要求(也是我首先想自己编程的):

1) 启动时,它会显示一个对话框,要求输入一系列页码,例如5,7,13,6,101,2,4,200-210 或任何组合。这可以输入或复制粘贴。

2) 然后它从原始文档中按该顺序提取页面并将它们(按该顺序)收集到新文档中。新文档被赋予了一些随机名称。

3) 可以存储此新文档,然后按新顺序打印页面。

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