【问题标题】:How to silently print a pdf from a servlet output in a web application如何从 Web 应用程序中的 servlet 输出静默打印 pdf
【发布时间】:2014-01-11 20:15:34
【问题描述】:

在 struts1 web 应用程序中,我们有一个 itextpdf 生成器,它直接在 struts servlet 输出流中写入 pdf。我们使用 itextepdf 来生成收据,所以我们需要打印生成的 pdf不向用户展示。用户不能下载收据以避免重复打印同一张收据。实现这一目标的最佳方法是什么? 提供 pdf 的代码是这样的:

public ActionForward printReceipt(final ActionMapping mapping,
        final ActionForm form, final HttpServletRequest request,
        final HttpServletResponse response) throws Exception {
    final OutputStream out = response.getOutputStream();
    final Document doc = new Document();
    final PdfWriter docWriter = PdfWriter.getInstance(doc, out);
    doc.open();
    final PdfContentByte cb = docWriter.getDirectContent();
    cb.beginText();
    // .. write all required data in the pdf
    doc.close();
    docWriter.close();
    out.flush();
    out.close();
    return mapping.findForward(null);
}

【问题讨论】:

  • 你能显示出提供 PDF 响应的代码吗?
  • 您希望 Web 应用程序能够在客户端计算机上打印某些内容,而无需或可能进行任何用户交互?据我所知,这将是相关浏览器中的一个主要安全漏洞。
  • 它是一个企业应用程序。在这种情况下安全性没有问题。

标签: java javascript itext struts-1


【解决方案1】:

您可以尝试以下步骤来获得技巧:

  1. 包括指向您提到的 servlet 的 iframe。
  2. 通过 css 隐藏 iframe。即显示:无;
  3. 使用主 html 提供打印命令

    window.frames["printf"].print(); 其中 printf 是 iframe 的 id

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2018-04-09
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2010-11-27
    相关资源
    最近更新 更多