More unit tests for Writer\Word2007\Base
This commit is contained in:
parent
2f0438ff15
commit
acfe64bb53
|
|
@ -173,8 +173,6 @@ class PHPWord_Style_Font
|
||||||
} elseif (is_array($paragraphStyle)) {
|
} elseif (is_array($paragraphStyle)) {
|
||||||
$this->_paragraphStyle = new PHPWord_Style_Paragraph;
|
$this->_paragraphStyle = new PHPWord_Style_Paragraph;
|
||||||
$this->_paragraphStyle->setArrayStyle($paragraphStyle);
|
$this->_paragraphStyle->setArrayStyle($paragraphStyle);
|
||||||
} elseif (null === $paragraphStyle) {
|
|
||||||
$this->_paragraphStyle = new PHPWord_Style_Paragraph;
|
|
||||||
} else {
|
} else {
|
||||||
$this->_paragraphStyle = $paragraphStyle;
|
$this->_paragraphStyle = $paragraphStyle;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,22 +36,20 @@ class PHPWord_Style_Row
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
private $_tblHeader;
|
private $_tblHeader = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table row cannot break across pages
|
* Table row cannot break across pages
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
private $_cantSplit;
|
private $_cantSplit = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new row style
|
* Create a new row style
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->_tblHeader = null;
|
|
||||||
$this->_cantSplit = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -62,23 +60,31 @@ class PHPWord_Style_Row
|
||||||
$this->$key = $value;
|
$this->$key = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setTblHeader($pValue = null)
|
public function setTblHeader($pValue = false)
|
||||||
{
|
{
|
||||||
|
if (!is_bool($pValue)) {
|
||||||
|
$pValue = false;
|
||||||
|
}
|
||||||
$this->_tblHeader = $pValue;
|
$this->_tblHeader = $pValue;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTblHeader()
|
public function getTblHeader()
|
||||||
{
|
{
|
||||||
return $this->_tblHeader ? 1 : 0;
|
return $this->_tblHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setCantSplit($pValue = null)
|
public function setCantSplit($pValue = false)
|
||||||
{
|
{
|
||||||
|
if (!is_bool($pValue)) {
|
||||||
|
$pValue = false;
|
||||||
|
}
|
||||||
$this->_cantSplit = $pValue;
|
$this->_cantSplit = $pValue;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCantSplit()
|
public function getCantSplit()
|
||||||
{
|
{
|
||||||
return $this->_cantSplit ? 1 : 0;
|
return $this->_cantSplit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,9 @@
|
||||||
class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write text
|
||||||
|
*/
|
||||||
protected function _writeText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Text $text, $withoutP = false)
|
protected function _writeText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Text $text, $withoutP = false)
|
||||||
{
|
{
|
||||||
$styleFont = $text->getFontStyle();
|
$styleFont = $text->getFontStyle();
|
||||||
|
|
@ -81,6 +84,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write text run
|
||||||
|
*/
|
||||||
protected function _writeTextRun(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_TextRun $textrun)
|
protected function _writeTextRun(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_TextRun $textrun)
|
||||||
{
|
{
|
||||||
$elements = $textrun->getElements();
|
$elements = $textrun->getElements();
|
||||||
|
|
@ -222,6 +228,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write table
|
||||||
|
*/
|
||||||
protected function _writeLink(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Link $link, $withoutP = false)
|
protected function _writeLink(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Link $link, $withoutP = false)
|
||||||
{
|
{
|
||||||
$rID = $link->getRelationId();
|
$rID = $link->getRelationId();
|
||||||
|
|
@ -278,6 +287,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write preserve text
|
||||||
|
*/
|
||||||
protected function _writePreserveText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footer_PreserveText $textrun)
|
protected function _writePreserveText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footer_PreserveText $textrun)
|
||||||
{
|
{
|
||||||
$styleFont = $textrun->getFontStyle();
|
$styleFont = $textrun->getFontStyle();
|
||||||
|
|
@ -370,6 +382,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->endElement(); // p
|
$objWriter->endElement(); // p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write text style
|
||||||
|
*/
|
||||||
protected function _writeTextStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Font $style)
|
protected function _writeTextStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Font $style)
|
||||||
{
|
{
|
||||||
$font = $style->getName();
|
$font = $style->getName();
|
||||||
|
|
@ -451,11 +466,17 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write text break
|
||||||
|
*/
|
||||||
protected function _writeTextBreak(PHPWord_Shared_XMLWriter $objWriter = null)
|
protected function _writeTextBreak(PHPWord_Shared_XMLWriter $objWriter = null)
|
||||||
{
|
{
|
||||||
$objWriter->writeElement('w:p', null);
|
$objWriter->writeElement('w:p', null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write table
|
||||||
|
*/
|
||||||
protected function _writeTable(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Table $table)
|
protected function _writeTable(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Table $table)
|
||||||
{
|
{
|
||||||
$_rows = $table->getRows();
|
$_rows = $table->getRows();
|
||||||
|
|
@ -499,14 +520,14 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->writeAttribute('w:val', $height);
|
$objWriter->writeAttribute('w:val', $height);
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
if (!is_null($tblHeader)) {
|
if ($tblHeader) {
|
||||||
$objWriter->startElement('w:tblHeader');
|
$objWriter->startElement('w:tblHeader');
|
||||||
$objWriter->writeAttribute('w:val', $tblHeader);
|
$objWriter->writeAttribute('w:val', '1');
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
if (!is_null($cantSplit)) {
|
if ($cantSplit) {
|
||||||
$objWriter->startElement('w:cantSplit');
|
$objWriter->startElement('w:cantSplit');
|
||||||
$objWriter->writeAttribute('w:val', $cantSplit);
|
$objWriter->writeAttribute('w:val', '1');
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
|
|
@ -565,6 +586,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write table style
|
||||||
|
*/
|
||||||
protected function _writeTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Table $style = null)
|
protected function _writeTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Table $style = null)
|
||||||
{
|
{
|
||||||
$margins = $style->getCellMargin();
|
$margins = $style->getCellMargin();
|
||||||
|
|
@ -610,6 +634,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write cell style
|
||||||
|
*/
|
||||||
protected function _writeCellStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Cell $style = null)
|
protected function _writeCellStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Cell $style = null)
|
||||||
{
|
{
|
||||||
$bgColor = $style->getBgColor();
|
$bgColor = $style->getBgColor();
|
||||||
|
|
@ -794,6 +821,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write watermark
|
||||||
|
*/
|
||||||
protected function _writeWatermark(PHPWord_Shared_XMLWriter $objWriter = null, $image)
|
protected function _writeWatermark(PHPWord_Shared_XMLWriter $objWriter = null, $image)
|
||||||
{
|
{
|
||||||
$rId = $image->getRelationId();
|
$rId = $image->getRelationId();
|
||||||
|
|
@ -838,6 +868,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write title
|
||||||
|
*/
|
||||||
protected function _writeTitle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Title $title)
|
protected function _writeTitle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Title $title)
|
||||||
{
|
{
|
||||||
$text = htmlspecialchars($title->getText());
|
$text = htmlspecialchars($title->getText());
|
||||||
|
|
@ -880,6 +913,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->endElement();
|
$objWriter->endElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write footnote
|
||||||
|
*/
|
||||||
protected function _writeFootnote(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footnote $footnote)
|
protected function _writeFootnote(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footnote $footnote)
|
||||||
{
|
{
|
||||||
$objWriter->startElement('w:footnote');
|
$objWriter->startElement('w:footnote');
|
||||||
|
|
@ -915,6 +951,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
|
||||||
$objWriter->endElement(); // w:footnote
|
$objWriter->endElement(); // w:footnote
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write footnote reference
|
||||||
|
*/
|
||||||
protected function _writeFootnoteReference(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footnote $footnote, $withoutP = false)
|
protected function _writeFootnoteReference(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footnote $footnote, $withoutP = false)
|
||||||
{
|
{
|
||||||
if (!$withoutP) {
|
if (!$withoutP) {
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,8 @@ __Want to contribute?__ Fork us!
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
* PHP version 5.3.0 or higher
|
* PHP version 5.3.0 or higher
|
||||||
* PHP extension [php_zip](http://php.net/manual/en/book.zip.php) enabled
|
* PHP extension [ZipArchive](http://php.net/manual/en/book.zip.php)
|
||||||
|
* PHP extension [XMLWriter](http://php.net/manual/en/book.xmlwriter.php)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,9 @@ use PHPWord\Tests\TestHelperDOCX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class BaseTest
|
* Class BaseTest
|
||||||
* @package PHPWord\Tests
|
*
|
||||||
|
* @package PHPWord\Tests
|
||||||
|
* @coversDefaultClass PHPWord_Writer_Word2007_Base
|
||||||
* @runTestsInSeparateProcesses
|
* @runTestsInSeparateProcesses
|
||||||
*/
|
*/
|
||||||
class BaseTest extends \PHPUnit_Framework_TestCase
|
class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
@ -20,6 +22,54 @@ class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
TestHelperDOCX::clear();
|
TestHelperDOCX::clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testWriteText()
|
||||||
|
{
|
||||||
|
$rStyle = 'rStyle';
|
||||||
|
$pStyle = 'pStyle';
|
||||||
|
|
||||||
|
$PHPWord = new PHPWord();
|
||||||
|
$PHPWord->addFontStyle($rStyle, array('bold' => true));
|
||||||
|
$PHPWord->addParagraphStyle($pStyle, array('align' => 'justify'));
|
||||||
|
$section = $PHPWord->createSection();
|
||||||
|
$section->addText('Test', $rStyle, $pStyle);
|
||||||
|
$doc = TestHelperDOCX::getDocument($PHPWord);
|
||||||
|
|
||||||
|
$element = "/w:document/w:body/w:p/w:r/w:rPr/w:rStyle";
|
||||||
|
$this->assertEquals($rStyle, $doc->getElementAttribute($element, 'w:val'));
|
||||||
|
$element = "/w:document/w:body/w:p/w:pPr/w:pStyle";
|
||||||
|
$this->assertEquals($pStyle, $doc->getElementAttribute($element, 'w:val'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write text run
|
||||||
|
*/
|
||||||
|
public function testWriteTextRun()
|
||||||
|
{
|
||||||
|
$pStyle = 'pStyle';
|
||||||
|
$aStyle = array('align' => 'justify');
|
||||||
|
$imageSrc = join(
|
||||||
|
DIRECTORY_SEPARATOR,
|
||||||
|
array(PHPWORD_TESTS_DIR_ROOT, '_files', 'images', 'earth.jpg')
|
||||||
|
);
|
||||||
|
|
||||||
|
$PHPWord = new PHPWord();
|
||||||
|
$PHPWord->addParagraphStyle($pStyle, $aStyle);
|
||||||
|
$section = $PHPWord->createSection('Test');
|
||||||
|
$textrun = $section->createTextRun($pStyle);
|
||||||
|
$textrun->addText('Test');
|
||||||
|
$textrun->addTextBreak();
|
||||||
|
$textrun = $section->createTextRun($aStyle);
|
||||||
|
$textrun->addLink('http://test.com');
|
||||||
|
$textrun->addImage($imageSrc);
|
||||||
|
$doc = TestHelperDOCX::getDocument($PHPWord);
|
||||||
|
|
||||||
|
$parent = "/w:document/w:body/w:p";
|
||||||
|
$this->assertTrue($doc->elementExists("{$parent}/w:pPr/w:pStyle[@w:val='{$pStyle}']"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write paragraph style: Alignment
|
||||||
|
*/
|
||||||
public function testWriteParagraphStyleAlign()
|
public function testWriteParagraphStyleAlign()
|
||||||
{
|
{
|
||||||
$PHPWord = new PHPWord();
|
$PHPWord = new PHPWord();
|
||||||
|
|
@ -34,7 +84,7 @@ class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test write paragraph pagination
|
* Write paragraph style: Pagination
|
||||||
*/
|
*/
|
||||||
public function testWriteParagraphStylePagination()
|
public function testWriteParagraphStylePagination()
|
||||||
{
|
{
|
||||||
|
|
@ -63,6 +113,116 @@ class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* covers ::_writeTextStyle
|
||||||
|
*/
|
||||||
|
public function testWriteFontStyle()
|
||||||
|
{
|
||||||
|
$PHPWord = new PHPWord();
|
||||||
|
$styles['name'] = 'Verdana';
|
||||||
|
$styles['size'] = 14;
|
||||||
|
$styles['bold'] = true;
|
||||||
|
$styles['italic'] = true;
|
||||||
|
$styles['underline'] = 'dash';
|
||||||
|
$styles['strikethrough'] = true;
|
||||||
|
$styles['superScript'] = true;
|
||||||
|
$styles['color'] = 'FF0000';
|
||||||
|
$styles['fgColor'] = 'yellow';
|
||||||
|
|
||||||
|
$section = $PHPWord->createSection();
|
||||||
|
$section->addText('Test', $styles);
|
||||||
|
$doc = TestHelperDOCX::getDocument($PHPWord);
|
||||||
|
|
||||||
|
$parent = '/w:document/w:body/w:p/w:r/w:rPr';
|
||||||
|
$this->assertEquals($styles['name'], $doc->getElementAttribute("{$parent}/w:rFonts", 'w:ascii'));
|
||||||
|
$this->assertEquals($styles['size'] * 2, $doc->getElementAttribute("{$parent}/w:sz", 'w:val'));
|
||||||
|
$this->assertTrue($doc->elementExists("{$parent}/w:b"));
|
||||||
|
$this->assertTrue($doc->elementExists("{$parent}/w:i"));
|
||||||
|
$this->assertEquals($styles['underline'], $doc->getElementAttribute("{$parent}/w:u", 'w:val'));
|
||||||
|
$this->assertTrue($doc->elementExists("{$parent}/w:strike"));
|
||||||
|
$this->assertEquals('superscript', $doc->getElementAttribute("{$parent}/w:vertAlign", 'w:val'));
|
||||||
|
$this->assertEquals($styles['color'], $doc->getElementAttribute("{$parent}/w:color", 'w:val'));
|
||||||
|
$this->assertEquals($styles['fgColor'], $doc->getElementAttribute("{$parent}/w:highlight", 'w:val'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write link
|
||||||
|
*/
|
||||||
|
public function testWriteLink()
|
||||||
|
{
|
||||||
|
$PHPWord = new PHPWord();
|
||||||
|
$section = $PHPWord->createSection();
|
||||||
|
|
||||||
|
$expected = 'PHPWord';
|
||||||
|
$section->addLink('http://github.com/phpoffice/phpword', $expected);
|
||||||
|
|
||||||
|
$doc = TestHelperDOCX::getDocument($PHPWord);
|
||||||
|
$element = $doc->getElement('/w:document/w:body/w:p/w:hyperlink/w:r/w:t');
|
||||||
|
|
||||||
|
$this->assertEquals($expected, $element->nodeValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write table
|
||||||
|
*/
|
||||||
|
public function testWriteTableStyle()
|
||||||
|
{
|
||||||
|
$PHPWord = new PHPWord();
|
||||||
|
$tWidth = 120;
|
||||||
|
$rHeight = 120;
|
||||||
|
$cWidth = 120;
|
||||||
|
$tStyles["cellMarginTop"] = 120;
|
||||||
|
$tStyles["cellMarginRight"] = 120;
|
||||||
|
$tStyles["cellMarginBottom"] = 120;
|
||||||
|
$tStyles["cellMarginLeft"] = 120;
|
||||||
|
$rStyles["tblHeader"] = true;
|
||||||
|
$rStyles["cantSplit"] = true;
|
||||||
|
$cStyles["valign"] = 'top';
|
||||||
|
$cStyles["textDirection"] = 'btLr';
|
||||||
|
$cStyles["bgColor"] = 'FF0000';
|
||||||
|
$cStyles["borderTopSize"] = 120;
|
||||||
|
$cStyles["borderBottomSize"] = 120;
|
||||||
|
$cStyles["borderLeftSize"] = 120;
|
||||||
|
$cStyles["borderRightSize"] = 120;
|
||||||
|
$cStyles["borderTopColor"] = 'FF0000';
|
||||||
|
$cStyles["borderBottomColor"] = 'FF0000';
|
||||||
|
$cStyles["borderLeftColor"] = 'FF0000';
|
||||||
|
$cStyles["borderRightColor"] = 'FF0000';
|
||||||
|
|
||||||
|
$section = $PHPWord->createSection();
|
||||||
|
$table = $section->addTable($tStyles);
|
||||||
|
$table->setWidth = 100;
|
||||||
|
$table->addRow($rHeight, $rStyles);
|
||||||
|
$cell = $table->addCell($cWidth, $cStyles);
|
||||||
|
$cell->addText('Test');
|
||||||
|
$cell->addTextBreak();
|
||||||
|
$cell->addLink('http://google.com');
|
||||||
|
$cell->addListItem('Test');
|
||||||
|
$textrun = $cell->createTextRun();
|
||||||
|
$textrun->addText('Test');
|
||||||
|
|
||||||
|
$doc = TestHelperDOCX::getDocument($PHPWord);
|
||||||
|
|
||||||
|
$parent = '/w:document/w:body/w:tbl/w:tblPr/w:tblCellMar';
|
||||||
|
$this->assertEquals($tStyles['cellMarginTop'], $doc->getElementAttribute("{$parent}/w:top", 'w:w'));
|
||||||
|
$this->assertEquals($tStyles['cellMarginRight'], $doc->getElementAttribute("{$parent}/w:right", 'w:w'));
|
||||||
|
$this->assertEquals($tStyles['cellMarginBottom'], $doc->getElementAttribute("{$parent}/w:bottom", 'w:w'));
|
||||||
|
$this->assertEquals($tStyles['cellMarginLeft'], $doc->getElementAttribute("{$parent}/w:right", 'w:w'));
|
||||||
|
|
||||||
|
$parent = '/w:document/w:body/w:tbl/w:tr/w:trPr';
|
||||||
|
$this->assertEquals($rHeight, $doc->getElementAttribute("{$parent}/w:trHeight", 'w:val'));
|
||||||
|
$this->assertEquals($rStyles['tblHeader'], $doc->getElementAttribute("{$parent}/w:tblHeader", 'w:val'));
|
||||||
|
$this->assertEquals($rStyles['cantSplit'], $doc->getElementAttribute("{$parent}/w:cantSplit", 'w:val'));
|
||||||
|
|
||||||
|
$parent = '/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr';
|
||||||
|
$this->assertEquals($cWidth, $doc->getElementAttribute("{$parent}/w:tcW", 'w:w'));
|
||||||
|
$this->assertEquals($cStyles['valign'], $doc->getElementAttribute("{$parent}/w:vAlign", 'w:val'));
|
||||||
|
$this->assertEquals($cStyles['textDirection'], $doc->getElementAttribute("{$parent}/w:textDirection", 'w:val'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write cell style
|
||||||
|
*/
|
||||||
public function testWriteCellStyleCellGridSpan()
|
public function testWriteCellStyleCellGridSpan()
|
||||||
{
|
{
|
||||||
$PHPWord = new PHPWord();
|
$PHPWord = new PHPWord();
|
||||||
|
|
@ -87,6 +247,9 @@ class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->assertEquals(5, $element->getAttribute('w:val'));
|
$this->assertEquals(5, $element->getAttribute('w:val'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write image
|
||||||
|
*/
|
||||||
public function testWriteImagePosition()
|
public function testWriteImagePosition()
|
||||||
{
|
{
|
||||||
$PHPWord = new PHPWord();
|
$PHPWord = new PHPWord();
|
||||||
|
|
@ -109,6 +272,9 @@ class BaseTest extends \PHPUnit_Framework_TestCase
|
||||||
$this->assertRegExp('/position:absolute;/', $style);
|
$this->assertRegExp('/position:absolute;/', $style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write preserve text
|
||||||
|
*/
|
||||||
public function testWritePreserveText()
|
public function testWritePreserveText()
|
||||||
{
|
{
|
||||||
$PHPWord = new PHPWord();
|
$PHPWord = new PHPWord();
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,11 @@ class XmlDocument
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $path
|
* @param string $path
|
||||||
* @param string $file
|
* @param string $file
|
||||||
* @return \DOMElement
|
* @return \DOMNodeList
|
||||||
*/
|
*/
|
||||||
public function getElement($path, $file = 'word/document.xml')
|
public function getNodeList($path, $file = 'word/document.xml')
|
||||||
{
|
{
|
||||||
if ($this->dom === null || $file !== $this->file) {
|
if ($this->dom === null || $file !== $this->file) {
|
||||||
$this->getFileDom($file);
|
$this->getFileDom($file);
|
||||||
|
|
@ -60,7 +60,18 @@ class XmlDocument
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$elements = $this->xpath->query($path);
|
return $this->xpath->query($path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
* @param string $file
|
||||||
|
* @return \DOMElement
|
||||||
|
*/
|
||||||
|
public function getElement($path, $file = 'word/document.xml')
|
||||||
|
{
|
||||||
|
$elements = $this->getNodeList($path, $file);
|
||||||
|
|
||||||
return $elements->item(0);
|
return $elements->item(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,4 +90,26 @@ class XmlDocument
|
||||||
{
|
{
|
||||||
return $this->path;
|
return $this->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
* @param string $attribute
|
||||||
|
* @param string $file
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getElementAttribute($path, $attribute, $file = 'word/document.xml')
|
||||||
|
{
|
||||||
|
return $this->getElement($path, $file)->getAttribute($attribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
* @param string $file
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function elementExists($path, $file = 'word/document.xml')
|
||||||
|
{
|
||||||
|
$nodeList = $this->getNodeList($path, $file);
|
||||||
|
return !($nodeList->length == 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,21 +7,43 @@ require_once '../Classes/PHPWord.php';
|
||||||
// New Word Document
|
// New Word Document
|
||||||
echo date('H:i:s') , " Create new PHPWord object" , EOL;
|
echo date('H:i:s') , " Create new PHPWord object" , EOL;
|
||||||
$PHPWord = new PHPWord();
|
$PHPWord = new PHPWord();
|
||||||
|
$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
|
||||||
|
$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
|
||||||
|
|
||||||
// New portrait section
|
// New portrait section
|
||||||
$section = $PHPWord->createSection();
|
$section = $PHPWord->createSection();
|
||||||
|
|
||||||
// Add text elements
|
// Simple text
|
||||||
$section->addText('Hello World!');
|
$section->addText('Hello World!');
|
||||||
|
|
||||||
|
// Two text break
|
||||||
$section->addTextBreak(2);
|
$section->addTextBreak(2);
|
||||||
|
|
||||||
$section->addText('I am inline styled.', array('name'=>'Verdana', 'color'=>'006699'));
|
// Defined style
|
||||||
$section->addTextBreak(2);
|
$section->addText('I am styled by a font style definition.', 'rStyle');
|
||||||
|
$section->addText('I am styled by a paragraph style definition.', null, 'pStyle');
|
||||||
|
$section->addText('I am styled by both font and paragraph style.', 'rStyle', 'pStyle');
|
||||||
|
$section->addTextBreak();
|
||||||
|
|
||||||
$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
|
// Inline font style
|
||||||
$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
|
$fontStyle['name'] = 'Times New Roman';
|
||||||
$section->addText('I am styled by two style definitions.', 'rStyle', 'pStyle');
|
$fontStyle['size'] = 20;
|
||||||
$section->addText('I have only a paragraph style definition.', null, 'pStyle');
|
$fontStyle['bold'] = true;
|
||||||
|
$fontStyle['italic'] = true;
|
||||||
|
$fontStyle['underline'] = 'dash';
|
||||||
|
$fontStyle['strikethrough'] = true;
|
||||||
|
$fontStyle['superScript'] = true;
|
||||||
|
$fontStyle['color'] = 'FF0000';
|
||||||
|
$fontStyle['fgColor'] = 'yellow';
|
||||||
|
$section->addText('I am inline styled.', $fontStyle);
|
||||||
|
$section->addTextBreak();
|
||||||
|
|
||||||
|
// Link
|
||||||
|
$section->addLink('http://www.google.com', null, 'NLink');
|
||||||
|
$section->addTextBreak();
|
||||||
|
|
||||||
|
// Image
|
||||||
|
$section->addImage('old/_earth.jpg', array('width'=>18, 'height'=>18));
|
||||||
|
|
||||||
// Save file
|
// Save file
|
||||||
$name = basename(__FILE__, '.php');
|
$name = basename(__FILE__, '.php');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue