2016-10-22 5 views
4

Ich verwende derzeit , wo ich versuche, eine .pdf Datei zu generieren, nachdem ein Benutzer ein Formular auf unserer Website einreicht. Die Formulardaten werden an post.php übermittelt, wo sie als formatierte Webseite angezeigt werden. Ich möchte eine PDF-Datei dieser genauen Seite erstellen.Wie wkhtmltopdf mit POST-Daten zu verwenden

Aber das Problem beginnt, wenn Sie versuchen, auszuführen. Ich bekomme eine Endlosschleife, weil ich versuche, das .pdf von innerhalb dieser post.php Datei zu erzeugen, die auch das Ziel ist.

Ich habe auch versucht, include() eine separate PHP Datei, um die exec() Funktion zu behandeln, aber ich bekomme immer noch eine kontinuierliche Schleife.

Vielleicht eine visuelle unten hilft:

form.php, die so etwas wie unten finden ...

<form id="ecard" action="post.php" method="post"> 
    <input type="text" name="ecard_message" /> 
    <input type="submit" /> 
</form> 

post.php, die die gesendeten Daten hält und enthält HTML wie so ...

<div class="content"> 
     <?php echo $_POST['ecard_message']; ?> 
    </div> 

    <?php exec("wkhtmltopdf http://example.com/post.php ecard.pdf"); ?> 

Mein Code funktioniert, wenn die exec()-Funktion getrennt von diesen Dateien ausgeführt wird, aber wie würde ich erreichen die exec() innerhalb desselben Prozesses, automatisch?

Jeder Einblick wird sehr geschätzt.

+0

* Hm ..... * Ajax vielleicht? –

+0

@Fred -ii-, Das ist def eine Möglichkeit und darüber nachzudenken. Ich denke, es gibt einen besseren Weg über PHP, aber vielleicht nicht. Wo würde ich den Ajax in den Workflow stellen? –

+0

In einem anderen '

...
' wo Sie die exec haben oder alles in das vorliegende div. Plus, wenn Ihre exec'd-Datei keine Form von "exit" hat, dann könnte das ein anderer Grund sein, warum es eine Schleife ist. –

Antwort

0

Aufruf wkhtmltopdf http://example.com/post.php ecard.pdf wird die Post-Daten verlieren, so auch wenn es funktioniert, wird die PDF-Datei leer sein.

Eher generieren Sie die PDF als HTML und dann übergeben Sie es an wkhtmltopdf. ZB: (ungetestet)

<?php 
    $html = '<div class="content">' . $_POST['ecard_message'] . '</div>'; 
    exec("echo $html | wkhtmltopdf - ecard.pdf"); 
?> 

Siehe Is there any wkhtmltopdf option to convert html text rather than file? zur Erläuterung Text anstelle von Dateien.