中文支持的問題,使用前若是發現亂碼,須要進行一些修正:php
PHPWord最基本的計量單位:「緹」(twips),咱們經常在文件中看到或使用計量單位「緹」,它是開源辦公軟件中最基本的計量單位,「緹」是"TWentieth of an Inch Point"的簡寫,意思 1/20磅,與其餘經常使用劑量單位的換算是1緹=1/1,440英寸
1緹=1/567釐米
1緹=1/15像素linux
文檔默認字體是Arial,字號10號,咱們能夠經過如下方法設置默認字體和字號:
注,該庫存在中文字體支持問題,解決方法:見文檔開頭git
$PHPWord->setDefaultFontName('Tahoma'); $PHPWord->setDefaultFontSize(12);
咱們能夠設置下列文檔屬性github
名稱 | 類型 | 描述 |
---|---|---|
Creator | String | 建立者 |
Company | String | 公司 |
Title | String | 標題 |
Description | String | 描述 |
Category | String | 分類 |
Last modified by | String | 最後修改者 |
Created | Datetime | 建立時間 |
Modified | Datetime | 修改時間 |
Subject | String | 主題 |
Keywords | String | 關鍵詞 |
咱們能夠經過如下方法設置文檔屬性windows
$properties = $PHPWord->getProperties(); $properties->setCreator('My name'); $properties->setCompany('My factory'); $properties->setTitle('My title'); $properties->setDescription('My description'); $properties->setCategory('My category'); $properties->setLastModifiedBy('My name'); $properties->setCreated( mktime(0, 0, 0, 3, 12, 2010) ); $properties->setModified( mktime(0, 0, 0, 3, 14, 2010) ); $properties->setSubject('My subject'); $properties->setKeywords('my, key, word');
添加默認頁面(默認頁面方向和頁邊距):數組
$section = $PHPWord->createSection();
調整頁面樣式和佈局有兩種方法:
1.建立樣式數組:瀏覽器
$sectionStyle = array('orientation' => null, 'marginLeft' => 900, 'marginRight' => 900, 'marginTop' => 900, 'marginBottom' => 900); $section = $PHPWord->createSection($sectionStyle);
2.直接調用樣式屬性設置方法進行設置:服務器
$section = $PHPWord->createSection(); $sectionStyle = $section->getSettings(); $sectionStyle->setLandscape(); $sectionStyle->setPortrait(); $sectionStyle->setMarginLeft(900); $sectionStyle->setMarginRight(900); $sectionStyle->setMarginTop(900); $sectionStyle->setMarginBottom(900);
注意:全部的屬性對大小寫敏感 !網絡
屬性 | 描述 |
---|---|
orientation | 頁面方向:默認豎向:null 橫向:landscape |
marginTop | 上邊距,單位:twips. |
marginLeft | 左邊距,單位:twips. |
marginRight | 右邊距,單位:twips. |
marginBottom | 下邊距,單位:twips.. |
borderTopSize | 上邊框尺寸,單位:twips. |
borderTopColor | 上邊框顏色 |
borderLeftSize | 左邊框尺寸,單位 :twips. |
borderLeftColor | 左邊框顏色 |
borderRightSize | 右邊框尺寸,單位:twips. |
borderRightColor | 右邊框顏色 |
borderBottomSize | 底邊框尺寸,單位:twips. |
borderBottomColor | 底邊框顏色 |
頁面高度和寬度是自動設置的,你能夠經過如下兩個屬性來修改,但不推薦進行修改。ide
屬性 | 描述 |
---|---|
pageSizeW | 頁面寬度,單位: twips. |
pageSizeH | 頁面高度,單位:twips. |
向文檔添加文本使用方法函數: addText.(注意PHPword 會對輸入的文字進行utf8_encode編碼轉化,若是你使用GBK、GB2312或者utf8編碼的話就會出現亂碼,若是你用utf8編碼,就查找類庫中全部方法中的 utf8_encode 轉碼將其刪除,若是你採用GBK或者GB2312編碼,使用iconv進行編碼轉換。)
$section->addText( $text, [$fontStyle], [$paragraphStyle] );
addText() | ||
---|---|---|
參數 | 類型 | 描述 |
$text | String | 文本內容. |
$fontStyle | String / Array | 字體樣式. |
$paragraphStyle | String / Array | 段落樣式 |
文本資源能夠包含文本和連接,能夠統一賦予段落樣式,添加文本資源使用函數方法createTextrun.
createTextRun() | ||
---|---|---|
參數 | 類型 | 描述 |
$paragraphStyle | String / Array | 文本樣式. |
添加文本資源後,就能夠添加具備獨特樣式的文本或連接了。
$textrun = $section->createTextRun(); $textrun->addText('I am bold', array('bold'=>true)); $textrun->addText('I am italic, array('italic'=>true)); $textrun->addText('I am colored, array('color'=>'AACC00'));
固然也能夠繼承使用段落或文字樣式
設置文本樣式有兩種方法:
1.內嵌樣式:
$fontStyle = array('color'=>'006699', 'size'=>18, 'bold'=>true); $section->addText('helloWorld', $fontStyle); $text = $section->addText('helloWorld'); $style = $text->getStyle(); $style->setColor('006699'); $style->setSize(18); $style->setBold();
2.或者定義一個樣式定義設置文本樣式,定義一種樣式後,必須把第二個參數設置爲樣式名稱,使用方法函數addFontStyle:
$PHPWord->addFontStyle( $styleName, $fontStyle);
addFontStyle() | ||
---|---|---|
參數 | 類型 | 描述 |
$styleName | String | 樣式名稱 |
$fontStyle | Array | 樣式風格. |
示例:
$fontStyle = array('color'=>'006699', 'size'=>18, 'bold'=>true); $PHPWord->addFontStyle('myOwnStyle', $fontStyle); $text = $section->addText('helloWorld', 'myOwnStyle');
添加段落樣式,使用方法函數addParagraphStyle:
addParagraphStyle() | ||
---|---|---|
參數 | 類型 | 描述 |
$styleName | String | 段落樣式名稱. |
$paragraphStyle | Array | 段落樣式. |
屬性大小寫敏感 !
名稱 | 描述 |
---|---|
size | 字號. |
name | 字體 |
bold | 粗體 |
italic | 斜體 |
superScript | 上標 |
subScript | 下標 |
underline | 下劃線,使用常量: PHPWord_Style_Font::UNDERLINE_... |
Color | 字體顏色 |
fgColor | 前景色. 只能使用預約義常量:PHPWord_Style_Font::FGCOLOR_... |
名稱 | 描述 |
---|---|
align | 水平對齊:leftrightcenterboth / justify |
spaceBefore | 段前間距,單位: twips. |
spaceAfter | 段後間距,單位:twips |
spacing | 行間距,單位: twips. |
添加換行符,使用方法函數 addTextBreak:
$section->addTextBreak();
添加多個換行符:
$section->addTextBreak(15);
添加分頁符,使用方法函數:addPageBreak:
$section->addPageBreak();
添加列表使用方法函數: addListItem:
$section->addListItem( $text, [$depth], [$styleText], [$styleList], [$styleParagraph] );
addListItem() | ||
---|---|---|
參數 | 類型 | 描述 |
$text | String | 文本內容. |
$depth | Integer | 編號 |
$styleText | String / Array | 文本樣式. |
$styleList | Array | 列表樣式. |
$styleParagraph | String / Array | 段落樣式 |
示例:
$listStyle = array('listType' => PHPWord_Style_ListItem::TYPE_NUMBER); $section->addListItem('Listitem 1', 0, null, $listStyle);
屬性大小寫敏感!
名稱 | 描述 |
---|---|
listType | 列表符號樣式.使用常量 PHPWord_Style_ListItem::TYPE_... |
添加超連接,使用方法函數: addLink:
$section->addLink( $linkSrc, [$linkName], [$styleFont], [$styleParagraph]);
addListItem() | ||
---|---|---|
參數 | 類型 | 描述 |
$linkSrc | String | 連接地址 |
$linkName | String | 連接名稱. |
$styleFont | String / Array | 文本樣式 |
$styleParagraph | String / Array | 段落樣式 |
注意在添加連接地址時最好trim一下先後有空格很可有可能致使文檔打不開
定義超連接風格的兩種方法
$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');
addLinkStyle() | ||
---|---|---|
參數 | 類型 | 描述 |
$styleName | String | 超連接樣式名稱. |
$styles | Array | 連接樣式.可使用各類字體樣式屬性 |
添加圖片的函數方法: addImage:
$section->addImage( $src, [$style] );
addImage() | ||
---|---|---|
參數 | 類型 | 描述 |
$src | String | 圖像的服務器路徑,支持相對和絕對路徑 |
$style | Array | 圖片樣式. |
注意在添加圖片路徑時最好trim一下先後有空格很可有可能致使文檔打不開
添加圖片樣式只能使用數組方式 :
$imageStyle = array('width'=>350, 'height'=>350, 'align'=>'center'); $section->addImage('EARTH.jpg', $imageStyle);
大小寫敏感!
名稱 | 描述 |
---|---|
width | 圖像寬度,單位像素 |
height | 圖像高度,單位像素 |
align | 圖像對齊方式leftrightcenter |
若是沒有指定圖片高或寬的屬性,系統將使用PHP原生函數」getimagesize」來獲取相關屬性。
PHPWord 支持的圖片格式: gif, jpeg, png, bmp, tiff.
你也能夠添加由GD庫生成的圖片,使用函數方法:addMemoryImage:
$section->addMemoryImage( $link, [$style] );
addMemoryImage() | ||
---|---|---|
參數 | 類型 | 描述 |
$link | String | 生成圖片的php文件的路徑. 注意: 應設置文件的絕對路徑(就像你在瀏覽器中調用php文件),不然會發生錯誤。 |
$style | Array | 圖像樣式. |
示例:
$section->addMemoryImage('http://localhost/image.php');
你GD圖片樣式的設置和本地圖片同樣.
PHPWord 支持的 GD 圖片類型: png, jpeg, gif.
添加水印的頁面須要一個頭部引用,添加水印方法函數:addWatermark
addWatermark() | ||
---|---|---|
參數 | 類型 | 描述 |
$src | String | 水印圖片的文件地址 |
$style | Array | 水印圖片樣式 |
水印圖片是在頁面是絕對定位的,因此水印圖片至少須要兩個樣式屬性
名稱 | 描述 |
---|---|
marginLeft | 左邊距,單位像素 |
marginTop | 上邊距,單位像素 |
注:圖片樣式並無提供圖像並排,文字環繞等功能,能夠經過與表格想結合進行解決。
咱們可使用方法函數 addObject,添加對象和連接
$section->addObject( $src, [$style] );
addObject() | ||
---|---|---|
參數 | 類型 | 描述 |
$src | String | 文件的服務器,支持相對和絕對路徑. |
$style | Array | 對象樣式. |
對象屬性是有一個樣式:
屬性區分大小寫!
名稱 | 描述 |
---|---|
align | 對齊方式leftrightcenter |
PHPWord 支持的對象類型: XLS, DOC, PPT.
咱們可使用標題來爲結構化文檔或爲文檔創建目錄,添加標題使用方法函數addTitleStyle 和 addTitle:
$PHPWord->addTitleStyle( $titleCount, [$fontStyle] );
addTitleStyle() | ||
---|---|---|
參數 | 類型 | 描述 |
$src | Integer | 標題級別,最多支持9級標題 |
$fontStyle | Array | 標題字體樣式 |
須要添給標題添加一個樣式,不然文檔不會將其做爲一個真正的標題來處理。
定義標題樣式後,定義標題就很簡單了,可使用函數方法:addTitle;
$section->addTitle( $text, [$depth] );
addTitle() | ||
---|---|---|
參數 | 類型 | 描述 |
$text | String | 標題文本內容 |
$depth | Integer | 標題級別編號,經過該參數調用addTtileStyle()設置的標題樣式 |
添加目錄使用方法函數: addTOC:
$styleTOC = array('tabLeader'=>PHPWord_Style_TOC::TABLEADER_DOT); $styleFont = array('spaceAfter'=>60, 'name'=>'Tahoma', 'size'=>12); $section->addTOC($styleFont, $styleTOC);
addTOC() | ||
---|---|---|
參數 | 類型 | 描述 |
$styleFont | Array | 目錄字體樣式 |
$styleTOC | Array | 目錄樣式 |
樣式屬性區分大小寫 !
名稱 | 描述 |
---|---|
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] );
addCell() | ||
---|---|---|
參數 | 類型 | 描述 |
$width | Integer | 單元格寬度: twips. |
$cellStyle | Array | 單元格樣式 |
爲addcell建立一個本地對象,須要使用該對象來 調用如下函數
名稱 | 描述 |
---|---|
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');
屬性大小寫敏感 !
名稱 | 描述 |
---|---|
valign | 單元格內容對齊方式: left, right, center |
textDirection | 文本方向. 使用預約常量 PHPWord_Style_Cell:: TEXT_DIR_... |
bgColor | 單元格背景色 |
borderTopSize | 單元格上邊框尺寸,單位 twips. |
borderTopColor | 單元格上邊框 顏色 |
borderLeftSize | 單元格左邊框尺寸,單位twips |
borderLeftColor | 單元格左邊框顏色 |
borderRightSize | 單元格右邊框尺寸,單位twips |
borderRightColor | 單元格右邊框顏色 |
borderBottomSize | 單元格下邊框尺寸 ,單位twips |
borderBottomColor | 單元格下邊框顏色 |
咱們能夠設置整個表格的樣式,經過建立表格函數addTable的參數$tableStyle,表格具備以下樣式屬性
屬性名稱大小寫敏感!
名稱 | 描述 |
---|---|
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] );
addTableStyle() | ||
---|---|---|
參數 | 類型 | 描述 |
$styleName | String | 表樣式名稱 |
$styleTable | Array | 這個表的樣式 |
$styleFirstRow | Array | 表頭樣式(第一行) |
示例:
$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');
表格樣式屬性,注意屬性名稱大小寫敏感!
名稱 | 描述 |
---|---|
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佈局中的功能能夠進行體現,例如進行圖片,對象等的佈局能夠考慮與表格結合進行處理
$footer = $section->createFooter();
確保在本地對象中保存頁腳,並使用下列函數
名稱 | 描述 |
---|---|
addText | 添加文本 |
addTextBreak | 添加換行符 |
addImage | 添加圖像 |
addMemoryImage | 添加GD生成圖像 |
addListItem | 添加列表 |
addPreserveText | 添加頁碼,只能在頁眉或頁腳使用 |
addTable | 添加表格 |
createTextrun | 添加文本資源 |
addPreserveText( $text, [$style] );
addPreserveText() | ||
---|---|---|
參數 | 類型 | 描述 |
$text | String | 頁腳(頁眉)的文本內容 |
$style | Array | 文字樣式. |
示例:
$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.');
$header = $section->createHeader();
確保頁眉是創建在一個文檔中,頁眉和頁腳使用相同的屬性和函數,詳見頁腳章節 。
注意:只用添加了頁眉的頁面,才能添加和使用圖片水印
咱們能夠利用搜索替換功能建立一個docx格式的模版文檔,來替換文檔中你想替換的文本. 可是要注意,只有文本或連接能夠被替換。加載模版文檔使用函數方法:loadTemplate function.
loadTemplate() | ||
---|---|---|
參數 | 方法 | 描述 |
$strFilename | String | 模版文件路徑和名稱 |
加載完成模版文檔後,你可使用函數方法: setValue 來搜索替換相關內容
setValue() | ||
---|---|---|
參數 | Type | Description |
$search | Mixed | 搜索的值 |
$replace | Mixed | 替換的值 |
$template = $PHPWord->loadTemplate('Template.docx'); $template->setValue('Name', 'Somebody someone'); $template->setValue('Street', 'Coming-Undone-Street 32');
被搜索替換的標籤格式爲: ${YOUR_SEARCH_PATTERN}
不能添加新的PHPWORD元素到加載的模版文檔中
模版使用的幾個注意事項:
聲明:本文內容來自網絡文件,部分未測試,後面有機會整個實例出來,目前整理成一份適合在網頁閱讀的文檔,供參考。
官方實例:https://github.com/PHPOffice/...
官網:https://phpword.readthedocs.i...