2011-08-08 8 views
0

私はデータベースからの値を使って動的HTMLページを生成しています。ユーザーはdivを「非表示」し、ページ上の他の要素を操作することができます。ページのすべてのHTMLをDOMPDFに送信し、私にダウンロードリンクを生成させたいと思います。DOMPDFへのダウンロードリンクを作成して同じページにPDFを生成

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("myCV.pdf");

ただし、ユーザーがページ上のDOMを操作していると私はしたいので、:dl.phpはHTMLがDOMPDFに送信され、生成されたこのようなものを持っているでしょう

<a href="dl.php">Download</a> 

リンクのようなものを取り除く、私は、HTML

$('a').wrap('<span style="display:none;"></span>'); 
    var fullhtml = $("#body").html(); 
    fullhtml = encodeURIComponent(fullhtml); 

annnnddをつかむためにjqueryのを使用して、それは大規模なページなので、私はGETを使用することはできません、POSTを使用する必要がありますよhtmlを送信する。どのようにすれば、私はちょうどdl.phpにhtmlでAJAX呼び出しを行い、それを実行するようにページを「インクルード」することができますか?私がAJAX呼び出しから何かを返すと、pdfファイルは混乱したテキストに変換されます。

答えて

3

あなたの質問を正確に理解しているかどうかはわかりませんが、わかっている限り、ページのHTMLを取得してすべてのリンクを隠してから、POSTリクエスト内のすべてを​​、右?だから​​は次のようなものです:

$html = urldecode($_POST['html']); 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
//... 

右でしょうか?

あなたは、ユーザーがすなわち、提出が行われる前に処理されたHTML(リンク隠された、など)を持つ隠し入力してフォームを移入その時点で、リンクをクリックして、このプロセスを開始することができた:

$('a#submit_link').click(function() { 
    // wrap links, etc. here 
    var html = $("body").html(); 
    $('#hidden_form_input').val($html); 
    $('#hidden_form').submit(); 
}); 

このようなことは、生成されたPDFをユーザーに提示する必要があります。

+0

ありがとう、完璧に働いた!そのような単純な解決策、私はそれを理解していないために悪いと感じる:D – kimj

+0

これは良い答えです。リンクの代わりにボタンを使いたい人にとっては、ボタンのタイプは「ボタン」で、「送信」ではないことを覚えておいてください。 – Ehsan

関連する問題