创建 class 时出现 FPDF 错误
FPDF error while creating class
我在创建将 JSON 数据输出为 PDF 所需的 class 时遇到问题。 PHP 文件如下:
<?php
header('Content-type: text/json');
ob_start();
require('fpdf.php');
class PDF extends FPDF{
// Colored table
function FancyTable($PDFtabHead, $PDFtabData)
{
// stuff with table works if tested with another PHP page
}
} // END -class
$PDFtabHead = json_decode(($_POST['PDFtabHead']), true);
$PDFtabData = json_decode(($_POST['PDFtabData']), true);
$pdf = new PDF();
$pdf->SetFont('Arial','',12);
$pdf->AddPage();
$pdf->FancyTable($PDFtabHead,$PDFtabData);
$pdf->Output();
echo json_encode(array("res"=>$PDFtabHead)); // Only to chek if outputs something
ob_end_flush();
?>
我的 JS 文件中的调用函数是:
$.ajax({
type: "POST",
async: false,
url: './FPDF/PDF.php',
dataType: 'json',
data: {PDFtabHead: tabHead, PDFtabData: tabData},
success: function (response) {
var res = response.res;
console.log("ok return: "+res);
} // success
,
error: function() {
console.log("ERROR CONNECTING TO ./FPDF/PDF.php");
}// error
}); // ajax
tabHead 和 tabData 是正确的,这是 tabData 的输出:
["05:22","0043","22:31","200201","05:22","0044","22:31", ......]
对 PDF.php 的调用总是以错误结束,输出到控制台:错误连接到 ./FPDF/PDF.php
如果我从另一个不以 JSON 格式发送数据但发送正常 PHP 数组的测试页测试它,它就可以工作。显然我必须更改为
$PDFtabHead = ($_POST['PDFtabHead']);
$PDFtabData = ($_POST['PDFtabData']);
在这种情况下,PDF 页面呈现正确。
同样,如果我删除 class 声明,然后简单地 return 回到我的 JS 页面 JSON 数组,它就可以工作;不打印 PDF 很清楚,但数组 return 按预期编辑
好的,我在 FPDF 论坛上找到了解决方案
http://www.fpdf.org/?go=forum&i=56364&t=56363,奥利弗的答案是
Don't return a PDF from an AJAX call.
我在创建将 JSON 数据输出为 PDF 所需的 class 时遇到问题。 PHP 文件如下:
<?php
header('Content-type: text/json');
ob_start();
require('fpdf.php');
class PDF extends FPDF{
// Colored table
function FancyTable($PDFtabHead, $PDFtabData)
{
// stuff with table works if tested with another PHP page
}
} // END -class
$PDFtabHead = json_decode(($_POST['PDFtabHead']), true);
$PDFtabData = json_decode(($_POST['PDFtabData']), true);
$pdf = new PDF();
$pdf->SetFont('Arial','',12);
$pdf->AddPage();
$pdf->FancyTable($PDFtabHead,$PDFtabData);
$pdf->Output();
echo json_encode(array("res"=>$PDFtabHead)); // Only to chek if outputs something
ob_end_flush();
?>
我的 JS 文件中的调用函数是:
$.ajax({
type: "POST",
async: false,
url: './FPDF/PDF.php',
dataType: 'json',
data: {PDFtabHead: tabHead, PDFtabData: tabData},
success: function (response) {
var res = response.res;
console.log("ok return: "+res);
} // success
,
error: function() {
console.log("ERROR CONNECTING TO ./FPDF/PDF.php");
}// error
}); // ajax
tabHead 和 tabData 是正确的,这是 tabData 的输出:
["05:22","0043","22:31","200201","05:22","0044","22:31", ......]
对 PDF.php 的调用总是以错误结束,输出到控制台:错误连接到 ./FPDF/PDF.php
如果我从另一个不以 JSON 格式发送数据但发送正常 PHP 数组的测试页测试它,它就可以工作。显然我必须更改为
$PDFtabHead = ($_POST['PDFtabHead']);
$PDFtabData = ($_POST['PDFtabData']);
在这种情况下,PDF 页面呈现正确。
同样,如果我删除 class 声明,然后简单地 return 回到我的 JS 页面 JSON 数组,它就可以工作;不打印 PDF 很清楚,但数组 return 按预期编辑
好的,我在 FPDF 论坛上找到了解决方案 http://www.fpdf.org/?go=forum&i=56364&t=56363,奥利弗的答案是
Don't return a PDF from an AJAX call.