将html页面导出为word

利用js和php导出页面到word的代码:

        $('#toWord').click(function(){
                setTimeout(function(){
                    var time='<?php echo $time ?>';
                    var style = document.getElementsByTagName('style')[0].innerHTML;
                    style="<style>"+style+"</style>";
                    //console.log(style);
                    var t = document.getElementById('printtext').innerHTML;//获取要生成的word的内容
                    t = b.encode(style+t);//加密操作
                    $.ajax({
                        url:"get.php",
                        data:{"html":t,"time":time},//用post方式提交到get.php
                        type:'post',
                        success:function(data){
                            console.log(data);//返回过来的是路径,本地和服务器上有所不同
                            
                            var url = "http"+data.substr(data.lastIndexOf(":"));
                            console.log(url);
                            // window.history.go(0);
                            // window.location.href=url;
                        }
                    });

                },2000);


            });

get.php的代码是这样的:

<?php

if(isset($_POST['html']))
{    
    $html=$_POST['html'];
}

if(isset($_POST['time'])){
    $time = $_POST['time'];
}

// echo $html;
$html = base64_decode($html);

class word
{ 

    function save($path, $html)
    {
        $data = '<html xmlns:o="urn:schemas-microsoft-com:office:office"
        xmlns:w="urn:schemas-microsoft-com:office:word"
        xmlns="http://www.w3.org/TR/REC-html40
        <head>
             <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
             <xml><w:WordDocument><w:View>Print</w:View>              
             </w:WordDocument>
             </xml>
             <style>
                    @page WordSection1//这里可以修改导出word后的一些样式
                    {
                        size:595.3pt 841.9pt;
                        margin:72.0pt 54.0pt 72.0pt 54.0pt;
                        mso-header-margin:42.55pt;
                        mso-footer-margin:49.6pt;
                        mso-paper-source:0;
                    }
                    span{
                        font-size:10.0pt!important;
                    }
                    div.WordSection1
                        {page:WordSection1;}
             </style>
        </head><body><div class="WordSection1">' . $html . '</div></body></html>';
        $this->wirtefile($path,$data);
    }

    function wirtefile ($fn,$data)
    {
        $fp=fopen($fn,"wb");

        fwrite($fp,$data);
        fclose($fp);
    }
}


     $word = new word(); 
    // $html = "aaa".$i; 
    $wordname = 'taiyuanReports/taiyuan'.$time.'.doc'; 
    $word->save($wordname, $html); 
    // ob_flush();//每次执行前刷新缓存 
    // flush(); 

    $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
    // 127.0.0.1/palm/new2/module/report/taiyuan/get.php;

    echo substr($url,0,-7).$wordname;

    // echo $url;

    // $url = 'http://127.0.0.1/palm/new2/module/report/taiyuan/';
    // echo $url . $wordname;
?>

另外,上传的服务器后还需要有权限才能成功.

原文地址:https://www.cnblogs.com/dowinweb/p/6394295.html