PHPWord icon indicating copy to clipboard operation
PHPWord copied to clipboard

Invalid Image Appears in Codeigniter 4

Open rsoeta opened this issue 2 years ago • 0 comments

I'm trying to take an image from a folder with a function in Codeigniter 4 and want to export it to word using PHPWord assisted by a tutorial at https://github.com/PHPOffice/PHPWord/issues/1895, but the results I get are Invalid Image when when I try to copy it to the url of the image it appears according to the directory. please help, any kind of help would be very valuable.

I also embed the code as study material. Thanks very much

` public function exportBA() { $user_login = $this->AuthModel->getUserId();

    if (!isset($user_login['lp_sekretariat']) && !isset($user_login['user_lembaga_id'])) {
        $str = '  <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
           <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
           <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
           <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
           <script type="text/javascript">
               setTimeout(function() { 
                  BootstrapDialog.alert(\'Silahkan isi profil Anda dan Lembaga terlebih dahulu!!\') 
                  window.location.href = \'/profil_user\';
                },10000);
           </script>';
        echo $str;
    } else {

  
        $this->WilayahModel = new WilayahModel();
        $templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor(FCPATH . 'data/templates/ba_pdtt.docx');


        $filter1 = session()->get('kode_desa');
        $filter5 = '1';
   
        $jmlVerval = $this->VerivaliGeoModel->getJmlVerval($filter1);
        $jmlVerval = $jmlVerval['jml'];
    
        $jmlVervalFix = $this->VerivaliGeoModel->getJmlVervalFix($filter1, $filter5);
        $jmlVervalFix = $jmlVervalFix['jml'];

        $jmlNonVerval = $jmlVerval - $jmlVervalFix;
    
        $vervalPdtt = $this->VerivaliGeoModel->getVerivaliFix($filter1, $filter5);
    
        $coba = [];
        foreach ($vervalPdtt as $i => $value) {

            $coba[] = [
                'vg_no' => $i + 1,
                'vg_nik' => $value['vg_nik'],
                'vg_nama_lengkap' => $value['vg_nama_lengkap'],
                'vg_alamat' => $value['vg_alamat'],
                'vg_rt' => $value['vg_rt'],
                'vg_rw' => $value['vg_rw'],
                'vg_desa' => $value['namaDesa'],
                'dbj_nama_bansos' => $value['dbj_nama_bansos'],
                'vg_lat' => $value['vg_lat'],
                'vg_lang' => $value['vg_lang'],
                'vg_fp_name' => $value['vg_fp'],
                'vg_fp' => $value['vg_fp'],
                'vg_fr_name' => $value['vg_fr'],
                'vg_fr' => $value['vg_fr'],
            ];
            $i++;
        }
  

           $templateProcessor->cloneRowAndSetValues('vg_no', $coba);
        foreach ($coba as $i => $item) {
            // path php to folder
            $path = base_url('data/foto_pm/' . $item['vg_fp']);
            $templateProcessor->setImageValue(sprintf('gambar#%d', $i + 1), array('path' => $path, 'width' => 10, 'height' => 10, 'ratio' => false));

        }

       $filename = 'BA VERVAL PDTT.docx';

        header("Content-Description: File Transfer");
        header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name
        header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
        header('Content-Transfer-Encoding: binary');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Expires: 0');

        // Saving the document as OOXML file...
        $templateProcessor->saveAs('php://output');

    }
}

2022-07-07_22h17_30 `

rsoeta avatar Jul 07 '22 15:07 rsoeta