2010-03-23 9 views
2

Je ne vais pas créer un pdf à partir d'un formulaire sur ma page, mais le problème est, j'en ai besoin très exactement comme la page avec forme, tous entires.Enregistre une page en format PDF ou en HTML mais avec toutes les entrées

donc je dois par exemple

2 champs d'entrée, 7 Radio, 2 cases à cocher, et comme résultat je besoin d'un PDF avec le même sructure, mais si quelqu'un cochez la case, il doit être enregistré en format pdf.

J'ai essayé d'enregistrer le contenu html de la page sur submit, et de l'enregistrer d'abord dans le fichier html, mais le problème est que mes sélections ne seront pas sauvegardées.

Le résultat doit être identique à celui que j'imprimerais mon formulaire.

J'espère que quelqu'un peut vous aider.

Le code que j'utilise pour enregistrer le contenu de la page.

> $(document).ready(function(){ 
>  $('input[type=submit]').click(function() {   
> var formname = $("body").find("form").attr("name"); 
> var htmldata = $("form[name="+formname+"]").html(); 
> var enchtmldata = ncodeURIComponent(htmldata); 
> $.ajax({ 
> type: "post",    
> data: "data="+enchtmldata, 
> url: "makepdf.php",   
> success: function() 
> { 
> alert("success");   }, 
> error: function()    { 
> alert("error");    }   }); 
> 
> }); }); 

PS: J'utilisant PHP et jQuery

AJOUTÉE: Je pense qu'il est préférable d'essayer d'abord enregistrer la page sous forme HTML, mais pour garder les entrées en elle. Après cela, essayer de le convertir. Mais le problème est, pour l'enregistrer avec toutes les données.

AJOUT: comment puis-je ajouter un attr sélectionné dans un champ d'option?

+0

Pouvez-vous décrire * pourquoi * vous en avez besoin de cette façon? Quel problème cela résout-il? – Tomalak

+0

Je dois enregistrer ce formulaire, pour mes clients et l'envoyer automatiquement par e-mail. Les formes sont très grandes et nous avons environ 7 formes différentes, et le script doit pouvoir gérer tout cela. –

Répondre

0

Exécutez ceci dans la ligne de commande javascript de votre navigateur, copiez-collez le résultat dans l'éditeur de texte et enregistrez-le au format html.

$('body').text($('html').html()) 

En fonction de votre navigateur, cela peut également fonctionner lorsque collé-copie barre d'adresse:

javascript:$('body').text($('html').html()) 

La sortie est source de la page « dynamique », à savoir l'arbre DOM rendu en texte.

+0

Le problème est, si j'ai écrit quelque chose sur le terrain, il ne serait pas enregistré en utilisant .html() ou .text() ... la même chose est avec des cases à cocher :( –

+0

Vous avez raison, ma suggestion ne fonctionne pas – jholster

0

Qu'est-ce que vous utilisez pour convertir le HTML en PDF? Je peux recommander TCPDF pour ce travail: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf

Il peut convertir HTML avec CSS en un formulaire PDF. Je ne l'ai pas testé moi-même mais je suis tout à fait sûr qu'il gardera même l'option cochée. Mais à coup sûr, vous devez créer le code HTML avec PHP pour cocher la case.

<input type="checkbox"<?php echo ($_REQUEST['checkbox_name'])? ' checked="checked"' : '' ?> /> 

Vous devriez être en mesure de créer le formulaire PDF correct avec la classe TCPDF.

+0

Hm, cette classe est très utile, mais tout d'abord, je dois enregistrer la page html ast, txt ou thml toutes ces entrées et ensuite, la convertir J'utilise ce code jquery, mais Tout ce que je reçois, est le formulaire sans entrées –

+0

Mais si vous avez envoyé le formulaire à lui-même et que vous ajoutez toutes les valeurs du tableau $ _REQUEST aux attributs de valeur de input et textare et sélectionnez/vérifiez tous les autres éléments, vous obtiendrez le état de formulaire correct dans la source HTML Ou essayez juste ma nouvelle suggestion – 2ndkauboy

+0

hm, je vais l'essayer maintenant –

0

Ok, je pense que le problème est que la vérification d'une case à cocher dans le navigateur ne change pas la source HTML. Donc, si vous voulez transférer le HTML via AJAX, vous devez "convertir" l'état vérifié dans le navigateur à un état vérifié réel de la source.

Je ne suis pas un expert jQuery, mais vous devez sélectionner toutes les entrées [type = "checkbox"] et tester si elles sont cochées. Si c'est le cas, ajoutez un attribut "checked" avec la valeur "checked" à la case à cocher. Sinon, supprimez l'attribut checked s'il est présent.

Le code HTML source aura tous les états vérifiés corrects. Sans cette méthode, vous pourriez avoir la case à cocher qui a été présélectionnée avec PHP mais qui a été désélectionnée par l'utilisateur.

J'espère que ma réponse a été assez clair, désolé pour mon anglais :)

+0

oui c'est le problème, je vais essayer de le faire –

+0

$ (this) .attr ("value", $ (this) .val()); ne fonctionne pas –

+0

Comme je l'ai déjà mentionné, ma connaissance de jQeury est limitée aux bases. Je pourrais vous donner une solution avec Prototype. Mais c'est ce que vous avez à faire: sélectionnez tous les éléments d'entrée, zone de texte et sélectionnez. Pour toutes les entrées qui ne sont pas des cases à cocher ou des cases d'option, définissez l'attribut de valeur. Pour les cases à cocher et les cases d'option, sélectionnez l'état "coché" ou "sélectionné" et ajoutez-y un attribut coché ou sélectionné. Pour les zones de texte, ajoutez la valeur en tant que noeud enfant texte à la zone de texte. Mais comment résoudre cela avec jQuery vous devrez peut-être demander à un expert jQuery. – 2ndkauboy

0

Avez-vous essayé de placer la page en arrière-plan avec les variables telles que les superpositions conditionnelles? Je l'ai réalisé dans le passé en utilisant FPDF. Les boutons radio peuvent être placés en tant qu'image sur le vidage d'écran existant. Vous n'aurez aucun problème à mettre le texte au bon endroit également.

0

Y a-t-il une raison pour laquelle vous ne pouvez pas simplement prendre les données de formulaire et les envoyer à un processus serveur qui stockera les données de formulaire dans une base de données? De là, il devrait être un processus relativement simple pour remplir le formulaire HTML et générer un formulaire PDF à partir de la base de données.

+0

désolé, pas moyen :( –

Questions connexes