2010-08-20 2 views
1

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

ответ

0

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

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

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

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

BTW - этот blog post на Encosia был полезен (он имеет дело с ASP.NET AJAX, но концепция такая же).

EDIT: Если вы просто хотите, чтобы открыть новое окно для PDF (так как вы запрашиваете его через URL), вы можете просто сделать это вместо встроенного IFRAME:

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

И если у вас есть контроль на стороне сервера, установите заголовок content-disposition на attachment, и вы должны открыть диалог открытия/сохранения. Новое окно должно закрыться.

 Смежные вопросы

  • Нет связанных вопросов^_^