【发布时间】:2012-07-23 19:08:14
【问题描述】:
我需要使用从数据库中获得的一些信息生成一个 PDF 文件,我正在使用 PHPExcel 来执行此操作,但事情是这样的,当我单击“报告”按钮时,我会获取所有信息并将其放入进入 PDF,我的页面中有很多“垃圾”,这些垃圾就像您尝试用记事本打开 PDF 时一样,它只显示随机符号。
这是我的做法
我正在使用$.ajax 调用将所有信息显示在一个表单中:
$.ajax({
// gets all the information and puts them into the form and several tables
});
然后我将一个事件处理程序添加到按钮report,以便我将请求 ID 发送到一个 php 脚本,该脚本将收集必要的信息来填写报告
report.on('click',function(){
$.ajax({
url : '../../php/reports/requestReport.php',
type : 'post',
data : {'idRequest' : id },
dataType : 'json',
success : function(response){
console.log(response);
},
error : function(response){
if(response.responseText != undefined)
$('body').append(response.responseText);
console.warn(response);
}
});
});
在我的 php 文件中,我有这样的内容:
<?php
require '../functions.php';
require '../classes/PHPExcel.php';
if(isset($_POST['idRequest']))
$idRequest = $_POST['idRequest'];
else{
$idRequest = false;
echo json_encode(array("ExitCode"=>1,"Message"=>"idRequest Not Received","Location"=>"requestReport.php"));
}
if($idRequest){
try{
// get all the data
// save the request and send it to the report
$excel = new PHPExcel();
//Initializing
$excel->getProperties()->setCreator("TTMS")
->setLastModifiedBy("TTMS")
->setTitle("Request update $idRequest");
$excel->setActiveSheetIndex(0)
->setCellValue('C1', 'Request For Q.A. / Q.C. / Testing');
// Rename worksheet
$excel->getActiveSheet()->setTitle("$idRequest");
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$excel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (PDF)
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="Update_Request_'.$idRequest.'.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'PDF');
$objWriter->save('php://output');
} catch(PDOException $ex){
echo json_encode(array("ExitCode"=>2,"Message"=>$ex->getMessage(),"Location"=>"requestReport.php PDOException"));
}
长话短说,我在表单所在的页面上得到了垃圾。我认为这与我通过ajax 执行此操作的事实有关,但我需要这样做,所以echo 我必须在我的代码中报告错误。
【问题讨论】:
-
我很困惑。您正在生成 Excel 电子表格,但将其命名为 PDF? PDF 不是,从来都不是,也永远不会是 Excel 电子表格,所以难怪你会扔垃圾。这就像将 .jpg 图像重命名为“cutekittens.txt”并期望记事本能够显示图像。
-
PHPExcel 允许我创建一个 excel 文件,但最后只需将其保存为 PDF,其中大部分内容我只是从 PHPExcel 文档中的教程中复制的
标签: php jquery ajax pdf phpexcel