2010-09-24 5 views
4

Je n'utilise pas PHP autant et maintenant je suis coincé à un problème. J'ai besoin de sauvegarder le site d'un webbrowser en pdf. J'utilise en ce moment mPDF (qui a été suggéré dans un wiki de stackoverflow) et cela semble fonctionner plutôt bien (j'ai simplement écrit un court code html dans une variable php puis créé le pdf).obtenir le code html dans une variable PHP

Mais maintenant je dois obtenir le code html du site actuel dans le navigateur et l'enregistrer ensuite dans une variable php. Comment puis je faire ça?

+0

D'accord, je dois ajouter plus de détails. Le site est généré par un code php. Donc, si je donnais ce code à l'imprimeur, ce serait un gâchis. En outre, il doit être convivial, ce qui signifie qu'un utilisateur peut simplement appuyer sur un bouton de sauvegarde, puis le pdf sera généré. (L'utilisateur voit une page html de confirmation et il veut enregistrer cette page de confirmation en pdf) – mkn

Répondre

7

Vous pouvez probablement récupérer le contenu à distance via phps file_get_contents()-function:

$html = file_get_contents('http://example.org'); 

Si cela ne travail, assurez-vous que vous avez allow_url_fopen activé dans votre php.ini.

+0

le problème est que le pendant le processus le lien ne change pas. Par exemple, votre commande contient 2 pages. première page = choisir le produit, deuxième page = confirmation. Maintenant, je veux juste enregistrer la page de confirmation en pdf. quand j'utilise votre solution, j'ai un fichier pdf contenant la première page, qui est également vide (vous ne faites pas votre sélection), car avec file_get_contents ('') il charge la page depuis new ... – mkn

+0

Bon, je reçois le problème. Le problème est, que le serveur ne peut pas (ou ne devrait pas) utiliser la session des clients pour obtenir la même vue du site Web. Je pense que vous pourriez avoir besoin des fonctions '' ob_ * '(http://php.net/ob_) pour capturer la sortie de la page que vous voulez mettre dans votre PDF. Faites comme ceci: Si l'utilisateur appelle la page avec un paramètre d'impression (fourni par votre lien d'impression), vous imprimez votre page comme d'habitude. Mais vous le faites comme suggéré par Sarfraz. 'ob_start()' avant l'impression de votre page, 'ob_get_contents()' après pour récupérer la sortie. 'ob_end_clean()' empêche PHP d'envoyer la sortie. – jwueller

+0

Que voulez-vous dire par "imprimez votre page comme d'habitude?". La page est écrite en php, ce qui signifie qu'elle contient un mélange de code html et php. maintenant le bouton d'impression appelle juste un autre fichier .php (action = 'printpdf.php') et ce fichier a un petit code qui imprime le contenu de ma variable php fournie. – mkn

1

Ceci est probablement over-kill, mais vous pouvez essayer d'utiliser SimpleHTML DOM qui peut charger un site Web distant et extraire son code HTML.

6

Si je vous comprends bien, vous pouvez stocker le contenu de la page dans la variable php comme ceci:

ob_start(); 

// your html code goes here 

$contents = ob_get_contents(); 
ob_end_clean(); 

// see the contents now 
echo $contents; 
+2

'$ contents = ob_get_clean();' seul fera le travail car ob_get_clean() renvoie la valeur du buffer et le nettoie. – Peeeech

Questions connexes