在Adobe Reader JavaScript API中将打印机重置为默认值

时间:2013-02-07 13:37:28

标签: javascript pdf printing pdf-generation adobe-reader

我有一个PDF文件,里面有一些脚本。允许脚本更改打印文档的打印机(因为我们有用于条形码的专用打印机和用于常规文档的其他打印机)。问题是,我不知道如何将打印机重置为计算机的默认打印机。

打印代码如下:

var pp = getPrintParams(); // get printing parameters
pp.interactive = pp.constants.interactionLevel.automatic; // do not prompt user
pp.printerName = 'barcode_printer'; // set printer name
this.print(pp); // print

根据JavaScript API Reference(第314,583页),getPrintParams()返回默认打印参数,pp.printerName设置为''(空字符串)表示默认打印机。我意识到这一切都不是真的。实际上getPrintParams()会返回上次使用的参数(不是新的/默认参数)而pp.printerName = ''不会将打印机重置为默认值,而是使用上次选择的打印机。

此外,PrintParams对象似乎在不同的打开文档中共享,因此我无法在某个变量中存储默认打印机的名称(从getPrintParams()的第一次调用中读取),因为实际上我不知道t知道读取值是指默认打印机还是已被其他打开的文档更改过。

不同版本的Adobe Reader(9,10,11)和福昕阅读器的行为是一致的。

请帮忙,如何以编程方式将打印机重置为默认值?

2 个答案:

答案 0 :(得分:1)

实际上可以使用global对象解决问题,该对象在adobe reader的一个实例中的多个打开的文档中共享。

首次加载文档,我检查global对象是否包含(我自己的)属性defaultPrinter,除非我调用getPrintParams(),请阅读printerName字段并将其分配给global.defaultPrinter。然后我可以只读取该字段以获取默认的打印机名称。代码如下:

if (global.defaultPrinter === undefined) {
    global.defaultPrinter = getPrintParams().printerName;
}

答案 1 :(得分:0)

设置pp.printerName = '##NameOfAPrinterThatDoesntExists##'将重置默认打印机。放轻松。