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

问题描述 投票:0回答:2

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

印刷只是一种方式......

我的任务是重新排序书籍的页面(遵循某种算法)。以某种新的顺序打印它们只是我重新订购它们的懒惰解决方案。如果可以以其他方式完成重新排序(例如,以期望的顺序提取然后重新组合),那也将是一种解决方案。

javascript acrobat
2个回答
2
投票

不幸的是,答案是首先支持Acrobat版本11(XI)的printRange参数。你可以从documentation查看这些东西。

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

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

然后,如果不支持printRange,您当然可以使用其他方法。例如,您可以暂时删除不需要的页面然后打印整个文档 - 它有点hackish,但只影响XI以下的版本。


0
投票

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

我购买了一个由Gilad Denneboom(http://try67.blogspot.com/)为此目的制作的工具(Javascript),他还有很多其他的Acrobat工具,其中一些是免费的,一些是购买的(价格合理)。

解决我问题的工具是他的Extract Non-Sequential Pages脚本。让它完全运行有一些初始问题,但吉拉德立即解决了这些问题。

提取非连续页面完全符合我的要求(以及我最初想要编程的内容):

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

2)然后,它从原始文档中按顺序提取页面,并在新文档中收集它们(按此顺序)。新文档有一些随机名称。

3)可以使用新订单中的页面存储,然后打印此新文档。

© www.soinside.com 2019 - 2024. All rights reserved.