PHPWord中文手冊整理

修正

中文支持的問題,使用前若是發現亂碼,須要進行一些修正:php

  • 解決編碼問題,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 = On ; 

計量單位:緹(twips)

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 段落樣式.

樣式屬性列表

屬性大小寫敏感 !

Font Style

名稱 描述
size 字號.
name 字體
bold 粗體
italic 斜體
superScript 上標
subScript 下標
underline 下劃線,使用常量: PHPWord_Style_Font::UNDERLINE_...
Color 字體顏色
fgColor 前景色. 只能使用預約義常量:PHPWord_Style_Font::FGCOLOR_...

Paragraph Style

名稱 描述
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一下先後有空格很可有可能致使文檔打不開

超連接樣式

定義超連接風格的兩種方法

  1. 內嵌樣式:
$linkStyle = array('color'=>'0000FF',
    'underline'=>PHPWord_Style_Font::UNDERLINE_SINGLE);
$section->addLink('http://www.google.de', null, $linkStyle);
  1. 或者定義一個樣式定義設置超連接樣式,定義一種樣式後,必須把第三個參數設置爲樣式名稱
$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生成圖片

你也能夠添加由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佈局中的功能能夠進行體現,例如進行圖片,對象等的佈局能夠考慮與表格結合進行處理

頁腳

添加文檔頁腳使用函數方法: createFooter:

$footer = $section->createFooter();

確保在本地對象中保存頁腳,並使用下列函數

名稱 描述
addText 添加文本
addTextBreak 添加換行符
addImage 添加圖像
addMemoryImage 添加GD生成圖像
addListItem 添加列表
addPreserveText 添加頁碼,只能在頁眉或頁腳使用
addTable 添加表格
createTextrun 添加文本資源

向頁腳(頁眉)添加頁碼使用函數方法:addPreserveText:

addPreserveText( $text, [$style] );
addPreserveText()
參數 類型 描述
$text String 頁腳(頁眉)的文本內容
$style Array 文字樣式.

示例:

$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.');

頁眉

添加頁眉,使用函數方法: createHeader:

$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元素到加載的模版文檔中
模版使用的幾個注意事項:

  • 從模板生成word文檔,支持在word模板文檔裏寫替換標籤,標籤格式爲${xxx},不過必定要注意,不要直接在word裏編輯這些標籤,必定要在文本文檔裏先寫好標籤,直接拷貝粘貼上去,千萬不要編輯,不然沒法替換,緣由也很簡單,把word文檔另存爲xml,而後看xml裏標籤的位置,會發現標籤中間被插入了不少沒用的xml節點,還有中文字體的節點。。。
  • 模版文檔要一次性完成在保存,不然會出現替換失敗問題。
  • 中文亂碼問題,這個必定是存在的,若是php環境已是utf8了,要找到關鍵地方,轉utf8的代碼,去掉,不然就是轉兩次編碼了,典型的是phpwordtemplate.php文件,把這行註釋掉:$replace = utf8_encode($replace);
  • linux下報「Could not close zip file.」錯誤,這個你永遠想不到,要將模板文件所在目錄權限改成可寫,由於要在那個目錄下生成臨時文件
  • 引用模板文件和另存文件路徑什麼的,最好用絕對路徑

聲明:本文內容來自網絡文件,部分未測試,後面有機會整個實例出來,目前整理成一份適合在網頁閱讀的文檔,供參考。
官方實例:https://github.com/PHPOffice/...
官網:https://phpword.readthedocs.i...

相關文章
相關標籤/搜索