使用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 标签打开一个新页面。

click me to download the file

在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');