2015-02-05 3 views
0

Я пытаюсь заменить переменную multpile в word, используя функцию replaceVariableByHTML, а также я заменяю текст, используя replaceVariableByText. Если я использую только replaceVariableByText, все в порядке, но добавление замены html вызывает проблемы - doc не генерирует. Я пытался заменить переменные только кодом HTML, но я могу заменить только одну переменную. Я делаю что-то неправильно? Это мой код:Несколько replacevariablebyhtml не работает - PHPDocX

//$htmlData and $data are array('name' => 'value') 
$docx = new \CreateDocxFromTemplate($templateDir); 
$docx->setTemplateSymbol('‡'); 
$docx->replaceVariableByText($data, array()); 
foreach($htmlData as $key => $value) 
    $docx->replaceVariableByHTML($key, 'block', $value); 

$filename = uniqid(); 
$uniqName = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $filename.''; 

$docx->createDocx($uniqName); 

header('Content-Type: application/vnd.openxmlformats-officedocument.' . 
    'wordprocessingml.document'); 
header('Content-Disposition: attachment; filename="' . $templateSymbol . 
    '.' . $this->documentExtension . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($uniqName . '.' . $this->documentExtension)); 
readfile($uniqName . '.' . $this->documentExtension); 

ответ

0

Я считаю, что ваше утверждение может быть неполным.

Согласно документации, она должна быть выполнена в виде:

public replaceTemplateVariableByHTML (string $var, string $type, string $html [, array $options]) 

В зависимости от того, что именно вы пытаетесь достичь, вы можете попробовать это:

$docx->replaceVariableByHTML($key, 'block', $value, array('isFile' => false, 'parseDivsAsPs' => true, 'downloadImages' => true));); 

Вы можете изменить ISFILE , parseDivsAsPs и downloadImages соответственно, но свойство isFile должно быть передано.

Вот полная информация: http://www.phpdocx.com/api-documentation/templates/replace-variable-html-Word-document

Смежные вопросы