我尝试使用PHPExcel
库生成PDF文件。
我正在使用示例文件,到目前为止,我只更改了库的路径。
这是我的代码:
<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');
if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Browser');
/** Include PHPExcel */
require_once '../excelHelper/PHPExcel.php';
// Change these values to select the Rendering library that you wish to use
// and its directory location on your server
$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF;
//$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF;
//$rendererLibrary = 'tcPDF5.9';
$rendererLibrary = 'tcPDF.php';
//$rendererLibrary = 'DomPDF.php';
$rendererLibraryPath = '../excelHelper/PHPExcel/Writer/PDF/' . $rendererLibrary;
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("PDF Test Document")
->setSubject("PDF Test Document")
->setDescription("Test document for PDF, generated using PHP classes.")
->setKeywords("pdf php")
->setCategory("Test result file");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objPHPExcel->getActiveSheet()->setShowGridLines(false);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
if (!PHPExcel_Settings::setPdfRenderer(
$rendererName,
$rendererLibraryPath
)) {
die(
'NOTICE: Please set the $rendererName and $rendererLibraryPath values' .
'<br />' .
'at the top of this script as appropriate for your directory structure'
);
}
// Redirect output to a client’s web browser (PDF)
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename="01simple.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('php://output');
exit;
但它引发了一个可怕的错误。我试着在过去的一个小时里修好它而没有任何运气。 这是:
[21-Dec-2015 14:47:02 Europe/London] PHP Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Unable to load PDF Rendering library' in /home/notiogrg/public_html/dev/excelHelper/PHPExcel/Writer/PDF/tcPDF.php:35
Stack trace:
#0 /home/notiogrg/public_html/dev/excelHelper/PHPExcel/Autoloader.php(82): require()
#1 [internal function]: PHPExcel_Autoloader::Load('PHPExcel_Writer...')
#2 /home/notiogrg/public_html/dev/excelHelper/PHPExcel/Writer/PDF.php(70): spl_autoload_call('PHPExcel_Writer...')
#3 /home/notiogrg/public_html/dev/excelHelper/PHPExcel/IOFactory.php(141): PHPExcel_Writer_PDF->__construct(Object(PHPExcel))
#4 /home/notiogrg/public_html/dev/approvalRequest/generatePDF.php(102): PHPExcel_IOFactory::createWriter(Object(PHPExcel), 'PDF')
#5 {main}
thrown in /home/notiogrg/public_html/dev/excelHelper/PHPExcel/Writer/PDF/tcPDF.php on line 35
你能告诉我一个线索吗?我确定我用导入或$rendererLibrary
变量搞砸了一些东西,但我真的无法找到解决方案。
答案 0 :(得分:2)
您需要先安装tcPDF,它不与PHPExcel捆绑在一起。 然后你需要正确配置PHPExcel,甚至可能需要配置tcPDF。
答案 1 :(得分:1)
在这里提问之前,阅读flip card tutorial应该是你的第一选择。
PHPExcel允许您将电子表格编写为PDF格式,以便快速分发所表示的数据。
PDF限制请注意,PDF文件格式在样式单元格,数字格式等方面有一些限制。
PHPExcel_Writer_PDF
PHPExcel的PDF Writer是第三方PDF渲染库的包装器,如tcPDF,mPDF或DomPDF。在PHPExcel 1.7.8版之前,tcPDF库与PHPExcel捆绑在一起;但是从版本1.7.8开始,这被删除了。相反,您现在必须自己安装PDF渲染库;但PHPExcel将与许多不同的库一起使用。
目前,支持以下库:
|---------|---------|-----------------------------------------|----------------------------|
| | Version | | |
| Library | tested | Downloadable from | PHPExcel Internal Constant |
|---------|---------|-----------------------------------------|----------------------------|
| tcPDF | 5.9 | http://www.tcpdf.org/ | PDF_RENDERER_TCPDF |
| mPDF | 5.4 | http://www.mpdf1.com/mpdf/ | PDF_RENDERER_MPDF |
| domPDF | 0.6.0 | beta 3 http://code.google.com/p/dompdf/ | PDF_RENDERER_DOMPDF |
|---------|---------|-----------------------------------------|----------------------------|
不同的图书馆有不同的优点和缺点。有些生成比其他更好的格式化输出,有些比其他更快或使用更少的内存,而有些生成更小的.pdf文件。根据自己的具体情况,开发人员可以选择使用哪种方式。
在实例化Writer以生成PDF输出之前,您需要指明您正在使用哪个渲染库以及它所在的位置。
$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF;
$rendererLibrary = 'mPDF5.4';
$rendererLibraryPath = dirname(__FILE__).'/../../../libraries/PDF/' . $rendererLibrary;
if (!PHPExcel_Settings::setPdfRenderer(
$rendererName,
$rendererLibraryPath
)) {
die(
'Please set the $rendererName and $rendererLibraryPath values' .
PHP_EOL .
' as appropriate for your directory structure'
);
}
您没有将$rendererLibraryPath
设置为指向您安装的任何PDF渲染库的PHPExcel包装器(PHPExcel已经知道);您将其设置为指向已安装tcPdf的文件夹(或您正在使用的任何库)。