将HTML(tinyMCE)转换为WORD(.docx)

7

我已成功使用 https://github.com/djpate/docxgen 生成了一个 .docx 文档,但是当我尝试包含 TinyMCE 文本时,文档就不能打开了(非有效字符)。

有没有一种方法在将HTML文本传递给docxgen之前转换它,以避免出现此类错误?


你尝试过类似以下代码吗:html_entity_decode($html, ENT_QUOTES, "UTF-8"); 你是否在任何时候保存到文件?你能展示一下非法字符吗?它是BOM的一部分吗,例如? - Gavin
http://phpword.codeplex.com/documentation - Khanh Van
3个回答

7
最终,我选择了这个答案来创建文档(只需输出html,Word 就可以识别它):
    header( 'Content-Type: application/msword' ); 
    header("Content-disposition: attachment; filename=" .date("Y-m-d").".doc");  
    /*
    header("Content-type: application/vnd.ms-word");
    header("Content-disposition: attachment; filename=" .date("Y-m-d").".rtf");
    */
    $html = preg_replace('%/[^\\s]+\\.(jpg|jpeg|png|gif)%i', 'http://www.akubocrm.com\\0', $html);

    print "<html xmlns:v=\"urn:schemas-microsoft-com:vml\"";
    print "xmlns:o=\"urn:schemas-microsoft-com:office:office\"";
    print "xmlns:w=\"urn:schemas-microsoft-com:office:word\"";
    print "xmlns=\"http://www.w3.org/TR/REC-html40\">";
    print "<xml>
     <w:WordDocument>
      <w:View>Print</w:View>
      <w:DoNotHyphenateCaps/>
      <w:PunctuationKerning/>
      <w:DrawingGridHorizontalSpacing>9.35 pt</w:DrawingGridHorizontalSpacing>
      <w:DrawingGridVerticalSpacing>9.35 pt</w:DrawingGridVerticalSpacing>
     </w:WordDocument>
    </xml>
    ";

    die($html);

4
我已决定选择该库的专业版 http://www.phpdocx.com/ ,因为它简化了整个过程。我希望它能够满足我的需求。

4
这个软件是专有的,几乎每个有用的功能都需要付费才能使用,因此它并不是一个好的解决方案。 - ZanattMan
这比什么都没有要好。如果你有更好的解决方案,可以随意添加进来。 - sf_tristanb
phpdocx.com 是否满足了你的需求,Tristan? 我也在考虑购买这个(embedHTML() 是专业版功能)。 - relipse
是的,但我必须警告你,这个库远远超出了良好编码标准,但它确实满足我们的需求。 - sf_tristanb

0

另一种解决方案是使用http://htmltodocx.codeplex.com/,这是最近才推出的。

然而,我尝试过它,它弄乱了我的发票(虽然我在不该用表格的地方使用了表格)

Jim


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接