2

我正在使用 servlet 将 pdf 流发送到浏览器。

要求当我向用户展示 pdf 时,它必须打开打印对话框。我使用 iText api 成功地做到了这一点。像这样的东西:

stamper.setPageAction(PdfWriter.PAGE_OPEN, new PdfAction(PdfAction.PRINTDIALOG), 1);

现在我确实需要在打印后关闭 pdf 文件。我尝试使用 pdfactions,但我无法得到它。我尝试的是:

writer.setAdditionalAction(PdfWriter.DID_PRINT, PdfAction.javaScript("app.execMenuItem('Close');", writer));

或者

writer.setAdditionalAction(PdfWriter.DID_PRINT, PdfAction.javaScript("app.close();", writer));

我不一定需要使用 pdfActions,但是在用户将 pdf 发送到打印机后,我看不到如何获取它。

你有什么想法?

4

1 回答 1

2

有一个原因,为什么app.execMenuItem('Close');app.close()工作。这些方法旨在关闭 Adob​​e Reader/Acrobat 的独立版本。我猜您正在浏览器中查看 PDF,在这种情况下,您使用 Adob​​e Reader 作为插件、Chrome 的 PDF 查看器、Firefox 中的 pdf.js 或任何其他 PDF 查看器。

问题 #1:您需要从 PDF 文档中关闭浏览器窗口。PDF 无法控制您的浏览器。假设他们会:这不是一个严重的安全问题吗?

问题 #2:您将 PDF 嵌入 HTML 页面(例如使用<object>标签)并在 PDF 中的 JavaScript 和 HTML 中的 JavaScript 之间建立通信。我已经在我的书中描述了如何做到这一点,但是:它不适用于所有操作系统上的所有浏览器。例如:Chrome 的 PDF 查看器和 Firefox 的 pdf.js 将完全忽略您的命令。

您正在使用我们的 iText 库提出解决方案,但您提出的问题是任何软件都无法完成的。

于 2013-04-15T14:21:07.337 回答