PHPWord中文手册整理

[color=rgb(33, 37, 41) !important]PHPWord中文手册整理

修正中文支持的问题,使用前如果发现乱码,需要进行一些修正:

  • 解决编码问题,PHPword 会对输入的文字进行utf8_encode编码转化,如果你使用GBK、GB2312或者utf8编码的话就会出现乱码,如果你用utf8编码,就查找类库中所有方法中的 utf8_encode 转码将其删除,如果你采用GBK或者GB2312编码,使用iconv进行编码转换。
  • 解决中文字体支持,在writer/word2007/base.php中 312行添加 $objWriter->writeAttribute(‘w:eastAsia’,$font)
  • 启动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 = class=”litype_1″>
  • 内嵌样式:

$linkStyle = array(‘color’=>’0000FF’,    ‘underline’=>PHPWord_Style_Font::UNDERLINE_SINGLE);$section->addLink(‘http://www.google.de’, null, $linkStyle);

  • 或者定义一个样式定义设置超链接样式,定义一种样式后,必须把第三个参数设置为样式名称

$linkStyle = array(‘color’=>’0000FF’,    ‘underline’=>PHPWord_Style_Font::UNDERLINE_SINGLE);$PHPWord->addLinkStyle(‘myHyperlinkStyle’, $linkStyle);$section->addLink(‘http://www.google.de’, null, ‘myHyperlinkStyle’);[td]addLinkStyle()
参数类型描述$styleNameString超链接样式名称.$stylesArray链接样式.可以使用各种字体样式属性图片添加图片添加图片的函数方法: addImage:$section->addImage( $src, [$style] );[td]addImage()
参数类型描述$srcString图像的服务器路径,支持相对和绝对路径$styleArray图片样式.注意在添加图片路径时最好trim一下前后有空格很可有可能导致文档打不开图片样式添加图片样式只能使用数组方式 :$imageStyle = array(‘width’=>350, ‘height’=>350, ‘align’=>’center’);$section->addImage(‘EARTH.jpg’, $imageStyle);图片样式属性大小写敏感![td]名称描述width图像宽度,单位像素height图像高度,单位像素align图像对齐方式leftrightcenter如果没有指定图片高或宽的属性,系统将使用PHP原生函数”getimagesize”来获取相关属性。
PHPWord 支持的图片格式: gif, jpeg, png, bmp, tiff.添加GD生成图片你也可以添加由GD库生成的图片,使用函数方法:addMemoryImage:$section->addMemoryImage( $link, [$style] );[td]addMemoryImage()
参数类型描述$linkString生成图片的php文件的路径. 注意: 应设置文件的绝对路径(就像你在浏览器中调用php文件),否则会发生错误。$styleArray图像样式.示例:$section->addMemoryImage(‘http://localhost/image.php’);你GD图片样式的设置和本地图片一样.PHPWord 支持的 GD 图片类型: png, jpeg, gif.添加水印添加水印的页面需要一个头部引用,添加水印方法函数:addWatermark[td]addWatermark()
参数类型描述$srcString水印图片的文件地址$styleArray水印图片样式水印图片是在页面是绝对定位的,所以水印图片至少需要两个样式属性[td]名称描述marginLeft左边距,单位像素marginTop上边距,单位像素注:图片样式并没有提供图像并排,文字环绕等功能,可以通过与表格想结合进行解决。添加对象我们可以使用方法函数 addObject,添加对象和链接$section->addObject( $src, [$style] );[td]addObject()
参数类型描述$srcString文件的服务器,支持相对和绝对路径.$styleArray对象样式.对象属性是有一个样式:
属性区分大小写![td]名称描述align对齐方式leftrightcenterPHPWord 支持的对象类型: XLS, DOC, PPT.添加标题我们可以使用标题来为结构化文档或为文档建立目录,添加标题使用方法函数addTitleStyle 和 addTitle:$PHPWord->addTitleStyle( $titleCount, [$fontStyle] );[td]addTitleStyle()
参数类型描述$srcInteger标题级别,最多支持9级标题$fontStyleArray标题字体样式需要添给标题添加一个样式,否则文档不会将其作为一个真正的标题来处理。定义标题样式后,定义标题就很简单了,可以使用函数方法:addTitle;$section->addTitle( $text, [$depth] );[td]addTitle()
参数类型描述$textString标题文本内容$depthInteger标题级别编号,通过该参数调用addTtileStyle()设置的标题样式添加目录添加目录使用方法函数: addTOC:$styleTOC = array(‘tabLeader’=>PHPWord_Style_TOC::TABLEADER_DOT);$styleFont = array(‘spaceAfter’=>60, ‘name’=>’Tahoma’, ‘size’=>12);$section->addTOC($styleFont, $styleTOC);[td]addTOC()
参数类型描述$styleFontArray目录字体样式$styleTOCArray目录样式目录样式属性列表:样式属性区分大小写 ![td]名称描述tabLeader标题的类型和对应页码.默认使用系统常量 PHPWord_Style_TOC::TABLEADER_…tabPos标题与页码的位置,单位: twips.Indent标题缩进,单位: twips.表格添加表格添加表格使用函数方法:addTable:$table = $section->addTable( [$tableStyle] );参数 $tableStyle 是可选的. 表格样式这章有关于表格样式的详细说明。为addTable建立一个本地对象,我们需要使用这个对象来调用相关函数方法。

  • 添加行

$table->addRow( [$height] );行的高度可以通过$height参数来设置,单位:twips.

  • 添加单元格

单元格添加前必须先添加行,添加单元格的函数方法为: addCell$cell = $table->addCell(h, [$cellStyle] );[td]addCell()
参数类型描述$widthInteger单元格宽度: twips.$cellStyleArray单元格样式为addcell创建一个本地对象,需要使用该对象来 调用以下函数[td]名称描述addText添加文本addTextBreak添加换行符addLink添加链接addImage添加图片addMemoryImage添加水印addListItem添加列表addObject添加对象addPreserveText添加页码,只对页眉和页脚有效示例1:$table = $section->addTable();$table->addRow();$cell = $table->addCell(2000);$cell->addText(‘Cell 1’);$cell = $table->addCell(2000);$cell->addText(‘Cell 2’);$cell = $table->addCell(2000);$cell->addText(‘Cell 3’);示例2:$table = $section->addTable();$table->addRow(400);$table->addCell(2000)->addText(‘Cell 1’);$table->addCell(2000)->addText(‘Cell 2’);$table->addCell(2000)->addText(‘Cell 3’);$table->addRow(1000);$table->addCell(2000)->addText(‘Cell 4’);$table->addCell(2000)->addText(‘Cell 5’);$table->addCell(2000)->addText(‘Cell 6’);单元格样式使用addCell的第二个参数来给单元格设置样式
示例:$cellStyle = array(‘textDirection’=>PHPWord_Style_Cell::TEXT_DIR_BTLR,     ‘bgColor’=>’C0C0C0’);$table = $section->addTable();$table->addRow(1000);$table->addCell(2000, $cellStyle)->addText(‘Cell 1’);$table->addCell(2000, $cellStyle)->addText(‘Cell 2’);$table->addCell(2000, $cellStyle)->addText(‘Cell 3’);$table->addRow();$table->addCell(2000)->addText(‘Cell 4’);$table->addCell(2000)->addText(‘Cell 5’);$table->addCell(2000)->addText(‘Cell 6’);单元格样式属性列表:属性大小写敏感 ![td]名称描述valign单元格内容对齐方式: left, right, centertextDirection文本方向. 使用预定常量 PHPWord_Style_Cell:: TEXT_DIR_…bgColor单元格背景色borderTopSize单元格上边框尺寸,单位 twips.borderTopColor单元格上边框 颜色borderLeftSize单元格左边框尺寸,单位twipsborderLeftColor单元格左边框颜色borderRightSize单元格右边框尺寸,单位twipsborderRightColor单元格右边框颜色borderBottomSize单元格下边框尺寸 ,单位twipsborderBottomColor单元格下边框颜色表格样式我们可以设置整个表格的样式,通过创建表格函数addTable的参数$tableStyle,表格具有如下样式属性
属性名称大小写敏感![td]名称描述cellMarginTop单元格上边距,单位: twips.cellMarginLeft单元格左边距,单位: twips.cellMarginRight单元格右边距,单位: twips.cellMarginBottom单元格下边距,单位: twips.示例:$tableStyle = array(‘cellMarginTop’=>80,     ‘cellMarginLeft’=>80,     ‘cellMarginRight’=>80,     ‘cellMarginBottom’=>80);$table = $section->addTable($tableStyle);我们可以使用函数方法: addTableStyle,为表格定义一个完整的样式。$PHPWord->addTableStyle($styleName, $styleTable, [$styleFirstRow] );[td]addTableStyle()
参数类型描述$styleNameString表样式名称$styleTableArray这个表的样式$styleFirstRowArray表头样式(第一行)示例:$styleTable = array(‘borderColor’=>’006699’,     ‘borderSize’=>6,     ‘cellMargin’=>50);$styleFirstRow = array(‘bgColor’=>’66BBFF’);$PHPWord->addTableStyle(‘myTable’, $styleTable, $styleFirstRow);$table = $section->addTable(‘myTable’);$table->addRow(400);$table->addCell(2000)->addText(‘Cell 1’);$table->addCell(2000)->addText(‘Cell 2’);$table->addCell(2000)->addText(‘Cell 3’);$table->addRow(1000);$table->addCell(2000)->addText(‘Cell 4’);$table->addCell(2000)->addText(‘Cell 5’);$table->addCell(2000)->addText(‘Cell 6’);表格样式属性,注意属性名称大小写敏感![td]名称描述cellMarginTop单元格上边距,单位:twips.cellMarginLeft单元格左边距,单位:twips.cellMarginRight单元格右边距,单位:twips.cellMarginBottom单元格下边距,单位:twips.cellMargin单元格间距,单位:twips.bgColor表格背景色borderTopSize表格上边框尺寸,单位:twips.borderTopColor表格上边框颜色borderLeftSize表格左边框尺寸,单位:twips.borderLeftColor表格左边框颜色borderRightSize表格右边框尺寸,单位:twips.borderRightColor表格右边框颜色borderBottomSize表格下边框尺寸,单位:twips..borderBottomColor表格下边框颜色borderInsideHSize表格内水平网格尺寸,单位: twips.borderInsideHColor表格内水平网格颜色borderInsideVSize表格内垂直网格尺寸,单位: twips.borderInsideVColor表格内垂直网格颜色borderSize表格边框尺寸,单位:twips.borderColor表格边框颜色注意:表格在word布局中的功能可以进行体现,例如进行图片,对象等的布局可以考虑与表格结合进行处理页脚添加文档页脚使用函数方法: createFooter:$footer = $section->createFooter();确保在本地对象中保存页脚,并使用下列函数[td]名称描述addText添加文本addTextBreak添加换行符addImage添加图像addMemoryImage添加GD生成图像addListItem添加列表addPreserveText添加页码,只能在页眉或页脚使用addTable添加表格createTextrun添加文本资源向页脚(页眉)添加页码使用函数方法:addPreserveText:addPreserveText( $text, [$style] );[td]addPreserveText()
参数类型描述$textString页脚(页眉)的文本内容$styleArray文字样式.示例:$footer->addPreserveText(‘Page {PAGE} of {NUMPAGES}.’);页眉添加页眉,使用函数方法: createHeader:$header = $section->createHeader();确保页眉是建立在一个文档中,页眉和页脚使用相同的属性和函数,详见页脚章节 。
注意:只用添加了页眉的页面,才能添加和使用图片水印模版我们可以利用搜索替换功能创建一个docx格式的模版文档,来替换文档中你想替换的文本. 但是要注意,只有文本或链接可以被替换。加载模版文档使用函数方法:loadTemplate function.[td]loadTemplate()
参数方法描述$strFilenameString模版文件路径和名称加载完成模版文档后,你可以使用函数方法: setValue 来搜索替换相关内容[td]setValue()
参数TypeDescription$searchMixed搜索的值$replaceMixed替换的值$template = $PHPWord->loadTemplate(‘Template.docx’);$template->setValue(‘Name’, ‘Somebody someone’);$template->setValue(‘Street’, ‘Coming-Undone-Street 32’);被搜索替换的标签格式为: ${YOUR_SEARCH_PATTERN}
不能添加新的PHPWORD元素到加载的模版文档中
模版使用的几个注意事项:

  • 从模板生成word文档,支持在word模板文档里写替换标签,标签格式为${xxx},不过一定要注意,不要直接在word里编辑这些标签,一定要在文本文档里先写好标签,直接拷贝粘贴上去,千万不要编辑,否则无法替换,原因也很简单,把word文档另存为xml,然后看xml里标签的位置,会发现标签中间被插入了很多没用的xml节点,还有中文字体的节点。。。
  • 模版文档要一次性完成在保存,否则会出现替换失败问题。
  • 中文乱码问题,这个一定是存在的,如果php环境已经是utf8了,要找到关键地方,转utf8的代码,去掉,否则就是转两次编码了,典型的是phpwordtemplate.php文件,把这行注释掉:$replace = utf8_encode($replace);
  • linux下报“Could not close zip file.”错误,这个你永远想不到,要将模板文件所在目录权限改为可写,因为要在那个目录下生成临时文件
  • 引用模板文件和另存文件路径什么的,最好用绝对路径

声明:本文内容来自网络文件,部分未测试,后面有机会整个实例出来,目前整理成一份适合在网页阅读的文档,供参考。

发表回复