Я пытаюсь сделать сайт, на котором люди отправляют форму. Одна часть этой формы использует ckeditor для получения ввода от пользователя. Поскольку данные, поступающие из ckeditor, являются html, вам нужно превратить html в openxml, чтобы использовать тамплинг-процессор phpword, но всякий раз, когда я запускаю свой скрипт, я получаю пустой раздел в выходном файле.
PHP-код:
$toOpenXML = HTMLtoOpenXML::getInstance()->fromHTML($data[1]);
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('template.docx');
$templateProcessor->setValue('section1', $data[0]);
$templateProcessor->setValue('section2', $toOpenXML);
$templateProcessor->setValue('section3', $specialdata);
$templateProcessor->setValue('section4', $data[2]);
$templateProcessor->setValue('section5', $data[3]);
$file_name1 = $file_name.'.docx';
$file_name2 = $file_name.rand().'.docx';
if(file_exists($file_name1)== false){
$templateProcessor->saveAs($file_name1);
}elseif(file_exists($file_name2)== false){
$templateProcessor->saveAs($file_name2);
}else{
$info['er'] = "3";
}
Вывод HTMLtoOpenXML:
<w:p>
<w:pPr>
<w:pStyle w:val='OurStyle2'/>
</w:pPr>
<w:r>
<w:t xml:space='preserve'>foo</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val='OurStyle2'/>
</w:pPr>
<w:r>
<w:t xml:space='preserve'>bar</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val='OurStyle2'/>
</w:pPr>
<w:r>
<w:t xml:space='preserve'></w:t>
</w:r>
</w:p>
я не проблема проблема о HTMLtoOpenXML я проблема проблема о
Все секции работают, кроме секции 2 в выходном файле. Место, где должны быть данные раздела 2, просто пусто.
TemplateProcessor может заменить только однострочные строки. Для этого он заменяет содержание абзаца Word.
Вы хотите заменить это другим пунктом (<w:p>
) из вашего результата HTMLtoOpenXML. Избегайте этого результата или удалите тег абзаца, и он должен работать.
Других решений пока нет …