zoukankan      html  css  js  c++  java
  • PHP 将HTML转成PDF文件,HTML 转word,Word 转Html

    html转 PDF 用MPDF ,Word转Html  纯PHP的方法暂未找到Word直接转PDF的方法 可以使用 LibreOffice 6.1  (Liunx,win) 皆可使用

     文件又大转换又要快就用 https://gitee.com/bandung/Execl_WordTOPDF.git  吧

    Html转成PDF

    MPDF 6.0 下载地址

    https://files.cnblogs.com/files/wlphp/mpdf.rar (复制到浏览器下载)

    MPDF6.0   没有用命名空间,7.0 开始使用 

       require APP_PATH.'Lib/ORG/mpdf/mpdf/mpdf.php';
    
            try{
    
                $mpdf=new mPDF('zh-cn','A4', 0, '宋体', 0, 0);
    
                $html=file_get_contents("index.html");
    
                $html = str_replace('margin-left:100px;', '', $html);// es
                //7.0 写法
        //        $mpdf = new mPDF(['utf-8', 'A4', 16, '', 10, 10, 15, 1]);
                $mpdf->SetDisplayMode('fullpage');
                $mpdf->autoScriptToLang = true;
                $mpdf->autoLangToFont = true;
    
                $mpdf->WriteHTML($html);
    
                $mpdf->Output(); //直接输出到页面
    
                $fileName=APP_PATH.'File/'.uniqid().'.pdf'; //保存到文件
                $mpdf->Output($fileName);
    
            }catch (Exception $e){
                return false;
            }

     样式保存的还是可以的,但是要注意css 里面如果body 有左边距,右边距的都得删掉,不然样式就乱了,速度非常尴尬!!

     

     Html转word

    生成的文件得是docx,不然PHPWod读取会失败

     /**
         * @param $form
         * @param $to
         * html转word文档
         */
        public function htmlToWord($form,$to){
    
            $path=APP_PATH."/File/old.html";
    
            $isHave=file_exists($path);
    
            if(empty($isHave)){
                 $this->error("文件不存在!");
            }
         
            $zhi=file_get_contents($path);
            //把左边距替换掉
            $str1 = str_replace('margin-left:100px;', '', $zhi);// es
    
            echo $str1;
    
            $this->make($zhi);
        }
        private function make($html){
            $wordname=uniqid().'.docx';
            ob_start();
            echo '<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">';
            
            @header('Content-type:application/word');
            header('Content-Disposition: attachment; filename='.$wordname.'');
            @readfile($wordname);
            ob_flush();//每次执行前刷新缓存
            flush();
        }

     

     

     Word转Html

    //如果用的框架支持命名空间

    直接去github上 按照Composer 使用    https://github.com/PHPOffice/PHPWord   

    如果用的不支持命名空间 如TP3.1  还想用最新的PHPWord  

    下载Composer的命名

    http://ys-c.ys168.com/601902945/TjRTkMn7W334U6IGMP65/vendor.rar.

    require进来,其实用了这个的话laravel支持的composer安装的库基本也支持了

     

      /**
         * @param $from
         * @return bool|string
         * word转成Html文件
         */
        public function wordToHtml($from)
        {
            try{
                $phpWord    = PhpOfficePhpWordIOFactory::load($from);
                $xmlWriter  = PhpOfficePhpWordIOFactory::createWriter($phpWord, "HTML");
                $fileName=uniqid().".html";
                $xmlWriter->save(APP_PATH.'File/'.$fileName);
                return $fileName;
            }catch (Exception $e){
                return false;
            }
    
        }

     

     LibreOffice  转换用法

     自行百度安装 200多MB

    //速度很快执行完基本就转换完成了,然后

    exec("soffice --headless --convert-to html fuck2.doc php.html");
    soffice --headless --convert-to html("想要转换成的文件类型") fuck2.doc("源文件") php.html("转换成的文件")

    这个支持的类型就多了,可以直接把word转成pdf,但是样式很成问题。。。

    !!!

     

     

     

     

  • 相关阅读:
    使用控件的事件,动态创建控件
    C#委托和事件
    C# 静态类
    C# 饼形图
    (三)backbone
    (二)backbone
    (一)backbone
    (五)CodeMirror
    (二)CSS3应用
    (一)CSS3动画应用
  • 原文地址:https://www.cnblogs.com/wlphp/p/10245959.html
Copyright © 2011-2022 走看看