2011-08-08 117 views
0

我正在製作一個動態的HTML頁面與數據庫中的值生成。用戶可以選擇「隱藏」div並操作頁面上的其他元素。我想將頁面上的所有HTML發送到DOMPDF並讓它爲我生成一個下載鏈接。使下載鏈接到DOMPDF生成pdf在同一頁

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

凡dl.php將有這樣的事情在HTML發送到DOMPDF和生成:

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

但是由於用戶操作頁面上的DOM,我想擺脫像環節的東西,我使用jQuery搶HTML

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

annnndd因爲它是一個大的頁面,我不能使用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