PHP实现word文档转html以及pdf

一 : 使用phpword生成word文档,具体步骤如下:

安装环境配置:

 **必须安装:**

1. 》=PHP 5.3.3 +
2. XML Parser extension
3. Zend\Escaper component
4. Zend\Stdlib component
5. Zend\Validator component
选择性安装:
Zip extension (Template模板需要的扩展)
GD extension
XMLWriter extension
XSL extension
dompdf library

可到https://packagist.org/查找所需要的php包类库。

可通过composer安装PHPword,composer require phpoffice\phpword
也可以在配置文件中直接添加对PHPword的依赖:

{ 
    “require” : { 
       “phpoffice / phpword” : “v0.14。*​​” 
    } 
}

然后执行composer update,(composer 版本过低,用 composer self-update

使用方法:

        //设置默认样式
        $phpWord->setDefaultFontName('仿宋');//字体
        $phpWord->setDefaultFontSize(16);//字号

        //添加页面
        $section = $phpWord->createSection();

        //添加目录
        $styleTOC  = ['tabLeader' => \PhpOffice\PhpWord\Style\TOC::TABLEADER_DOT];
        $styleFont = ['spaceAfter' => 60, 'name' => 'Tahoma', 'size' => 12];
        $section->addTOC($styleFont, $styleTOC);

        //默认样式
        $section->addText('Hello PHP!');
        $section->addTextBreak();//换行符

        //指定的样式
        $section->addText(
            'Hello world!',
            [
                'name' => '宋体',
                'size' => 16,
                'bold' => true,
            ]
        );
        $section->addTextBreak(5);//多个换行符

        //自定义样式
        $myStyle = 'myStyle';
        $phpWord->addFontStyle(
            $myStyle,
            [
                'name' => 'Verdana',
                'size' => 12,
                'color' => '1BFF32',
                'bold' => true,
                'spaceAfter' => 20,
            ]
        );
        $section->addText('Hello laravel!', $myStyle);
        $section->addText('Hello Vue.js!', $myStyle);
        $section->addPageBreak();//分页符

        //添加文本资源
        $textrun = $section->createTextRun();
        $textrun->addText('加粗', ['bold' => true]);
        $section->addTextBreak();//换行符
        $textrun->addText('倾斜', ['italic' => true]);
        $section->addTextBreak();//换行符
        $textrun->addText('字体颜色', ['color' => 'AACC00']);

        //列表
        $listStyle = ['listType' => \PhpOffice\PhpWord\Style\ListItem::TYPE_NUMBER];
        $section->addListItem('List Item I', 0, null, 'listType');
        $section->addListItem('List Item I.a', 1, null, 'listType');
        $section->addListItem('List Item I.b', 1, null, 'listType');
        $section->addListItem('List Item I.c', 2, null, 'listType');
        $section->addListItem('List Item II', 0, null, 'listType');
        $section->addListItem('List Item II.a', 1, null, 'listType');
        $section->addListItem('List Item II.b', 1, null, 'listType');

        //超链接
        $linkStyle = ['color' => '0000FF', 'underline' => \PhpOffice\PhpWord\Style\Font::UNDERLINE_SINGLE];
        $phpWord->addLinkStyle('myLinkStyle', $linkStyle);
        $section->addLink('http://www.baidu.com', '百度一下', 'myLinkStyle');
        $section->addLink('http://www.baidu.com', null, 'myLinkStyle');

        //添加图片
        $imageStyle = ['width' => 480, 'height' => 640, 'align' => 'center'];
        $section->addImage('./img/t1.jpg', $imageStyle);
        $section->addImage('./img/t2.jpg',$imageStyle);

        //添加标题
        $phpWord->addTitleStyle(1, ['bold' => true, 'color' => '1BFF32', 'size' => 38, 'name' => 'Verdana']);
        $section->addTitle('标题1', 1);
        $section->addTitle('标题2', 1);
        $section->addTitle('标题3', 1);

        //添加表格
        $styleTable = [
            'borderColor' => '006699',
            'borderSize' => 6,
            'cellMargin' => 50,
        ];
        $styleFirstRow = ['bgColor' => '66BBFF'];//第一行样式
        $phpWord->addTableStyle('myTable', $styleTable, $styleFirstRow);

        $table = $section->addTable('myTable');
        $table->addRow(400);//行高400
        $table->addCell(2000)->addText('学号');
        $table->addCell(2000)->addText('姓名');
        $table->addCell(2000)->addText('专业');
        $table->addRow(400);//行高400
        $table->addCell(2000)->addText('2015123');
        $table->addCell(2000)->addText('小明');
        $table->addCell(2000)->addText('计算机科学与技术');
        $table->addRow(400);//行高400
        $table->addCell(2000)->addText('2016789');
        $table->addCell(2000)->addText('小傻');
        $table->addCell(2000)->addText('教育学技术');

        //页眉与页脚
        $header = $section->createHeader();
        $footer = $section->createFooter();
        $header->addPreserveText('页眉');
        $footer->addPreserveText('页脚 - 页数 {PAGE} - {NUMPAGES}.');

        //生成的文档为Word2007
        $writer = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
        $writer->save('./word/hello.docx');
  //Word转HTML
        $phpWord = \PhpOffice\PhpWord\IOFactory::load('./word/hello.docx');
        $xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, "HTML");
        $xmlWriter->save('./html/hello.html'); 

二:使用tcpdf生成pdf
使用composer安装:composer require tecnickcom/tcpdf

使用方法:

$pdf = new \TCPDF();
$pdf->writeHTML('<div>内容</div>');
 //输出PDF
$pdf->Output('tt .pdf', 'I');//I输出、D下载

参考链接:http://phpword.readthedocs.io/en/latest/intro.html

相关推荐:

  1. laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy
  2. php office文件(word/excel/ppt)转pdf文件
  3. Laravel生成Word文档 - phpword
已标记关键词 清除标记
相关推荐
PHPWord Beta 0.6.2 开发者指南 目 录 首先我们要了解文档最基本的信息和设置: 4 计量单位:缇(twips) 4 字体设置 4 文档属性设置 4 新建文档 5 添加页面 5 页面样式 5 页面样式属性 6 文本 7 添加文本 7 添加文本资源 7 文本样式 8 样式属性列表 9 添加换行符 10 添加分页符 10 列表 10 添加列表 10 列表样式 11 列表样式属性列表 11 超链接 11 添加超链接 11 超链接样式 12 图片 13 添加图片 13 图片样式 13 图片样式属性 13 添加GD生成图片 14 添加水印 14 添加对象 15 添加标题 15 添加目录 16 表格 17 添加表格 17 添加行 17 添加单元格 17 单元格样式 19 表格样式 20 页脚 22 页眉 23 模版 23 其他问题修改 25 解决文本缩进问题 25 表格对齐和表格缩进 27 图片缩进和绝对相对悬浮定位 30 首先我们要了解文档最基本的信息和设置:  因为是国外编辑的类库,存在对中文支持的问题,使用前,我们需要进行一些修正: 1、解决编码问题,PHPword 会对输入的文字进行utf8_encode编码化,如果你使用GBK、GB2312或者utf8编码的话就会出现乱码,如果你用utf8编码,就查找类库中所有方法中的 utf8_encode 码将其删除,如果你采用GBK或者GB2312编码,使用iconv进行编码换。 2、解决中文字体支持,在writer/word2007/base.php中 312行添加 $objWriter->writeAttribute('w:eastAsia',$font) 3、启动php zip支持,windows环境下在php配置文件php.ini中,将extension=php_zip.dll前面的分号“;”去除;(如果没有,请添加extension=php_zip.dll此行并确保php_zip.dll文件存在相应的目录),然后同样在php.ini文件中,将 zlib.output_compression = Off 改为zlib.output_compression = On ; 
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页