我正在尝试使用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文件并将其发送到打印
答案 0 :(得分:2)
您应该使用带有变量的PHP页面<a>
使用print.php
标记打开新页面。
<a href="print.php?data" target="_blank">click me to download the file</a>
在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');
答案 1 :(得分:1)
要通过ajax加载PDF,您可以尝试:
使用一些PDF javascript库直接呈现PDF 没有插件的javascript,例如mozilla pdf.js或jspdf。 并尝试查看这些库是否允许您直接设置pdf 二进制数据(您在ajax中收到的内容)。
另一种选择是接收pdf数据作为base64编码和使用
Data URI将window.location.href
设置为该数据uri,
虽然在这种情况下,PDF可能会作为下载提供
对话框而不是直接在页面中加载,你必须测试
那。对于IE 8中的pdf,数据uri支持非常有限
年龄较大,请参阅维基百科data uri page了解详情。
另请参阅this answer,了解如何无法加载pdf
直接从ajax和你有什么其他选择尝试做什么
你想要(主要是将pdf保存为服务器上的临时文件并使用它
使用window.location.href
或<iframe>
或window.open
)