Advertisement
Trigub_Ilia

Формирование docx документа по шаблону

May 30th, 2018
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.75 KB | None | 0 0
  1. <?
  2. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  3. ?>
  4. <?
  5. //CModule::IncludeModule("highloadblock");
  6.  
  7. //use Bitrix\Highloadblock as HL;
  8. //use Bitrix\Main\Entity;
  9. global $USER, $APPLICATION, $DB;
  10.  
  11. //Достаем шаблон договора
  12. $filePath = "";
  13. $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PROPERTY_TEMPLATES");
  14. $arFilter = Array("IBLOCK_ID"=>90, "ID"=>110077, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
  15. $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
  16. while($ob = $res->GetNextElement())
  17. {
  18.     $arFields = $ob->GetFields();
  19.     $arFile = CFile::GetPath($arFields["PROPERTY_TEMPLATES_VALUE"]);
  20.     $filePath = $_SERVER["DOCUMENT_ROOT"].$arFile;
  21. }
  22.  
  23. $dealID = date("m_d_Y_H_i_s");
  24.  
  25. require_once $_SERVER["DOCUMENT_ROOT"].'/local/lib/PHPWord.php'; //включение библиотеки PHPWord
  26. $tempfilename = $_SERVER["DOCUMENT_ROOT"].'/upload/file_doc/quote_'.$_POST["RANDOM_NUMBER"].'.docx'; //Имя создаваемого из шаблона документа
  27.  
  28.  
  29. try {
  30.     $PHPWord = new PHPWord();
  31.  
  32.     $document = $PHPWord->loadTemplate($filePath);//файл шаблона
  33.    
  34.     //$document->setValue('DATE_CREATE', '09.01.18');
  35.     //$_POST["NAME"] = "Test";
  36.     //$_POST["DATE"] = date("d.m.Y");
  37.     //$_POST["ID"] = 1;
  38.     //$_POST["PRICE"] = 133;
  39.    
  40.     $document->setValue('NAME', $_POST["NAME"]);
  41.     $document->setValue('DESCRIPTION_AND_DATE', $_POST["DESCRIPTION_AND_DATE"]);
  42.     $document->setValue('PRICE', $_POST["PRICE"]);
  43.    
  44.    
  45.     $document->save($tempfilename);
  46.     // Далее отправляем файл в браузер
  47.     header('Content-Description: File Transfer');
  48.     header('Content-Type: application/octet-stream');
  49.     header('Content-Disposition: attachment; filename='.basename($tempfilename));
  50.     header('Content-Transfer-Encoding: binary');
  51.     header('Expires: 0');
  52.     header('Cache-Control: must-revalidate');
  53.     header('Pragma: public');
  54.     header('Content-Length: ' . filesize($tempfilename));
  55.     flush();
  56.     readfile($tempfilename);
  57. } catch (Exception $e) {
  58.     //echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
  59. }
  60.  
  61. echo $tempfilename;
  62.  
  63.  
  64. $arFileInfo = array();
  65. $arFileInfo = CFile::MakeFileArray($tempfilename);
  66.  
  67. $hlbl = 1;
  68. $hlblock = HL\HighloadBlockTable::getById($hlbl)->fetch();
  69. // get entity
  70. $entity = HL\HighloadBlockTable::compileEntity($hlblock);
  71. $entity_data_class = $entity->getDataClass();
  72. $data = array(
  73.     "UF_DOC" => $arFileInfo,
  74.     "UF_ID" => $dealID,
  75.     "UF_NAME" => "Договор по Сделке"
  76. );
  77. $result = $entity_data_class::add($data);
  78.  
  79. if($result->isSuccess())
  80. {
  81.     echo 'В справочник добавлена запись '.$ID.'<br />';
  82. }  
  83. else {
  84.     echo 'Ошибка добавления записи';
  85. }
  86. echo $result;
  87.  
  88. unlink($tempfilename); // удаляем файл из временной папки
  89. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement