Javascript Jquery$。将html发布到外部php并将html打印为pdf。需要找到最佳解决方案

Javascript Jquery$。将html发布到外部php并将html打印为pdf。需要找到最佳解决方案,javascript,php,jquery,html,pdf,Javascript,Php,Jquery,Html,Pdf,我得到mysql数据 创建-将mysql数据作为html进行回显 如果访问者希望将数据打印为pdf(我的意思是创建pdf文件并保存在计算机上),我将使用jquery获取数据并发送到外部php文件。在外部php文件中,使用http://www.tcpdf.org解决方案我想创建pdf文件(动态,仅作为变量;我不想将文件保存在我的服务器上),以便用户可以保存它 用户保持在相同的url上,在用户单击按钮后,我提供给用户保存呈现的pdf。我不想更改url或向url添加html内容(如print\u pd

我得到mysql数据

创建-将mysql数据作为html进行回显

如果访问者希望将数据打印为pdf(我的意思是创建pdf文件并保存在计算机上),我将使用jquery获取数据并发送到外部php文件。在外部php文件中,使用
http://www.tcpdf.org
解决方案我想创建pdf文件(动态,仅作为变量;我不想将文件保存在我的服务器上),以便用户可以保存它

用户保持在相同的url上,在用户单击按钮后,我提供给用户保存呈现的pdf。我不想更改url或向url添加html内容(如
print\u pdf.php?html\u content

目前我使用的代码如下

<div id="to_print_as_pdf">
<div>Some content from mysql</div>
<table>Another content from mysql</table>
</div>

<button type="button">Click to print as pdf</button>
<span id="result_print_pdf"></span>
文件
\u print\u pdf.php

//Use http://www.tcpdf.org solution
$html = $_SESSION['content_to_print'];
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->Output('example_001.pdf', 'I');
如果没有
\u prepare\u to\u print\u pdf.php
,如何实现同样的功能?上述解决方案浪费了服务器资源(创建会话)

我尝试使用
$.post
将html内容直接发送到
\u print\u pdf.php
,但在这种情况下,我看到的不是提示保存pdf文件,而是“垃圾”字符

目前的解决方案

可能对某人有帮助

$('#for_hidden_form_for_print_pdf').append('<form action="_print_pdf.php" method="post" target="_blank" id="hidden_form_for_print_pdf">' + 
'<textarea id="content_to_print" name="content_to_print">html content to send </textarea>' + 
'<div><button style="display: none;" id="btn_to_print_pdf">Print pdf</button></div></form>');

$('#btn_to_print_pdf').trigger('click');

$( "#hidden_form_for_print_pdf" ).remove();
$('u隐藏的表格的表格的打印的pdf')。附加('+
'要发送的html内容'+
“打印pdf”);
$('btn'u to'u print'u pdf')。触发器('click');
$(“#隐藏#表单_用于打印_pdf”).remove();

因此,当访问者单击按钮/图标时,我会获取必要的html数据,插入
textareaid=“content\u to\u print”
。然后触发单击以打印pdf,然后删除附加表单。所以我发送到外部php文件,必要的html代码。在php文件中,我处理html代码,为pdf文件创建内容并打印。

这是否回答了您的问题?我读了它。。。但是…不确定。代码看起来不同,据我所知,代码接受现有文件。但是如果没有简单的解决办法,那么再过一遍就会得到答案。如果答案没有帮助,那么将使用现有的解决方案。“代码看起来不同”是的,它使用的是本机而不是jQuery的$。ajax另一个选项是向HTML添加一个表单,该表单只有一个隐藏的输入(没有其他内容)和一个“\u print\u pdf.php”操作和“post”方法。单击按钮,用所需文本填充隐藏输入的值,并触发表单提交。这将允许您使用
$\u POST['content\u to\u print']
而不是
$\u SESSION['content\u to\u print']
。感谢您,目前决定使用您的解决方案。
//Use http://www.tcpdf.org solution
$html = $_SESSION['content_to_print'];
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->Output('example_001.pdf', 'I');
$('#for_hidden_form_for_print_pdf').append('<form action="_print_pdf.php" method="post" target="_blank" id="hidden_form_for_print_pdf">' + 
'<textarea id="content_to_print" name="content_to_print">html content to send </textarea>' + 
'<div><button style="display: none;" id="btn_to_print_pdf">Print pdf</button></div></form>');

$('#btn_to_print_pdf').trigger('click');

$( "#hidden_form_for_print_pdf" ).remove();