【发布时间】:2015-06-25 06:24:59
【问题描述】:
我正在使用 PHP 和 PHPExcel 从数据库中获取图像文件名并执行流读取器操作。我使用setImageResource 函数设置了我的图像,但它没有按预期工作。这是我的代码:
<?php
require_once dirname(__FILE__) . '/../Classes/PHPExcel.php';
require_once '../classes/PHPExcel/IOFactory.php';
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Asia/Calcutta');
if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Browser');
$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF;
$rendererLibrary = 'dompdf.php';
$rendererLibraryPath = dirname(__FILE__) . '/../libs/classes/dompdf/';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Tes');
$objPHPExcel->getActiveSheet()->SetCellValue('B1', 'Image...');
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$img = imagecreatefrompng('C:/Users/Downloads/logo.png');
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('Test image');
$objDrawing->setDescription('Test image');
$objDrawing->setImageResource($img);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(150);
$objDrawing->setCoordinates('A4');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
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'
);
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('test.pdf');
exit;
【问题讨论】:
-
你能提供一些代码吗,到目前为止你已经尝试过了?
-
$file = fopen('logo.png', 'r'); $img = stream_get_contents($file); header("内容类型:图片/png"); $objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); $objDrawing->setName('logo'); $objDrawing->setCoordinates('A1'); $objDrawing->setImageResource($img); $objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG); $objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);$objDrawing->setHeight(36); $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
-
请提供给您的问题。 :)
-
这段代码只有我习惯于尝试设置流内容。
-
您可以尝试在
fopen中使用$data = file_get_contents("logo.png");代替$file and $img来获取图片内容。