当前位置: 首页 > 常见问题 > Word文档 > Word页码

php导出word,phpword转html页码

  • Word页码
  • 2023-08-25

php导出word?php将html转成word的方法:首先安装zip.dll压缩扩展;然后将规定好了的xml压缩成一个zip包;最后把后缀名改成doc或者docx即可。推荐:《PHP教程》 php实现将HTML页面转换成word并且保存的方法这里用使用到一个PHP的叫:PHPWord。那么,php导出word?一起来了解一下吧。

php文档编辑器

1、首先卜升开启php.ini的COM端口欧操作命令

2、创建一型薯老个手拆指向新COM组件的索引方法代码

3、显示目前正在使用的Word的版本号的方法代码

4、可见性设置为0(假),如果想要使它在最前端打开,使用1(真)的方法代码

5、执行打开一个文档的方法代码

6、输出文档内容echo

推荐教程:PHP教程

php怎么转换成pdf

php将html转成word的方法:首先安装zip.dll压返槐缩扩展;然后将规定好了的xml压缩成一个zip包;最后把后缀名改成doc或者docx即可。

推荐漏汪友:《PHP教程》

php实现将HTML页面转换成word并且保存的方法

这里用陵芦使用到一个PHP的叫:PHPWord。

生成Word的原理是,将堆规定好了的xml压缩成一个zip包,并且把后缀名改成doc或者docx即可。

所以使用PHPWord,需要你的PHP环境安装zip.dll压缩扩展,我写了一个demo.

功能说明:

20150507 — HTML中的

标签和

    列表标签的获取

    20150508 — 新增获取文章中的图片功能

    20150509 — 新增行间距,并且过滤一下错误图片

    20150514 — 新增表格处理,并且将代码改成面向对象

    20150519 — 新增GD库处理网络图片

    require_once 'PHPWord.php';

    require_once 'SimpleHtmlDom.class.php';

    class Word{

    private $url;

    private $LinetextArr = array();

    public $CurrentDir;

    public $error = array(); //错误数组

    public $filename = null;

    public $Allowtag = "p,ol,ul,table";

    /**数据统计**/

    public $DownImg = 0;

    public $expendTime = 0;

    public $HttpRequestTime = 0;

    public $ContentLen = 0;

    public $HttpRequestArr = array();

    public $expendmemory = 0;

    public function __construct($url)

    {

    $startTime = $this->_Time();

    $startMemory = $this->_memory();

    $this->url = $url;

    $UrlArr = parse_url($this->url);

    $this->host = $UrlArr["scheme"]."://".$UrlArr['host'];

    $this->CurrentDir = getcwd();

    $this->LinetextArr["table"] = array();

    $html = new simple_html_dom($this->url);

    $this->HttpRequestArr[] = $this->url;

    $this->HttpRequestTime++;

    foreach($html->find($this->Allowtag) as $key=>$value)

    {

    if($value->tag == "table")

    {

    $this->ParseTable($value,0,$this->LinetextArr["table"]);

    }

    else

    {

    $this->AnalysisHtmlDom($value);

    }

    $this->error[] = error_get_last();

    }

    $endTime = $this->_Time();

    $endMemory = $this->_memory();

    $this->expendTime = round(($endTime-$startTime),2); //微秒

    $this->expendmemory = round(($endMemory-$startMemory)/1000,2); //bytes

    $this->CreateWordDom();

    }

    private function _Time()

    {

    return array_sum(explode(" ", microtime()));

    }

    private function _memory()

    {

    return memory_get_usage();

    }

    /**

    * 解析HTML中的Table,这里考虑到多层table嵌套的情况

    * @param $value HTMLDOM

    * @param $i 遍历层级

    * **/

    private function ParseTable($value,$i,$Arr)

    {

    if($value->firstChild() && in_array($value->firstChild()->tag,array("table","tbody","thead","tfoot","tr")))

    {

    foreach($value->children as $k=>$v)

    {

    $this->ParseTable($v,$i++,$Arr);

    }

    }

    else

    {

    foreach($value->children as $k=>$v)

    {

    if($v->firstChild() && $v->firstChild()->tag != "table")

    {

    $Arr[$i][] = array("tag"=>$v->tag,"text"=>trim($v->plaintext));

    }

    if(!$v->firstChild())

    {

    $Arr[$i][] = array("tag"=>$v->tag,"text"=>trim($v->plaintext));

    }

    }

    }

    }

    /**

    * 解析HTML里面的表情

    * @param $value HTMLDOM

    * **/

    private function AnalysisHtmlDom($value)

    {

    $tmp = array();

    if($value->has_child())

    {

    foreach($value->children as $k=>$v)

    {

    $this->AnalysisHtmlDom($v);

    }

    }

    else

    {

    if($value->tag == "a")

    {

    $tmp = array("tag"=>$value->tag,"href"=>$value->href,"text"=>$value->innertext);

    }

    else if($value->tag == "img")

    {

    $src = $this->unescape($value->src);

    $UrlArr = parse_url($src);

    if(!isset($UrlArr['host']))

    {

    $src = $this->host.$value->src;

    $UrlArr = parse_url($src);

    }

    $src = $this->getImageFromNet($src,$UrlArr); //表示有网络图片,需要

    if($src)

    {

    $imgsArr = $this->GD($src);

    $tmp = array("tag"=>$value->tag,"src"=>$src,"text"=>$value->alt,"width"=>$imgsArr['width'],"height"=>$imgsArr['height']); }

    }

    else

    {

    $tmp = array("tag"=>$value->tag,"text"=>strip_tags($value->innertext));

    }

    $this->LinetextArr[] = $tmp;

    }

    }

    /**

    * 根据GD库来获取图片的如果太多,进行比例压缩

    * **/

    private function GD($src)

    {

    list($width, $height, $type, $attr) = getimagesize($src);

    if($width > 800 || $height > 800 )

    {

    $width = $width/2;

    $height = $height/2;

    }

    return array("width"=>$width,"height"=>$height);

    }

    /**

    * 将Uincode编码转移回原来的字符

    * **/

    public function unescape($str) {

    $str = rawurldecode($str);

    preg_match_all("/(?:%u.{4})|&#x.{4};|&#d+;|.+/U",$str,$r);
    $ar = $r[0];
    foreach($ar as $k=>$v) {
    if(substr($v,0,2) == "%u"){
    $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,-4)));
    }
    elseif(substr($v,0,3) == "&#x"){
    $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));
    }
    elseif(substr($v,0,2) == "&#"){
    $ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));
    }
    }
    return join("",$ar);
    }
    /**
    * 图片
    * @param $Src 目标资源
    * @param $UrlArr 目标URL对应的数组
    * **/
    private function getImageFromNet($Src,$UrlArr)
    {
    $file = basename($UrlArr['path']);
    $ext = explode('.',$file);
    $this->ImgDir = $this->CurrentDir."/".$UrlArr['host'];
    $_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff');
    if(isset($ext['1']) && in_array($ext['1'],$_supportedImageTypes))
    {
    $file = file_get_contents($Src);
    $this->HttpRequestArr[] = $Src;
    $this->HttpRequestTime++;
    $this->_mkdir(); //创建目录,或者收集错误
    $imgName = md5($UrlArr['path']).".".$ext['1'];
    file_put_contents($this->ImgDir."/".$imgName,$file);
    $this->DownImg++;
    return $UrlArr['host']."/".$imgName;
    }
    return false;
    }
    /**
    * 创建目录
    * **/
    private function _mkdir()
    {
    if(!is_dir($this->ImgDir))
    {
    if(!mkdir($this->ImgDir,"7777"))
    {
    $this->error[] = error_get_last();
    }
    }
    }
    /**
    * 构造WordDom
    * **/
    private function CreateWordDom()
    {
    $PHPWord = new PHPWord();
    $PHPWord->setDefaultFontName('宋体');
    $PHPWord->setDefaultFontSize("11");
    $styleTable = array('borderSize'=>6, 'borderColor'=>'006699', 'cellMargin'=>120);
    // New portrait section
    $section = $PHPWord->createSection();
    $section->addText($this->Details(),array(),array('spacing'=>120));
    //数据进行处理
    foreach($this->LinetextArr as $key=>$lineArr)
    {
    if(isset($lineArr['tag']))
    {
    if($lineArr['tag'] == "li")
    {
    $section->addListItem($lineArr['text'],0,"","",array('spacing'=>120));
    }
    else if($lineArr['tag'] == "img")
    {
    $section->addImage($lineArr['src'],array('width'=>$lineArr['width'], 'height'=>$lineArr['height'], 'align'=>'center'));
    }
    else if($lineArr['tag'] == "p")
    {
    $section->addText($lineArr['text'],array(),array('spacing'=>120));
    }
    }
    else if($key == "table")
    {
    $PHPWord->addTableStyle('myOwnTableStyle', $styleTable);
    $table = $section->addTable("myOwnTableStyle");
    foreach($lineArr as $key=>$tr)
    {
    $table->addRow();
    foreach($tr as $ky=>$td)
    {
    $table->addCell(2000)->addText($td['text']);
    }
    }
    }
    }
    $this->downFile($PHPWord);
    }
    public function Details()
    {
    $msg = "一共请求:{$this->HttpRequestTime}次,共的图片有{$this->DownImg}张,并且完成大约使用时间:{$this->expendTime}秒,整个程序执行大约消耗内存是:{$this->expendmemory}KB,";
    return $msg;
    }
    public function downFile($PHPWord)
    {
    if(empty($this->filename))
    {
    $UrlArr = parse_url($this->url);
    $this->filename = $UrlArr['host'].".docx";
    }
    // Save File
    $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
    $objWriter->save($this->filename);
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    //Use the switch-generated Content-Type
    header('Content-type: application/msword');//输出的类型
    //Force the download
    $header="Content-Disposition: attachment; filename=".$this->filename.";";
    header($header);
    @readfile($this->filename);
    }
    }上面的代码重点感觉不是word生成,而是Simplehtmldom的使用,这是一个开源的HTML解析器,之前有提到,这几天在看他的代码,
    引出了两个学习方向
    ① 正在表达式
    ② 这个扩展的函数整理
    看源代码的收获:
    PHP的异常是可以捕获的,而且PHP的错误也是可以捕获的。

    php导入数据库文件

    PHP 生成 word 文档,可以考正清虑以下两类敏清兄办法:

    1. 利用 windows 提供的 com组件。

    这种方法的原理,是使用 php 的调用 com 组桥袭件功能函数,如果里安装过 office 的服务器,就可以调用 word.application 。

    2. 利用PHP将内容写入doc文件之中。

    这种方法,难分为两种,一种是生成mht格式写入word,另一种是编写纯 HTML 格式写入word。这种方法是基于 word 对 html 的良好支持。

    如何对word整篇的格式进行修改

    首先使用composer安装PHPWord

    composer require phpoffice/phpword

    创建一个公共方法

    function exportWorld()

    {

    $phpWord = new PhpWord();//实例化对象

    $section = $phpWord->addSection();//新增码历一个者物空白页

    $section->addText('hello');//添加一个段落文字

    $textrun = $section->addTextRun();//普通文字,一个段落,可以在迟嫌搜后面追加文字

    $textrun->addText('world');//在上面的文字后面添加文字

    $textrun->addTextBreak(1);//文字换行,参数表示几行

    $section->addTextBreak(1);//段落直接换行

    $section->addPageBreak();//添加换行符

    //字体样式

    $fstyle = [

    'name' =>'宋体', //字体

    'size' => 12, //大小

    'color'=> 'red', //颜色

    'bold' => true'//加粗

    ];

    //段落样式

    $pstyle = [

    'align' =>'center', //对齐方式

    'inden' => 2, //缩进

    ];

    $section->addText('how are you!',$fstyle,$pstyle);//添加自定义文字样式和段落样式的

    $objWriter = IOFactory::createWriter($phpWord, 'Word2007');

    header('pragma:public');

    header("Content-Disposition:attachmeng;filename=hello.doc");//设置导出保存的文件名

    $objWriter->save('php://output');

    }

    以下举例一些常用的参数配置

    设置文档属性

    $pro = $PHPWord->getProperties();

    $pro->setCreator('Jankin');//创建者

    $pro->setCompany('apple');//公司

    $pro->setTitle('computer science');//标题

    $pro->setDescription('this is computer science document.');//描述

    $pro->setCategory('computer'); //分类

    $pro->setLastModifiedBy('Jankin'); //最后修改者

    $pro->setCreated( mktime(0, 0, 0, 8, 12, 2019) );//创建时间

    $pro->setModified( mktime(0, 0, 0, 8, 12, 2010) );//修改时间

    $pro->setSubject('computer science');//主题

    $pro->setKeywords('science');//关键词

    设置常用页面样式

    $pStyle = [

    'orientation' => null,//页面方向,默认null是竖向,landscape是横向

    'marginTop' => 800,//上边距

    'marginLeft' => 800,//左边距

    'marginRight' => 800,//右边距

    'marginBottom' => 800,//下边距

    'borderTopSize' => 800,//上边框尺寸

    'borderTopColor' => 'red',//上边框颜色

    'borderLeftSize' => 800,//左边框尺寸

    'borderLeftColor' => 'red',//左边框颜色

    'borderRightSize' => 800,//右边框尺寸

    'borderRightColor' => 'red',//右边框颜色

    'borderBottomSize' => 800,//下边框尺寸

    'borderBottomColor' => 'red',//下边框颜色

    ];

    设置常用文本样式

    $pStyle = [

    'size' => 12,//文字大小

    'name' => '宋体',//字体名称

    'bold' => true,//加粗

    'italic' => true,//斜体

    'Color' => 'red',//颜色

    ];

    原文链接 PHPWord导出Word

    php word转pdf

    直接运行WORD,然团贺后将PHP文档仔或刻入

    就可以实现转换了

    在编辑一个框架塌戚派

    好了保存

    你要的WORD出来了

    以上就是php导出word的全部内容,在php编程中,如果要将查询结果导出到Excel,只需对页面的Context-Type做修改即可。例如:代码示例:header("Content-Type: application/vnd.ms-excel")如果希望能够提供那个打开/保存的对话框,Content-Disposition参数。

猜你喜欢