【问题标题】:Open print dialog automatically when PDF opened, using iText7使用 iText7 打开 PDF 时自动打开打印对话框
【发布时间】:2023-05-27 05:21:01
【问题描述】:

我使用 iText7 生成 PDF,然后在新选项卡中打开它。

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
String filename = "C:\\temp\\first-output2.pdf";
headers.add("content-disposition", "inline;filename=" + filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");

用户的意图始终是打印,因此显示 PDF 并让他单击打印按钮很不方便。这就是为什么我想在 PDF 打开时立即打开打印对话框

此解决方案无效

Open print dialog automatically when PDF opened, using iText

因为 PdfAction.PRINTDIALOG 在 iText7 中不存在。

我还尝试了各种不起作用的 JavaScript 选项,例如

PdfAction action = PdfAction.createJavaScript("this.print(true);\\r"); 

如何在页面加载后直接打开打印对话框?

【问题讨论】:

  • 您知道某些 PDF 查看器可能会限制对打开操作或 JavaScript 的支持吗?
  • 如果有人使用有限的PDF查看器,他将受到限制。我对适用于 Adob​​e Reader 的解决方案感到满意。
  • 好的。我只是问,因为这里有很多人提出的问题,他们基于 Adob​​e Reader(启用 JavaScript)的概念验证向他们各自的客户承诺了适用于每个 PDF 查看器和配置的功能......

标签: itext7


【解决方案1】:

要在文档打开时打开打印对话框,您需要使用this.print(true); JavaScript 代码。

您可以通过以下方式在iText7中添加这样的操作:

PdfAction printAction = new PdfAction();
printAction.put(PdfName.S, PdfName.JavaScript);
printAction.put(PdfName.JS, new PdfString("this.print(true);\r"));
pdfDocument.getCatalog().setOpenAction(printAction);

【讨论】:

    最近更新 更多