我正在使用 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 发送到打印机后如何获取它。
你有什么想法吗?
最佳答案
app.execMenuItem('Close');
是有原因的和app.close()
不工作。这些方法旨在关闭独立版本的 Adobe Reader/Acrobat。我猜您正在浏览器中查看 PDF,在这种情况下您会使用 Adobe Reader 作为插件、Chrome 的 PDF 查看器、Firefox 中的 pdf.js 或任何其他 PDF 查看器。
问题#1:您需要从 PDF 文档关闭浏览器窗口。 PDF 没有能力控制您的浏览器。假设他们会:这不是一个严重的安全问题吗?
问题#2:您将 PDF 嵌入到 HTML 页面中(例如使用 <object>
标签)和 establish a communication between the JavaScript in the PDF and the JavaScript in the HTML 。我在书中描述了如何执行此操作,但是:它不适用于所有操作系统上的所有浏览器。例如:Chrome 的 PDF 查看器和 Firefox 的 pdf.js 将完全忽略您的命令。
您正在询问使用我们的 iText 库的解决方案,但您正在询问任何软件都无法完成的事情。
关于Java 如何使用 pdf javascript 关闭 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16017205/