我正在使用TCPDF动态生成PDF文档。我正在使用jQuery的$.ajax()
方法来调用PDF生成脚本(pdf_output.php
),该脚本使用TCPDF的Output()
方法将PDF保存到服务器的文件系统中:
//Close and output PDF document
$pdf->Output("Account Summary - ".$client_data['name'].".pdf", 'F');
这在直接从浏览器调用PHP脚本时效果很好,但在通过AJAX调用脚本时不起作用。该脚本执行(我可以通过$_POST
将PHP脚本中的echo json_encode()
变量打印到开发人员控制台中,并且脚本在末尾返回一个值),但PDF永远不会保存到服务器的文件系统中。 / p>
但是,如果我直接在浏览器中运行pdf_output.php
脚本,它就可以了!
以下是我调用输出脚本的方法:
使用Javascript:
function trigger(client_number, month, year)
{
$("#selected_client").val(client_number);
$('#cash_recon').modal('show');
var function_name = "_generate_pdf_closing";
var data =
{
function_name: function_name,
client_id: client_number,
month: month,
year: year
}
console.dir(data);
$.ajax({
type: "POST",
url: "ajax/inspect.php",
data: data,
success: function (data)
{
console.log("Success callback executed!");
},
});
Inspect.php
<?php
include_once('../includes/data_functions.php');
$function_name = $_REQUEST['function_name'];
switch ($function_name)
{
case '_generate_pdf_closing':
print (generate_pdf_closing($_REQUEST['client_id'], $_REQUEST['month'], $_REQUEST['year']));
break;
}
?>
来自data_functions.php的generate_pdf_closing():
function generate_pdf_closing($client_id, $month, $year){
include("../pdf/pdf_output.php");
return $result;
}
澄清一下:如果我在浏览器中调用pdf_output.php
文件,它会生成并完美地将PDF保存到服务器。但是,如果我通过AJAX调用pdf_output.php脚本,它似乎会执行,但PDF永远不会生成/保存到服务器。
想法?任何帮助表示赞赏:)
答案 0 :(得分:1)
这已经解决了!问题是我们在定义Output()
方法的文件位置时必须使用绝对路径。