Created
August 19, 2019 12:04
-
-
Save hackimov/3049bc82cf33c01705bbc05436bdbd98 to your computer and use it in GitHub Desktop.
Ручное изменение ворд файла
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers\API; | |
use Illuminate\Http\Request; | |
use DB; | |
use App\Quotation; | |
use ZipArchive; | |
use Illuminate\Support\Facades\Storage; | |
use Carbon\Carbon; | |
class CreateCvWordController extends BaseApiController | |
{ | |
/** | |
* @param Request $request | |
*/ | |
public function getWordCvRu(Request $request) | |
{ | |
if($request->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 = "<w:tbl> | |
<w:tblPr> | |
<w:tblStyle w:val=\"aa\" /> | |
<w:tblW w:w=\"0\" w:type=\"auto\" /> | |
<w:tblInd w:w=\"720\" w:type=\"dxa\" /> | |
<w:tblLook w:val=\"04A0\" w:firstRow=\"1\" w:lastRow=\"0\" w:firstColumn=\"1\" w:lastColumn=\"0\" w:noHBand=\"0\" w:noVBand=\"1\" /> | |
</w:tblPr> | |
<w:tblGrid> | |
<w:gridCol w:w=\"2156\" /> | |
<w:gridCol w:w=\"2158\" /> | |
<w:gridCol w:w=\"2158\" /> | |
<w:gridCol w:w=\"2158\" /> | |
</w:tblGrid> | |
<w:tr w:rsidR=\"00AE7E6D\" w14:paraId=\"6DFDD3D3\" w14:textId=\"77777777\" w:rsidTr=\"00AE7E6D\"> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2156\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"2D9F0C0C\" w14:textId=\"104D3888\" w:rsidR=\"00AE7E6D\" w:rsidRPr=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>Дата принятия</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"3C04BACC\" w14:textId=\"1B758261\" w:rsidR=\"00AE7E6D\" w:rsidRPr=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>Дата увольнения</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"499DF127\" w14:textId=\"4B06817F\" w:rsidR=\"00AE7E6D\" w:rsidRPr=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>Организация</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"4B393D9F\" w14:textId=\"34C92FAD\" w:rsidR=\"00AE7E6D\" w:rsidRPr=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>Профессия</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
</w:tr>"; | |
$columns = ""; | |
foreach ($WORK_EXP_NEW_ARR as $WORK_DATA_GRID){ | |
$columns .= "<w:tr w:rsidR=\"00AE7E6D\" w14:paraId=\"65220AEA\" w14:textId=\"77777777\" w:rsidTr=\"00AE7E6D\"> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2156\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"0D3A90DC\" w14:textId=\"77777777\" w:rsidR=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>". $WORK_DATA_GRID["JOB_HIRE_DATE"] . "</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"1AD40990\" w14:textId=\"77777777\" w:rsidR=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>". $WORK_DATA_GRID["JOB_FIRE_DATE"] . "</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"537F9148\" w14:textId=\"77777777\" w:rsidR=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>". $WORK_DATA_GRID["JOB_ORGANIZATION"] . "</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
<w:tc> | |
<w:tcPr> | |
<w:tcW w:w=\"2158\" w:type=\"dxa\" /> | |
</w:tcPr> | |
<w:p w14:paraId=\"5FF56B4B\" w14:textId=\"77777777\" w:rsidR=\"00AE7E6D\" w:rsidRDefault=\"00AE7E6D\" w:rsidP=\"00CD7CD8\"> | |
<w:pPr> | |
<w:ind w:left=\"0\" /> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
</w:pPr> | |
<w:r> | |
<w:rPr> | |
<w:lang w:val=\"ru-RU\" /> | |
</w:rPr> | |
<w:t>". $WORK_DATA_GRID["JOB_PROFESSION"] . "</w:t> | |
</w:r> | |
</w:p> | |
</w:tc> | |
</w:tr>"; | |
} | |
$footer = "</w:tbl>"; | |
$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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment