PHP生成word文件插件PHPWord使用介绍

本文深入探讨了PHPWord生成Word文件的过程,包括XML文件的构建与ZIPArchive类的应用,并提供了VML式示例。此外,文章还指导如何解决中文文本和图片居中对齐的问题,以及提供了解决文本框中文字方向无法改变的方法。

一、PHPword生成word文件原理

2003以上版本(不含2003)的word是通过VML(矢量可标记语言,详细查看微软的开发文档)来生成word文件,同理,word也可以另存为包含VML的xml文件。

phpword会先把要输出信息 还有样式保存为xml文件,这个xml文件就是根据VML生成的,

不同的信息会保存在不同的xml文件中,

 $this->parts = array(
            'ContentTypes'   => '[Content_Types].xml',
            'Rels'           => '_rels/.rels',
            'DocPropsApp'    => 'docProps/app.xml',
            'DocPropsCore'   => 'docProps/core.xml',
            'DocPropsCustom' => 'docProps/custom.xml',
            'RelsDocument'   => 'word/_rels/document.xml.rels',
            'Document'       => 'word/document.xml',  //保存要写入到word的信息
            'Styles'         => 'word/styles.xml',    //保存全局的样式
            'Numbering'      => 'word/numbering.xml',
            'Settings'       => 'word/settings.xml',
            'WebSettings'    => 'word/webSettings.xml',
            'FontTable'      => 'word/fontTable.xml',
            'Theme'          => 'word/theme/theme1.xml',
            'RelsPart'       => '',
            'Header'         => '',
            'Footer'         => '',
            'Footnotes'      => '',
            'Endnotes'       => '',
            'Chart'          => '',
        );


然后用php自带的zipArchive 类把以上的xml写到word文件中


二、VML格式示例

<w:body><w:p><w:pPr/><w:r><w:pict><v:shape type="#_x0000_t0202" style="width:89.285714285714px; height:617.85714285714px; margin-left:0px; margin-top:0px; position:relative; mso-position-horizontal:left; mso-position-vertical:center; mso-position-horizontal-relative:page; mso-position-vertical-relative:page; layout-flow:vertical; mso-layout-flow-alt:bottom-to-top;strokecolor:red;" ><w10:wrap type="inline" anchorx="page" anchory="page"/><v:stroke/><v:textbox><w:txbxContent><w:p><w:r><w:rPr/><w:t xml:space="preserve">学校</w:t></w:r><w:r><w:rPr><w:u w:val="single"/></w:rPr><w:t xml:space="preserve">      </w:t></w:r><w:r><w:rPr/><w:t xml:space="preserve">He is a boy</w:t></w:r></w:p></w:txbxContent></v:textbox></v:shape></w:pict></w:r></w:p><w:sectPr><w:footerReference w:type="default" r:id="rId7"/><w:pgSz w:orient="portrait" w:w="11870" w:h="16787"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:num="1" w:space="720"/></w:sectPr></w:body>

二、PHPWord使用手册

https://phpword.readthedocs.org/en/latest/


三、解决word中文本和图片无法居中居中对齐

默认word是按照基线对齐的,如



如果想要让他按照居中对齐,如

就需要修改保存样式的xml文件styles.xml,在其写入

<w:docDefaults><w:pPrDefault><w:pPr><w:textAlignment w:val="center" /></w:pPr></w:pPrDefault></w:docDefaults>

参数详解参考:https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.textalignment%28v=office.14%29.aspx

四、解决文本框中的文字无法改变文字方向问题



四、PHPWord源码下载

https://github.com/PHPOffice/PHPWord


参考:

http://www.cnblogs.com/forlina/archive/2011/06/09/2076559.html

https://msdn.microsoft.com/en-us/library/hh846327%28v=vs.85%29.aspx

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界鸟叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值