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

被折叠的 条评论
为什么被折叠?



