我的一位客户拥有由 Acrobat Pro 创建的 PDF 表单。每个表单上都有一个“打印”按钮。“打印”按钮后面是这个 JavaScript,它仍然是Adobe推荐的打印方式:
var pp = this.getPrintParams();
pp.printerName = "\\\\server2\\EN100Tiffs";
pp.interactive = pp.constants.interactionLevel.automatic;
this.print(pp);
app.alert("Document sent to printer", 3);
app.alert("Please close window after each use", 3);
上面指定的打印机实际上是一个实用程序,可以将发送给它的任何内容转换为 TIFF(Alto Imaging 的 UltraTIFF 驱动程序)。它所在的服务器是 Windows 2008。另一个进程持续扫描 TIFF 文件并将它们发送到客户的文档成像系统。
这在 Adobe Reader 10 之前一直有效。此时,该实用程序停止生成 TIFF。客户通过继续使用 Adobe Reader 9 解决了这个问题,但现在他们被迫升级到 Reader 11。它在 Reader 11 下也不起作用。
请注意,打印机未在客户端计算机上设置。客户端机器都是 Windows 7。
另请注意,用户可以直接访问 PDF。它不在浏览器窗口内。
如果我将 TIFF 驱动程序设置为客户端计算机上的打印机(通过开始/设备和打印机/添加打印机),则脚本在 Adobe Reader 10 和 11 下运行。如果未设置打印机,则脚本适用于 Reader 9 及更早版本,但不适用于 10 或 11。客户不会在客户端上设置打印机,因为他们担心用户可能会意外打印到它,而他们打印的所有内容最终都会出现在文档成像中系统。
为了找出问题所在,我在打印按钮脚本中添加了错误捕获:
var pp = this.getPrintParams();
pp.printerName = "\\\\server2\\EN100Tiffs";
pp.interactive = pp.constants.interactionLevel.automatic;
try {
this.print(pp);
app.alert("Document sent to printer", 3);
} catch (err) {
app.alert("Error printing: " + err);
}
app.alert("Please close window after each use", 3);
当我尝试打印文档时,没有抛出任何错误。我收到“文档已发送到打印机”消息而不是错误消息,但该文档仍未发送到打印机 - 我的意思是没有创建 TIFF 文件。
所以我的问题是:
从 Reader 9 到 Reader 10 时,有没有人遇到过类似的从 Javascript 打印的怪癖?
代码片段中是否有任何内容导致错误?
感谢大家的关注,特别是如果你做到了这一点:)