Нужна помощь в получении экспорта в PDF для правильной работы - PullRequest
1 голос
/ 20 августа 2010

Я использую сторонний инструмент (TCPDF) для экспорта данных в PDF.Если я использую форму и отправляю данные на страницу экспорта php, она работает нормально.Однако у меня есть еще одна необходимость вызвать ту же страницу экспортера и передать ей необходимые параметры через ajax для вывода файла PDF таким образом.Кажется, что все работает нормально, за исключением того, что когда я получаю вывод для PDF, он не открывает мой читатель PDF, чтобы посмотреть на него, когда я использую вызов AJAX ... он просто оставляет пустой экран.В консоли 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);
    }
});

1 Ответ

0 голосов
/ 21 августа 2010

Вот рабочий прототип, который я собрал. Я не уверен, что он делает то, что вы ищете, но я думаю, что это может быть близко.

Предположение: Я предполагаю, что вы хотите, чтобы он открывался в плагине 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>

Это загрузит PDF-файл W-4 США (угу ... налоги) в IFRAME. Я делаю это с document.ready, но я мог бы сделать это с помощью нажатия кнопки.

Дайте мне знать, если это близко. Я обновлю соответственно. Надеюсь, это поможет!

Кстати - это сообщение в блоге на Encosia было полезно (оно имеет дело с 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, и вы должны получить диалог открытия / сохранения. Новое окно должно закрыться.

...