PHPWord/README.md

212 lines
6.6 KiB
Markdown
Raw Normal View History

2014-02-12 11:48:45 -05:00
# PHPWord
2014-02-12 12:47:16 -05:00
[![Build Status](https://travis-ci.org/PHPOffice/PHPWord.png?branch=master)](https://travis-ci.org/PHPOffice/PHPWord)
2014-02-25 13:33:18 +01:00
[![Latest Stable Version](https://poser.pugx.org/phpoffice/phpword/v/stable.png)](https://packagist.org/packages/phpoffice/phpword) [![Total Downloads](https://poser.pugx.org/phpoffice/phpword/downloads.png)](https://packagist.org/packages/phpoffice/phpword) [![Latest Unstable Version](https://poser.pugx.org/phpoffice/phpword/v/unstable.png)](https://packagist.org/packages/phpoffice/phpword) [![License](https://poser.pugx.org/phpoffice/phpword/license.png)](https://packagist.org/packages/phpoffice/phpword)
2014-02-12 12:47:16 -05:00
2014-02-12 11:48:45 -05:00
__OpenXML - Read, Write and Create Word documents in PHP.__
PHPWord is a library written in PHP that create word documents.
2013-12-11 14:39:43 -05:00
No Windows operating system is needed for usage because the result are docx files (Office Open XML) that can be
opened by all major office software.
2012-07-05 07:25:13 +02:00
2014-02-12 11:48:45 -05:00
__Want to contribute?__ Fork us!
2012-07-05 07:25:13 +02:00
2013-12-11 14:39:43 -05:00
## Requirements
2013-12-11 19:57:36 -05:00
* PHP version 5.3.0 or higher
2013-12-11 14:39:43 -05:00
## Installation
It is recommended that you install the PHPWord library [through composer](http://getcomposer.org/). To do so, add
the following lines to your ``composer.json``.
```json
{
"require": {
"phpoffice/phpword": "dev-master"
}
}
```
2014-02-12 11:48:45 -05:00
## Documentation
### Table of contents
1. [Basic usage](#basic-usage)
2014-03-09 00:39:49 +07:00
* [Measurement units](#measurement-units)
2014-02-12 11:48:45 -05:00
2. [Sections](#sections)
2014-03-09 00:39:49 +07:00
* [Section settings](#section-settings)
* [Section page numbering](#section-page-numbering)
3. [Tables](#tables)
* [Cell Style](#tables-cell-style)
4. [Images](#images)
2014-02-12 11:48:45 -05:00
<a name="basic-usage"></a>
#### Basic usage
2013-12-11 14:39:43 -05:00
The following is a basic example of the PHPWord library.
```php
$PHPWord = new PHPWord();
// Every element you want to append to the word document is placed in a section. So you need a section:
$section = $PHPWord->createSection();
// After creating a section, you can append elements:
$section->addText('Hello world!');
// You can directly style your text by giving the addText function an array:
$section->addText('Hello world! I am formatted.', array('name'=>'Tahoma', 'size'=>16, 'bold'=>true));
// If you often need the same style again you can create a user defined style to the word document
// and give the addText function the name of the style:
$PHPWord->addFontStyle('myOwnStyle', array('name'=>'Verdana', 'size'=>14, 'color'=>'1B2232'));
$section->addText('Hello world! I am formatted by a user defined style', 'myOwnStyle');
// You can also putthe appended element to local object an call functions like this:
2014-03-07 22:18:35 +01:00
$fontStyle = new PHPWord_Style_Font();
$fontStyle->setBold(true);
$fontStyle->setName('Verdana');
$fontStyle->setSize(22);
2013-12-11 14:39:43 -05:00
$myTextElement = $section->addText('Hello World!');
2014-03-07 22:18:35 +01:00
$myTextElement->setFontStyle($fontStyle);
2013-12-11 14:39:43 -05:00
// At least write the document to webspace:
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('helloWorld.docx');
```
2013-12-11 16:17:53 -05:00
2014-03-09 00:39:49 +07:00
<a name="measurement-units"></a>
2014-03-07 11:14:45 +07:00
##### Measurement units
The base length unit in Open Office XML is twip. Twip means "TWentieth of an Inch Point", i.e. 1 twip = 1/1440 inch.
You can use PHPWord helper functions to convert inches, centimeters, or points to twips.
2014-03-07 18:09:25 +07:00
```php
2014-03-07 11:14:45 +07:00
// Paragraph with 6 points space after
$PHPWord->addParagraphStyle('My Style', array(
'spaceAfter' => PHPWord_Shared_Font::pointSizeToTwips(6))
);
$section = $PHPWord->createSection();
$sectionStyle = $section->getSettings();
// half inch left margin
$sectionStyle->setMarginLeft(PHPWord_Shared_Font::inchSizeToTwips(.5));
// 2 cm right margin
$sectionStyle->setMarginRight(PHPWord_Shared_Font::centimeterSizeToTwips(2));
```
2014-02-12 11:48:45 -05:00
<a name="sections"></a>
#### Sections
2014-03-09 00:39:49 +07:00
Every visible element in word is placed inside of a section. To create a section, use the following code:
```php
$section = $PHPWord->createSection($sectionSettings);
```
The `$sectionSettings` is an optional associative array that sets the section. Example:
```php
$sectionSettings = array(
'orientation' => 'landscape',
'marginTop' => 600,
'colsNum' => 2,
);
```
<a name="section-settings"></a>
##### Section settings
Below are the available settings for section:
* `orientation` Page orientation, i.e. 'portrait' (default) or 'landscape'
* `marginTop` Page margin top in twips
* `marginLeft` Page margin left in twips
* `marginRight` Page margin right in twips
* `marginBottom` Page margin bottom in twips
* `borderTopSize` Border top size in twips
* `borderTopColor` Border top color
* `borderLeftSize` Border left size in twips
* `borderLeftColor` Border left color
* `borderRightSize` Border right size in twips
* `borderRightColor` Border right color
* `borderBottomSize` Border bottom size in twips
* `borderBottomColor` Border bottom color
* `headerHeight` Spacing to top of header
* `footerHeight` Spacing to bottom of footer
* `colsNum` Number of columns
* `colsSpace` Spacing between columns
* `breakType` Section break type (nextPage, nextColumn, continuous, evenPage, oddPage)
The following two settings are automatically set by the use of the `orientation` setting. You can alter them but that's not recommended.
* `pageSizeW` Page width in twips
* `pageSizeH` Page height in twips
<a name="section-page-numbering"></a>
##### Section page numbering
2014-02-12 11:48:45 -05:00
You can change a section page numbering.
```php
$section = $PHPWord->createSection();
$section->getSettings()->setPageNumberingStart(1);
```
<a name="tables"></a>
#### Tables
The following illustrates how to create a table.
```php
$table = $section->addTable();
$table->addRow();
$table->addCell();
```
<a name="tables-cell-style"></a>
##### Cell Style
###### Cell Span
You can span a cell on multiple columms.
```php
$cell = $table->addCell(200);
$cell->getStyle()->setGridSpan(5);
```
2014-02-12 11:48:45 -05:00
<a name="images"></a>
#### Images
2013-12-11 16:17:53 -05:00
You can add images easily using the following example.
```php
$section = $PHPWord->createSection();
$section->addImage('mars.jpg');
```
Images settings include:
2014-02-12 11:48:45 -05:00
* ``width`` width in pixels
* ``height`` height in pixels
* ``align`` image alignment, _left_, _right_ or _center_
* ``marginTop`` top margin in inches, can be negative
* ``marginLeft`` left margin in inches, can be negative
* ``wrappingStyle`` can be _inline_, _square_, _tight_, _behind_, _infront_
2013-12-11 16:17:53 -05:00
2014-02-12 11:48:45 -05:00
To add an image with settings, consider the following example.
2013-12-11 16:17:53 -05:00
2014-02-12 11:48:45 -05:00
```php
2013-12-11 16:17:53 -05:00
$section->addImage(
'mars.jpg',
array(
'width' => 100,
'height' => 100,
'marginTop' => -1,
'marginLeft' => -1,
2014-02-12 11:48:45 -05:00
'wrappingStyle' => 'behind'
2013-12-11 16:17:53 -05:00
)
);
```