-1

我正在尝试制作一个网站,让人们提交表单。此表单的一部分是使用 ckeditor 从用户那里获取输入。因为来自 ckeditor 的数据是 html,所以您需要将 html 转换为 openxml 以使用 phpword 的 tamplatingprocessor 但是每当我运行我的脚本时,我都会在输出文件上看到空白部分。

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 节外,所有节均正常工作。section2 的数据应该是空的。

4

1 回答 1

0

TemplateProcessor 只能替换单行字符串。为此,它替换了 Word 段落的内容。

您想用<w:p>HTMLtoOpenXML 结果中的另一个段落 ( ) 替换它。转义此结果或删除段落标记,它应该可以工作。

于 2018-04-03T07:59:00.883 回答