【问题标题】:Need some help getting a pdf export to work properly需要一些帮助才能使 pdf 导出正常工作
【发布时间】:2011-04-01 20:29:06
【问题描述】:

我正在使用第 3 方工具 (TCPD) 将数据导出为 PDF。如果我使用表单并将数据发布到导出 php 页面,它工作正常。但是,我还需要调用同一个导出器页面,并通过 ajax 将它需要的参数传递给它,以便以这种方式输出 pdf 文件。一切似乎都工作正常,除了当我得到 pdf 的输出时,当我使用 ajax 调用时它没有打开我的 pdf 阅读器来查看它......它只是留下一个空白屏幕。在 Firebug 控制台中,我可以看到 pdf 文档的输出,只是不会像我使用表单并点击提交按钮那样弹出 pdf 阅读器。

有什么想法可以解决这个问题吗?

如果有帮助,这是我的 ajax 代码:

url = "admin.php?rst_post=y&action=exportresults&sid=123&answerid=321&filterinc=show&exportstyle=full&answers=long&type=pdf&export_from=&export_to=&convertyto=&convertnto=";

$.ajax({
    async: false,
    type: "GET", 
    url: url, 
    contentType: "charset=utf-8", 
    complete: function(rc)
    { 
        //alert(rc);
    }
});

【问题讨论】:

    标签: jquery pdf export tcpdf


    【解决方案1】:

    这是我组装的一个工作原型。我不确定它是否符合您的要求,但我认为它可能很接近。

    假设:我假设您希望它在浏览器的 Reader 插件中打开。如果没有,请告诉我,我会相应地调整答案。

    为什么不使用 AJAX 来动态添加 IFRAME 到您的页面并在其中显示 PDF?这是一个工作原型:

    <html>
        <head>
            <style type="text/css">
                .inlinePdf {
                    width: 50%;
                    height: 50%;
                }
            </style>
            <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
            <script type="text/javascript">
    
                $(document).ready(function() {
                    var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
                    $("<iframe></iframe>").addClass("inlinePdf").attr("src", url).appendTo("#content");
                });
    
            </script>
        </head>
        <body>
            <div id="content">
            </div>
        </body>
    </html>
    

    这将在 IFRAME 中加载美国 W-4 PDF(uggh...taxes)。我正在使用 document.ready 执行此操作,但我可以通过单击按钮来执行此操作。

    让我知道这是否接近。我会相应地更新。希望这会有所帮助!

    顺便说一句 - Encosia 上的这个 blog post 很有用(它处理 ASP.NET AJAX,但概念是一样的)。

    编辑:如果您只想为 PDF 打开一个新窗口(因为您是通过 URL 请求它),您可以这样做而不是嵌入 IFRAME:

    $(document).ready(function() {
        var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
        window.open(url, "_blank");
    });
    

    如果您在服务器端拥有控制权,请将content-disposition 标头设置为attachment,您应该会看到一个打开/保存对话框。然后应该会关闭新窗口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 2012-08-31
      • 1970-01-01
      • 2021-04-12
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      相关资源
      最近更新 更多