2017-06-16 4 views
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'); 
    } 
+1

あなたのコードは、 'public_path($ fileName)'に保存されていることを暗示しています。 – apokryfos

答えて

0

私は間違った場所でそれを探していました。 ありがとうございます

関連する問題