Html转Word

需求

将富文本编辑后的HTML代码片段转换为Word文件,替换Word文件模板变量,加盖章,生成并打包下载

摘要

在尝试使用PHPWord进行转换后,生成的Word文件没有样式,使用原生生成方式PHPWord则无法打开文件,因此转换思路如下

  1. 先将HTML代码块格式化为可导出的Word格式(视图、保留样式)
  2. 替换HTML内模板参数为变量
  3. 添加印章变量
  4. 打包zip下载(此处生成了多个文件所以多了一步打包zip)

工具类代码



namespace app\common\utils;

/**
 * 自定义 HTML与Word操作类处理
 * @author Teanxo
 */
class Html2Word
{
    private $html;

    private $htmlTagTemp = <<<HTML

HTML;

    /**
     * html字符内 挂载到header标签内的模板
     * @var string
     */
    private $headerTmp = <<<HTML

HTML;

    /**
     * 当有一些不是成员变量的时候
     * 需要指定一个对象 才可对特殊变量进行高级赋值操作
     * 代替适配器,使用动态调用方式
     * $operationInstance->$func($sourceData)
     * @var null
     */
    private $operationInstance = null;


    /**
     * 将一个HTML字符串格式为可导出Word的数据
     */
    public function replaceHTML()
    {
        // 判断字符串中是否存在HTML标签
        $htmlIndex = strpos($this->html, ");


        if ($htmlIndex !== false) {
            $htmlEndIndex = stripos($this->html, ">");
            // 删除HTML开始头部标签
            $endHtml = substr($this->html, $htmlEndIndex + 1);
            $this->html = $this->htmlTagTemp . $endHtml;
        } else {
            $this->html = $this->htmlTagTemp . $this->html . "";
}
// 判断字符串中是否存在header标签
$headerIndex = stripos($this->html, "");
$hRepIndex = stripos($this->html, "

你可能感兴趣的:(PHP,php)