Алексей Щербаков,
вот работающий код, проверил у себя
конструктор ArrayDataProvider принмает на вход два массива, в первом - значения, во втором - описание
INDEX - это внутренний ключ ArrayDataProvider, его значение не надо передавать снаружи
вот работающий код, проверил у себя
Код |
---|
<? use \Bitrix\Main\{ Loader, IO }; use \Bitrix\DocumentGenerator; require_once __DIR__. '/bitrix/modules/main/include/prolog_before.php'; Loader::includeModule('documentgenerator'); $file = new IO\File( __DIR__ . '/upload/rest_template.docx' ); $body = new DocumentGenerator\Body\Docx($file->getContents()); $body->normalizeContent(); $body->setValues([ 'Table' => new DocumentGenerator\DataProvider\ArrayDataProvider( [ [ 'Name' => 'Item name 1', 'Price' => '$111.23', 'Image' => __DIR__.'/upload/image.jpeg', ], [ 'Name' => 'Item name 2', 'Price' => '$222.34', 'Image' => null, ] ], [ 'ITEM_NAME' => 'Item', 'ITEM_PROVIDER' => DocumentGenerator\DataProvider\HashDataProvider::class, ] ), 'TableItemName' => 'Table.Item.Name', 'TableItemImage' => 'Table.Item.Image', 'TableItemPrice' => 'Table.Item.Price', 'TableIndex' => 'Table.INDEX', ]); $body->setFields([ 'TableItemImage' => ['TYPE' => 'IMAGE'], ]); $result = $body->process(); if(!$result->isSuccess()) { echo '<pre>'; print_r($result->getErrorMessages()); echo '</pre>'; } else { $content = $body->getContent(); file_put_contents(__DIR__.'/body_test.docx', $content); } |
конструктор ArrayDataProvider принмает на вход два массива, в первом - значения, во втором - описание
INDEX - это внутренний ключ ArrayDataProvider, его значение не надо передавать снаружи