PHPExcel に基づくプロジェクトがあり、.xls と .pdf の 2 つの出力タイプが必要です。.xls 出力は問題なく動作していますが、結果を .pdf ファイルとして出力しようとするとすぐに動作しません...最終的な .pdf ファイルは 0B ファイルなので、完全に空です。
以下は、ファイルの先頭にある PDF ライター (/var/www/tcpdf ディレクトリにある tcPDF) の初期化部分です。
/** Include PHPExcel */
require_once 'scripts/PHPExcel.php';
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');
/** PHPExcel_IOFactory */
include 'scripts/PHPExcel/IOFactory.php';
$objPHPExcel = new PHPExcel();
$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
$rendererLibrary = 'tcpdf';
$rendererLibraryPath = $rendererLibrary;
if (!PHPExcel_Settings::setPdfRenderer(
$rendererName,
$rendererLibraryPath
)) {
die(
'Please set the $rendererName and $rendererLibraryPath values' .
PHP_EOL .
' as appropriate for your directory structure'
);
}
ここに操作関数が来るので、これらをスキップしてください...
これは出力セクションです。
$objPHPExcel->setActiveSheetIndex(0);
if($_GET['format'] == 'xls'){
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="bs-export.xls"');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
if($_GET['format'] == 'pdf'){
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="bs-export.pdf"');
$objWriter = new PHPExcel_Writer_PDF($objPHPExcel);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'PDF');
$objWriter->setSheetIndex(0);
$objWriter->save('php://output');
exit;
}
誰かがここで私を助けてくれますか?
どうもありがとうございました!!
編集:変数名に誤りがあることに気づかなかったので、修正しました
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'PDF');
行先:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
この後、PDF ファイルはもう 0B サイトではありませんが、まだ空白のページではありません... XLS 出力は問題ありません。
EDIT2:非常に奇妙です...これも完全に空白のページを返します:
$objWriter = new PHPExcel_Writer_HTML($objPHPExcel);
$objWriter->save("pdf-test.htm");