2010-08-20 6 views
1

J'utilise un outil tiers (TCPDF) pour exporter des données au format PDF. Si j'utilise un formulaire et publie les données sur la page d'exportation php cela fonctionne très bien. Cependant, j'ai un autre besoin d'appeler la même page d'exportateur et de lui passer les paramètres dont il a besoin via ajax pour sortir le fichier pdf de cette façon. Tout semble fonctionner correctement, sauf quand j'obtiens la sortie pour le pdf il n'ouvre pas mon lecteur de pdf pour le regarder quand j'utilise l'appel d'ajax ... il laisse juste un écran vide. Dans la console Firebug, je peux voir la sortie pour le document pdf, c'est juste pas apparaître le lecteur pdf comme si j'utilise le formulaire et cliquez sur le bouton soumettre.Besoin d'aide pour obtenir une exportation pdf pour fonctionner correctement

Des idées sur ce que je peux faire pour résoudre ce problème?

Voici mon code ajax si ça aide:

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); 
    } 
}); 

Répondre

0

Voici un prototype que je mets ensemble. Je ne suis pas sûr si cela fait ce que vous cherchez, mais je pense que cela peut être proche.

Hypothèse: Je suppose que vous voulez qu'il ouvre dans le plugin Reader pour le navigateur. Sinon, faites le moi savoir et j'ajusterai ma réponse en conséquence. Au lieu d'utiliser AJAX, pourquoi ne pas ajouter dynamiquement une page IFRAME à votre page et y afficher le PDF? Voici un prototype:

<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> 

Cela va charger un fichier PDF US W-4 (... uggh taxes) dans un IFRAME. Je le fais avec document.ready, mais je pourrais le faire en cliquant sur un bouton. Faites-moi savoir si cela est proche.

Je vais mettre à jour en conséquence. J'espère que cela t'aides!

BTW - ce blog post sur Encosia était utile (il traite ASP.NET AJAX, mais le concept est le même).

EDIT: Si vous voulez juste d'ouvrir une nouvelle fenêtre pour le PDF (puisque vous vous demandez via une URL), vous pouvez simplement le faire au lieu d'un IFRAME intégré:

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

Et si vous avez le contrôle du côté serveur, réglez l'en-tête content-disposition sur attachment et vous devriez obtenir une boîte de dialogue d'ouverture/de sauvegarde. La nouvelle fenêtre devrait se fermer alors.

Questions connexes