【问题标题】:how to preselect a specific printer from webapplication如何从 web 应用程序中预选特定打印机
【发布时间】:2019-06-14 08:06:48
【问题描述】:

在服务器端使用 iText 生成不同类型的 pdf 文件并通过 ResponsOutputStream 发送。在客户端,显示打印对话框(至少在大多数查看器上),并选择默认打印机。一些 pdf 应该在 labelprinter 上打印,其他的应该在 desktopprinter 上打印。打印对话框出现时是否可以预先选择不同的打印机?

我已经为桌面 Java 应用程序尝试过这个,它可以工作,但我无法从服务器端执行此操作。

    ec.setResponseContentType("application/pdf"); 
    ec.setResponseHeader("Content-Disposition", "attachment; filename="labels.pdf"); 
    outStream = ec.getResponseOutputStream();
    writer = PdfWriter.getInstance(document, outStream);

    PdfAction action = new PdfAction(PdfAction.PRINTDIALOG);
    writer.setOpenAction(action);

使用此指令的结果相同,因为我没有找到使用 Javascript 预选特定打印机的解决方案

    writer.setOpenAction(PdfAction.javaScript("this.print(true);", writer));

始终选择默认打印机或上次使用的打印机

【问题讨论】:

  • 您是否尝试过使用print 方法的printParams 参数并将其中的printerName 属性设置为客户端打印机名称?参照。 Adobe Acrobat SDK JavaScript™ for Acrobat® API Reference.
  • TX 很多,这很有魅力
  • 太棒了!我将此作为实际答案,而不仅仅是评论;您可以点击投票箭头下方左上角的勾号来接受它。

标签: java printing itext printdialog


【解决方案1】:

根据Adobe Acrobat SDK JavaScript™ for Acrobat® API ReferenceDoc方法print也有一个printParams参数

printParams(可选,Acrobat 6.0) PrintParams 对象包含用于 印刷。如果传递此参数,则忽略任何其他参数。

根据该条目中的示例,可以使用此参数选择打印机:

示例 2(Acrobat 6.0)

将当前文档打印到已知打印机。

var pp = this.getPrintParams();
pp.interactive = pp.constants.interactionLevel.automatic;
pp.printerName = "hp officejet d series";
this.print(pp);

因此,如果您知道客户端打印机名称,则可以按照本示例中的说明进行设置。

PS:您的代码很可能在非特权上下文中运行;因此,pp.interactive 将被忽略,您将无法触发自动打印作业。

【讨论】:

  • 确实,我不能让它自动打印,但是能够设置打印机名称已经是一个很大的改进了。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多