【发布时间】:2018-02-01 13:34:19
【问题描述】:
我在使用 TCPDF 库生成 pdf 时遇到问题,并尝试按照此处的一些示例进行操作,但我没有设法解决我的问题,即:当我单击按钮时,我正在制作 AJAX request 发送一个参数,url指向一个带有CODEIGNITER的php控制器,该参数用于执行我的查询并基于它生成报告。我已经用静态参数调试了报告,看看它是否工作并且没有使用 AJAX,一切都很顺利。问题是我需要以这种方式发送数据,但我不知道如何加载在我的请求响应中创建的 pdf 文件,有什么想法吗?
$("#BtnDownload").click(function (){
var jsonString = 2; //Example parameters;
$.ajax({
type: 'POST',
url: baseurl+"reports/selectReport",
data: {'data': jsonString},
success: function(response){
//What my driver should return
}
});
});
这是我的控制器中我指向我的ajax请求的功能,我没有把我的报告布局的所有代码都放上,因为它正在工作,而且代码很长,重要的是要知道如何返回我生成的报告并可以从浏览器中查看。
public function selectReport(){
$this->load->library('Pdf');
$pdf = new Pdf('L', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetTitle('report');
$pdf->SetSubject('Report PDF');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->setPrintHeader(false);
$pdf->setFooterData($tc = array(0, 64, 0), $lc = array(0, 64, 128));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->SetFont('dejavusans', '', 12, '', true);
$base_url = base_url();
$data = $this->input->post("data");
// report body
$name_pdf = utf8_decode("report.pdf");
$pdf->Output($name_pdf, 'I');
}
【问题讨论】:
-
不要发回 PDF。发回 PDF 的 URL。然后重定向到 URL,或者任何你的船。
-
能否举例说明您的评论
-
我举了一个例子来说明我的意思。我希望你觉得它有用。
标签: javascript php jquery ajax codeigniter