使用AJAX和Jquery使用FPDF创建pdf
我正在尝试使用FPDF创建pdf文件。
我现在拥有的是一个HTML页面,其中包含各种数据行和旁边的打印按钮。 当有人点击Print时,我通过调用AJAX来使用Jquery发送相应的数据。
这是我的JQUERY代码:
$('.printbtn').live('click', function(){ var printdata = 'name=' + name_t + '&address=' + address_t; $.post('print.php', printdata, function(){ }); return false; });
这是print.php
$name = $_POST['name']; $address = $_POST['address']; require ("fpdf17/fpdf.php"); $pdf = new FPDF('P','mm',array(90,100)); $pdf->AddPage(); $pdf->SetFont('Arial','B',12); $pdf->Cell(0,10,'name: '.$name); $pdf->Cell(0,10,'address: '.$address); $pdf->Output(); ?>
但我不会得到PDF作为回报。 怎么了?? 事实上,没有发生..我想要检索pdf文件并将其发送到打印
要通过ajax加载PDF,您可以尝试:
-
使用一些PDF javascript库直接从javascript渲染PDF而无需插件,如mozilla pdf.js或jspdf 。 并尝试查看这些库是否允许您直接从二进制数据(在ajax中收到的内容)设置pdf。
-
另一种选择是接收pdf数据作为base64编码并使用数据URI将
window.location.href
设置为该数据uri,尽管在这种情况下,PDF可以作为下载对话框提供,而不是直接在页面中加载,你必须测试一下。 对于IE 8及更早版本的pdf,数据uri支持非常有限,有关详细信息,请参阅维基百科数据uri页面 。 -
另请参阅此答案,了解如何直接从ajax加载pdf以及您需要尝试做什么其他选项(主要是将pdf保存为服务器上的临时文件并将其与
window.location.href
或或者
window.open
)
您应该使用带有变量的PHP页面print.php
标签打开一个新页面。
在PHP页面中,添加标头
// Send Headers header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="myPDF.pdf'); // Send Headers: Prevent Caching of File header('Cache-Control: private'); header('Pragma: private'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
尝试使用标题header('Content-type: application/force-download');
自动下载您的文件。
您还可以显示您的PDF数据,就像文件已保存readfile('original.pdf');