$value) { if ($key === 'line-height') { null; } elseif (substr($key, 0, 1) !== '_') { $key = '_' . $key; } $this->setStyleValue($key, $value); } return $this; } /** * Set Style value * * @param string $key * @param mixed $value */ public function setStyleValue($key, $value) { if ($key == '_indent' || $key == '_hanging') { $value = $value * 720; } elseif ($key == '_spacing') { $value += 240; // because line height of 1 matches 240 twips } elseif ($key === 'line-height') { $this->setLineHeight($value); return; } $this->$key = $value; $method = 'set' . substr($key, 1); if (method_exists($this, $method)) { $this->$method($value); } } /** * Get Paragraph Alignment * * @return string */ public function getAlign() { return $this->_align; } /** * Set Paragraph Alignment * * @param string $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setAlign($pValue = null) { if (strtolower($pValue) == 'justify') { // justify becames both $pValue = 'both'; } $this->_align = $pValue; return $this; } /** * Get Space before Paragraph * * @return string */ public function getSpaceBefore() { return $this->_spaceBefore; } /** * Set Space before Paragraph * * @param int $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setSpaceBefore($pValue = null) { $this->_spaceBefore = $pValue; return $this; } /** * Get Space after Paragraph * * @return string */ public function getSpaceAfter() { return $this->_spaceAfter; } /** * Set Space after Paragraph * * @param int $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setSpaceAfter($pValue = null) { $this->_spaceAfter = $pValue; return $this; } /** * Get Spacing between breaks * * @return int */ public function getSpacing() { return $this->_spacing; } /** * Set Spacing between breaks * * @param int $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setSpacing($pValue = null) { $this->_spacing = $pValue; return $this; } /** * Get indentation * * @return int */ public function getIndent() { return $this->_indent; } /** * Set indentation * * @param int $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setIndent($pValue = null) { $this->_indent = $pValue; return $this; } /** * Get hanging * * @return int */ public function getHanging() { return $this->_hanging; } /** * Set hanging * * @param int $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setHanging($pValue = null) { $this->_hanging = $pValue; return $this; } /** * Get tabs * * @return PhpOffice\PhpWord\Style\Tabs */ public function getTabs() { return $this->_tabs; } /* * Set tabs * * @param array $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setTabs($pValue = null) { if (is_array($pValue)) { $this->_tabs = new Tabs($pValue); } return $this; } /** * Get parent style ID * * @return string */ public function getBasedOn() { return $this->_basedOn; } /** * Set parent style ID * * @param string $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setBasedOn($pValue = 'Normal') { $this->_basedOn = $pValue; return $this; } /** * Get style for next paragraph * * @return string */ public function getNext() { return $this->_next; } /** * Set style for next paragraph * * @param string $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setNext($pValue = null) { $this->_next = $pValue; return $this; } /** * Get allow first/last line to display on a separate page setting * * @return bool */ public function getWidowControl() { return $this->_widowControl; } /** * Set keep paragraph with next paragraph setting * * @param bool $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setWidowControl($pValue = true) { if (!is_bool($pValue)) { $pValue = true; } $this->_widowControl = $pValue; return $this; } /** * Get keep paragraph with next paragraph setting * * @return bool */ public function getKeepNext() { return $this->_keepNext; } /** * Set keep paragraph with next paragraph setting * * @param bool $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setKeepNext($pValue = false) { if (!is_bool($pValue)) { $pValue = false; } $this->_keepNext = $pValue; return $this; } /** * Get keep all lines on one page setting * * @return bool */ public function getKeepLines() { return $this->_keepLines; } /** * Set keep all lines on one page setting * * @param bool $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setKeepLines($pValue = false) { if (!is_bool($pValue)) { $pValue = false; } $this->_keepLines = $pValue; return $this; } /** * Get start paragraph on next page setting * * @return bool */ public function getPageBreakBefore() { return $this->_pageBreakBefore; } /** * Set start paragraph on next page setting * * @param bool $pValue * @return PhpOffice\PhpWord\Style\Paragraph */ public function setPageBreakBefore($pValue = false) { if (!is_bool($pValue)) { $pValue = false; } $this->_pageBreakBefore = $pValue; return $this; } /** * Set the line height * * @param int|float|string $lineHeight * @return $this * @throws InvalidStyleException */ public function setLineHeight($lineHeight) { if (is_string($lineHeight)) { $lineHeight = floatval(preg_replace('/[^0-9\.\,]/', '', $lineHeight)); } if ((!is_integer($lineHeight) && !is_float($lineHeight)) || !$lineHeight) { throw new InvalidStyleException('Line height must be a valid number'); } $this->lineHeight = $lineHeight; $this->setSpacing($lineHeight * self::LINE_HEIGHT); return $this; } /** * @return int|float */ public function getLineHeight() { return $this->lineHeight; } }