首页 > 编程知识 正文

php生成word文档,php文档生成

时间:2023-05-06 11:33:40 阅读:265359 作者:1450

一、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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。