从extjs打印pdf - 最佳解决方案

时间:2010-03-10 22:49:14

标签: java java-ee extjs

我正在尝试使用extjs打印PDF文件,任何帮助将不胜感激。我的想法是将服务器上的pdf文件作为流传递给http://xmlgraphics.apache.org/fop/0.95/servlets.html#minimal-servlet。但是我通过ajax提交表单数据的问题,将它们保存到DB,使用FOP创建PDF和....想要将结果PDF传回客户端。 我的最后一个想法是将PDF保存到服务器上的临时文件,返回成功:'true'到extjs然后使用iframe再次检索临时文件进行打印:) 还有更正确的解决方案吗?或者可能有人已经为这些东西准备好了工作代码?

2 个答案:

答案 0 :(得分:2)

好吧,最后我来到了下一个解决方案:首先我们使用AJAX请求来保存表单细节,并在服务器端生成PDF。

        success : function(form, action) {
            var result = Ext.decode(action.response.responseText)
            if (result.success) {
                this.openForPrint(result.tmpFileName);
            }
        },

比我们使用iframe下载并打开文件

    openForPrint : function(fileSrc) {
        Ext.DomHelper.append(document.body, {
            tag : 'iframe',
            name : 'printIframe',
            src : this.getPrintPalletTagUrl()+'?userAction=actionPrint&tmpFileName='+fileSrc
        });
    }

如果保存失败,这种方法可以让我们检查保存操作响应并向用户显示有意义的对话框。

答案 1 :(得分:0)

我认为这与Ext JS没有任何关系。您需要生成/存储PDF并按照您的提及返回URL,或者您可以使用内容类型“application / pdf”将响应直接发送回浏览器,默认浏览器行为将处理它。这两种方法都适用于任何前端代码。

我已经成功完成了第二种方法,但是在.NET环境中。原则应该是一样的。