has('FULLNAME')){ $FULLNAME = $request->FULLNAME; } if($request->has('PHONE')){ $PHONE = $request->PHONE; } if($request->has('CITIZENSHIP')){ $CITIZENSHIP = $request->CITIZENSHIP; } if($request->has('EMAIL')){ $EMAIL = $request->EMAIL; } if($request->has('ADRESS')){ $ADRESS = $request->ADRESS; } if($request->has('WANTED_WORK_POSITION')){ $WANTED_WORK_POSITION = $request->WANTED_WORK_POSITION; } if($request->has('SOATO_CODE')){ $SOATO_CODE = $request->SOATO_CODE; } if($request->has('EDUCATION')){ $EDUCATION = $request->EDUCATION; } if($request->has('PROFESSION')){ $PROFESSION = $request->PROFESSION; } if($request->has('WORK_ABROAD')){ $WORK_ABROAD = $request->WORK_ABROAD; if($WORK_ABROAD == true){$WORK_ABROAD = "Да";} if($WORK_ABROAD == false){$WORK_ABROAD = "Нет";} } if($request->has('WORK_ABROAD_COUNTRY')){ $WORK_ABROAD_COUNTRY = $request->WORK_ABROAD_COUNTRY; } if($request->has('FOREIGN_LANGUAGES')){ $FOREIGN_LANGUAGES = $request->FOREIGN_LANGUAGES; } if($request->has('DOP_INFO')){ $DOPINFO = $request->DOP_INFO; } if($request->has('NATURE_OF_WORK')){ $NATURE_OF_WORK = $request->NATURE_OF_WORK; } if($request->has('WANTED_SALARY')){ $WANTED_SALARY = $request->WANTED_SALARY; } if($request->has('WORKSEXP')){ $WORKSEXPARR = json_decode($request->WORKSEXP); $WORKSEXPARR = (array)$WORKSEXPARR; $i = 0; $WORK_EXP_NEW_ARR = []; foreach ($WORKSEXPARR as $WORKSEXP) { $WORKSEXP = (array)$WORKSEXP; $WORK_EXP_NEW_ARR[$i] = $WORKSEXP; $WORK_EXP_NEW_ARR[$i]["JOB_FIRE_DATE"] = Carbon::parse($WORKSEXP["JOB_FIRE_DATE"])->toDateTimeString(); $WORK_EXP_NEW_ARR[$i]["JOB_FIRE_DATE"] = date('Y-m-d', strtotime($WORK_EXP_NEW_ARR[$i]["JOB_FIRE_DATE"])); $WORK_EXP_NEW_ARR[$i]["JOB_HIRE_DATE"] = Carbon::parse($WORKSEXP["JOB_HIRE_DATE"])->toDateTimeString(); $WORK_EXP_NEW_ARR[$i]["JOB_HIRE_DATE"] = date('Y-m-d', strtotime($WORK_EXP_NEW_ARR[$i]["JOB_HIRE_DATE"])); $i++; } } if(!empty($WORK_EXP_NEW_ARR)){ $header = " Дата принятия Дата увольнения Организация Профессия "; $columns = ""; foreach ($WORK_EXP_NEW_ARR as $WORK_DATA_GRID){ $columns .= " ". $WORK_DATA_GRID["JOB_HIRE_DATE"] . " ". $WORK_DATA_GRID["JOB_FIRE_DATE"] . " ". $WORK_DATA_GRID["JOB_ORGANIZATION"] . " ". $WORK_DATA_GRID["JOB_PROFESSION"] . " "; } $footer = ""; $gridstring = $header . $columns . $footer; $gridstring = str_replace("\r\n", '', $gridstring); $gridstring = str_replace(' ','',$gridstring); $gridstring = str_replace(' ','',$gridstring); $gridstring = trim($gridstring); } if($request->has('IMAGE')){ $path = $request->IMAGE; if($path === "/storage/nonvatar.jpg"){ $path = $_SERVER["DOCUMENT_ROOT"] . $path; } $data = file_get_contents($path); $im = imagecreatefromstring($data); $width = imagesx($im); $height = imagesy($im); # магия ёпта $kof = $width/157.06375470001; $resultH = $height/$kof; } # создаём зип объект $zip = new ZipArchive(); # путь к файлу шаблону $templateFilename = $_SERVER['DOCUMENT_ROOT'].'/storage/templates/cv_rus_template.docx'; # результирующий файл $inputFilename = $_SERVER['DOCUMENT_ROOT'].'/storage/templates/cv_rus.docx'; if(!copy($templateFilename, $inputFilename)) { die("Не могу скопировать '$templateFilename' to '$inputFilename'"); } # Открываем документ Microsoft Word .docx if ($zip->open($inputFilename, ZipArchive::CREATE)!==TRUE) { echo "Не могу открыть $inputFilename"; die; } # Парсим страничку $xml = $zip->getFromName('word/document.xml'); # Заменяем своими записями if(!empty($FULLNAME)){ $xml = str_replace('FULLNAME', $FULLNAME, $xml); } else { $xml = str_replace('FULLNAME', "", $xml); } if(!empty($ADRESS)){ $xml = str_replace('CITY', trim($ADRESS), $xml); } else { $xml = str_replace('CITY', "", $xml); } if(!empty($PHONE)){ $xml = str_replace('PHONE', $PHONE, $xml); } else { $xml = str_replace('PHONE', "", $xml); } if(!empty($EMAIL)){ $xml = str_replace('EMAIL', $EMAIL, $xml); } else { $xml = str_replace('EMAIL', "", $xml); } if(!empty($CITIZENSHIP)){ $xml = str_replace('CITIZENSHIP', $CITIZENSHIP, $xml); } else { $xml = str_replace('CITIZENSHIP', "", $xml); } if(!empty($WANTED_WORK_POSITION)){ $xml = str_replace('WANTEDWORKPOSITION', $WANTED_WORK_POSITION, $xml); } else { $xml = str_replace('WANTEDWORKPOSITION', "", $xml); } if(!empty($SOATO_CODE)){ $xml = str_replace('SOATOCODE', $SOATO_CODE, $xml); } else { $xml = str_replace('SOATOCODE', "", $xml); } if(!empty($EDUCATION)){ $xml = str_replace('EDUCATION', $EDUCATION, $xml); } else { $xml = str_replace('EDUCATION', "", $xml); } if(!empty($PROFESSION)){ $xml = str_replace('PROFESSION', $PROFESSION, $xml); } else { $xml = str_replace('PROFESSION', "", $xml); } if(!empty($WORK_ABROAD)){ $xml = str_replace('WRVAL', $WORK_ABROAD, $xml); } else { $xml = str_replace('WRVAL', "", $xml); } if(!empty($WORK_ABROAD_COUNTRY)){ $xml = str_replace('WRCOUNTRY', $WORK_ABROAD_COUNTRY, $xml); } else { $xml = str_replace('WRCOUNTRY', "", $xml); } if(!empty($DOPINFO)){ $xml = str_replace('DOPINFO', $DOPINFO, $xml); } else { $xml = str_replace('DOPINFO', "", $xml); } if(!empty($NATURE_OF_WORK)){ $xml = str_replace('FOREIGNLANGUAGES', $FOREIGN_LANGUAGES, $xml); } else { $xml = str_replace('FOREIGNLANGUAGES', "", $xml); } if(!empty($NATURE_OF_WORK)){ $xml = str_replace('NATUREOFWORK', $NATURE_OF_WORK, $xml); } else { $xml = str_replace('NATUREOFWORK', "", $xml); } if(!empty($gridstring)) { $xml = str_replace('GRID', $gridstring, $xml); } else { $xml = str_replace('GRID', "", $xml); } if(!empty($WANTED_SALARY)) { $xml = str_replace('WANTEDSALARY', $WANTED_SALARY, $xml); } else { $xml = str_replace('WANTEDSALARY', "", $xml); } # изменяем ширину картинки $xml = str_replace('height:99pt', 'height:'.$resultH, $xml); # Записываем XML файл if ($zip->addFromString('word/document.xml', $xml)); if ($zip->addFromString('word/media/image1.png', $data)); $zip->close(); $inputFilename = preg_replace('#.*/#', '', $inputFilename); $url = Storage::disk('templates')->url($inputFilename); return $url; } }