0
私はレポートジェネレータに取り組んでいますが、PHPWordは画像を置き換えないので、最初にクライアントのロゴを追加するためのテンプレートを作成する必要があります。だから私はそのようなファイルを作成してダウンロードすることができますが、後者の使用のためにディスクに保存することはできません。 これは関連するコードです。Laravelローカルドライバを使用してPhpWordで生成されたファイルをローカルに保存する方法はありますか?
**
* Creates the basic template for the reports
* since PHPWord cannot replace placeholder images
* this function must get the name and the logo of
* the board and the clonable sections to insert
* the actual report
*
* @return PHPWord object
* @author msantana
*/
public function createTemplate()
{
//Getting the board logo
$logo = $this->exam->board->logo->first()->source;
//Preparing th generarl orintation of the main section
//For this kind of reports it is always portrait
$sectionStyle = [
'orientation' => 'portrait',
'marginTop' => 600,
'colsNum' => 1,
];
//Preparing the "small" image to be
//used in the header of all the document
$imageStyle = [
'height' => 80,
'wrappingStyle' => 'square',
'posHorizontalRel' => 'margin',
'posVerticalRel' => 'line',
];
//Create the section
$section = $this->objPHPWord->addSection($sectionStyle);
//Create an empty header
$header = $section->addHeader();
//Preparing a table to insert in the heading
//to accomodate the image on the left and
//the name of the board on the right
$tableStyle = [
'borderColor' => '006699',
'borderSize' => 6,
'cellMargin' => 50
];
$firstRowStyle = array('bgColor' => '66BBFF');
$this->objPHPWord->addTableStyle('headerTable', $tableStyle, $firstRowStyle);
$headerTable = $header->addTable('headerTable');
$headerTable->addRow();
$cell = $headerTable->addCell();
$source = "images/".$this->exam->board->logo()->first()->source ;
$cell->addImage($source, $imageStyle);
$cell = $headerTable->addCell();
$cell->addText($this->exam->board->name, array('name' => 'Arial', 'size' => 14));
$cell->addText("Examen de Certificación ".$this->exam->applicated_at->year, array('name' => 'Arial', 'size' => 14));
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($this->objPHPWord, 'Word2007');
$fileName = 'Reporte_'.$this->exam->board_id.'_'.Carbon::now()->toAtomString().".docx";
$objWriter->save(public_path($fileName));
//File::put($fileName, $objWriter->save($fileName));
//return public_path($fileName);
//return $objWriter->save("php://output");
//$document->save(public_path($fileName));
//$writer = PHPWord_IOFactory::createWriter($objPHPWord, 'Word2007');;
//$writer->save("testword.docx");
return Response::download(public_path($fileName), 'testword.docx');
}
あなたのコードは、 'public_path($ fileName)'に保存されていることを暗示しています。 – apokryfos