2011-08-08 74 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