Merge branch 'development' into develop
Conflicts: tests/PhpWord/Writer/Word2007/Part/SettingsTest.php
This commit is contained in:
commit
a6c6f9faa1
|
|
@ -12,6 +12,7 @@ composer.lock
|
|||
composer.phar
|
||||
vendor
|
||||
/report
|
||||
/build
|
||||
/samples/resources
|
||||
/samples/results
|
||||
/.settings
|
||||
|
|
|
|||
|
|
@ -109,8 +109,8 @@ Zip class
|
|||
By default, PHPWord uses `Zip extension <http://php.net/manual/en/book.zip.php>`__
|
||||
to deal with ZIP compressed archives and files inside them. If you can't have
|
||||
Zip extension installed on your server, you can use pure PHP library
|
||||
alternative, `PclZip <http://www.phpconcept.net/pclzip/>`__, which
|
||||
included with PHPWord.
|
||||
alternative, `PclZip <http://www.phpconcept.net/pclzip/>`__, which is
|
||||
included in PHPWord.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
|
|
@ -130,6 +130,17 @@ To turn it on set ``outputEscapingEnabled`` option to ``true`` in your PHPWord c
|
|||
|
||||
\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
|
||||
|
||||
Spelling and grammatical checks
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
By default spelling and grammatical errors are shown as soon as you open a word document.
|
||||
For big documents this can slow down the opening of the document. You can hide the spelling and/or grammatical errors with:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
\PhpOffice\PhpWord\Settings::setSpellingErrorsHidden(true);
|
||||
\PhpOffice\PhpWord\Settings::setGrammaticalErrorsHidden(true);
|
||||
|
||||
Default font
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ See ``\PhpOffice\PhpWord\SimpleType\Jc`` class for the details.
|
|||
- ``spaceAfter``. Space after paragraph.
|
||||
- ``tabs``. Set of custom tab stops.
|
||||
- ``widowControl``. Allow first/last line to display on a separate page, *true* or *false*.
|
||||
- ``contextualSpacing``. Ignore Spacing Above and Below When Using Identical Styles, *true* or *false*.
|
||||
|
||||
.. _table-style:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
use PhpOffice\PhpWord\SimpleType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\ComplexType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
include_once 'Sample_Header.php';
|
||||
|
||||
|
|
@ -50,7 +51,7 @@ $footnote = $section->addFootnote();
|
|||
$footnote->addText('The reference for this is wrapped in its own line');
|
||||
|
||||
$footnoteProperties = new FootnoteProperties();
|
||||
$footnoteProperties->setNumFmt(FootnoteProperties::NUMBER_FORMAT_UPPER_ROMAN);
|
||||
$footnoteProperties->setNumFmt(NumberFormat::DECIMAL_ENCLOSED_CIRCLE);
|
||||
$section->setFootnoteProperties($footnoteProperties);
|
||||
|
||||
// Save file
|
||||
|
|
|
|||
|
|
@ -107,22 +107,22 @@ $table->addCell(null, $cellRowContinue);
|
|||
$section->addPageBreak();
|
||||
$section->addText('Table with colspan and rowspan', $header);
|
||||
|
||||
$styleTable = ['borderSize' => 6, 'borderColor' => '999999'];
|
||||
$styleTable = array('borderSize' => 6, 'borderColor' => '999999');
|
||||
$phpWord->addTableStyle('Colspan Rowspan', $styleTable);
|
||||
$table = $section->addTable('Colspan Rowspan');
|
||||
|
||||
$row = $table->addRow();
|
||||
|
||||
$row->addCell(null, ['vMerge' => 'restart'])->addText('A');
|
||||
$row->addCell(null, ['gridSpan' => 2, 'vMerge' => 'restart',])->addText('B');
|
||||
$row->addCell(null, array('vMerge' => 'restart'))->addText('A');
|
||||
$row->addCell(null, array('gridSpan' => 2, 'vMerge' => 'restart',))->addText('B');
|
||||
$row->addCell()->addText('1');
|
||||
|
||||
$row = $table->addRow();
|
||||
$row->addCell(null, ['vMerge' => 'continue']);
|
||||
$row->addCell(null, ['vMerge' => 'continue','gridSpan' => 2,]);
|
||||
$row->addCell(null, array('vMerge' => 'continue'));
|
||||
$row->addCell(null, array('vMerge' => 'continue','gridSpan' => 2,));
|
||||
$row->addCell()->addText('2');
|
||||
$row = $table->addRow();
|
||||
$row->addCell(null, ['vMerge' => 'continue']);
|
||||
$row->addCell(null, array('vMerge' => 'continue'));
|
||||
$row->addCell()->addText('C');
|
||||
$row->addCell()->addText('D');
|
||||
$row->addCell()->addText('3');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,9 @@
|
|||
* @copyright 2010-2016 PHPWord contributors
|
||||
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
|
||||
*/
|
||||
namespace PhpOffice\PhpWord\SimpleType;
|
||||
namespace PhpOffice\PhpWord\ComplexType;
|
||||
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
/**
|
||||
* Footnote properties
|
||||
|
|
@ -28,17 +30,6 @@ final class FootnoteProperties
|
|||
const RESTART_NUMBER_EACH_SECTION = 'eachSect';
|
||||
const RESTART_NUMBER_EACH_PAGE = 'eachPage';
|
||||
|
||||
const NUMBER_FORMAT_DECIMAL = 'decimal';
|
||||
const NUMBER_FORMAT_UPPER_ROMAN = 'upperRoman';
|
||||
const NUMBER_FORMAT_LOWER_ROMAN = 'lowerRoman';
|
||||
const NUMBER_FORMAT_UPPER_LETTER = 'upperLetter';
|
||||
const NUMBER_FORMAT_LOWER_LETTER = 'lowerLetter';
|
||||
const NUMBER_FORMAT_ORDINAL = 'ordinal';
|
||||
const NUMBER_FORMAT_CARDINAL_TEXT = 'cardinalText';
|
||||
const NUMBER_FORMAT_ORDINAL_TEXT = 'ordinalText';
|
||||
const NUMBER_FORMAT_NONE = 'none';
|
||||
const NUMBER_FORMAT_BULLET = 'bullet';
|
||||
|
||||
const POSITION_PAGE_BOTTOM = 'pageBottom';
|
||||
const POSITION_BENEATH_TEXT = 'beneathText';
|
||||
const POSITION_SECTION_END = 'sectEnd';
|
||||
|
|
@ -52,7 +43,7 @@ final class FootnoteProperties
|
|||
private $pos;
|
||||
|
||||
/**
|
||||
* Footnote Numbering Format
|
||||
* Footnote Numbering Format w:numFmt, one of PhpOffice\PhpWord\SimpleType\NumberFormat
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
|
|
@ -61,7 +52,7 @@ final class FootnoteProperties
|
|||
/**
|
||||
* Footnote and Endnote Numbering Starting Value
|
||||
*
|
||||
* @var decimal
|
||||
* @var double
|
||||
*/
|
||||
private $numStart;
|
||||
|
||||
|
|
@ -72,11 +63,23 @@ final class FootnoteProperties
|
|||
*/
|
||||
private $numRestart;
|
||||
|
||||
/**
|
||||
* Get the Footnote Positioning Location
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPos()
|
||||
{
|
||||
return $this->pos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Footnote Positioning Location (pageBottom, beneathText, sectEnd, docEnd)
|
||||
*
|
||||
* @param string $pos
|
||||
* @throws \InvalidArgumentException
|
||||
* @return self
|
||||
*/
|
||||
public function setPos($pos)
|
||||
{
|
||||
$position = array(
|
||||
|
|
@ -91,50 +94,71 @@ final class FootnoteProperties
|
|||
} else {
|
||||
throw new \InvalidArgumentException("Invalid value, on of " . implode(', ', $position) . " possible");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Footnote Numbering Format
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNumFmt()
|
||||
{
|
||||
return $this->numFmt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Footnote Numbering Format
|
||||
*
|
||||
* @param string $numFmt One of NumberFormat
|
||||
* @return self
|
||||
*/
|
||||
public function setNumFmt($numFmt)
|
||||
{
|
||||
$numberFormat = array(
|
||||
self::NUMBER_FORMAT_DECIMAL,
|
||||
self::NUMBER_FORMAT_UPPER_ROMAN,
|
||||
self::NUMBER_FORMAT_LOWER_ROMAN,
|
||||
self::NUMBER_FORMAT_UPPER_LETTER,
|
||||
self::NUMBER_FORMAT_LOWER_LETTER,
|
||||
self::NUMBER_FORMAT_ORDINAL,
|
||||
self::NUMBER_FORMAT_CARDINAL_TEXT,
|
||||
self::NUMBER_FORMAT_ORDINAL_TEXT,
|
||||
self::NUMBER_FORMAT_NONE,
|
||||
self::NUMBER_FORMAT_BULLET
|
||||
);
|
||||
|
||||
if (in_array($numFmt, $numberFormat)) {
|
||||
NumberFormat::validate($numFmt);
|
||||
$this->numFmt = $numFmt;
|
||||
} else {
|
||||
throw new \InvalidArgumentException("Invalid value, on of " . implode(', ', $numberFormat) . " possible");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Footnote Numbering Format
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function getNumStart()
|
||||
{
|
||||
return $this->numStart;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Footnote Numbering Format
|
||||
*
|
||||
* @param double $numStart
|
||||
* @return self
|
||||
*/
|
||||
public function setNumStart($numStart)
|
||||
{
|
||||
$this->numStart = $numStart;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Footnote and Endnote Numbering Starting Value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNumRestart()
|
||||
{
|
||||
return $this->numRestart;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Footnote and Endnote Numbering Starting Value (continuous, eachSect, eachPage)
|
||||
*
|
||||
* @param string $numRestart
|
||||
* @throws \InvalidArgumentException
|
||||
* @return self
|
||||
*/
|
||||
public function setNumRestart($numRestart)
|
||||
{
|
||||
$restartNumbers = array(
|
||||
|
|
@ -148,5 +172,6 @@ final class FootnoteProperties
|
|||
} else {
|
||||
throw new \InvalidArgumentException("Invalid value, on of " . implode(', ', $restartNumbers) . " possible");
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
namespace PhpOffice\PhpWord\Element;
|
||||
|
||||
use PhpOffice\PhpWord\ComplexType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\Style\Section as SectionStyle;
|
||||
use PhpOffice\PhpWord\SimpleType\FootnoteProperties;
|
||||
|
||||
class Section extends AbstractContainer
|
||||
{
|
||||
|
|
|
|||
|
|
@ -167,14 +167,11 @@ abstract class AbstractPart
|
|||
$parent->addTextBreak(null, $paragraphStyle);
|
||||
} else {
|
||||
$nodes = $xmlReader->getElements('*', $domNode);
|
||||
if ($runLinkCount > 1) {
|
||||
$parent = $parent->addTextRun($paragraphStyle);
|
||||
}
|
||||
foreach ($nodes as $node) {
|
||||
$this->readRun(
|
||||
$xmlReader,
|
||||
$node,
|
||||
($runLinkCount > 1) ? $parent->addTextRun($paragraphStyle) : $parent,
|
||||
$docPart,
|
||||
$paragraphStyle
|
||||
);
|
||||
$this->readRun($xmlReader, $node, $parent, $docPart, $paragraphStyle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,10 +113,10 @@ class Document extends AbstractPart
|
|||
'orientation' => array(self::READ_VALUE, 'w:pgSz', 'w:orient'),
|
||||
'colsNum' => array(self::READ_VALUE, 'w:cols', 'w:num'),
|
||||
'colsSpace' => array(self::READ_VALUE, 'w:cols', 'w:space'),
|
||||
'topMargin' => array(self::READ_VALUE, 'w:pgMar', 'w:top'),
|
||||
'leftMargin' => array(self::READ_VALUE, 'w:pgMar', 'w:left'),
|
||||
'bottomMargin' => array(self::READ_VALUE, 'w:pgMar', 'w:bottom'),
|
||||
'rightMargin' => array(self::READ_VALUE, 'w:pgMar', 'w:right'),
|
||||
'marginTop' => array(self::READ_VALUE, 'w:pgMar', 'w:top'),
|
||||
'marginLeft' => array(self::READ_VALUE, 'w:pgMar', 'w:left'),
|
||||
'marginBottom' => array(self::READ_VALUE, 'w:pgMar', 'w:bottom'),
|
||||
'marginRight' => array(self::READ_VALUE, 'w:pgMar', 'w:right'),
|
||||
'headerHeight' => array(self::READ_VALUE, 'w:pgMar', 'w:header'),
|
||||
'footerHeight' => array(self::READ_VALUE, 'w:pgMar', 'w:footer'),
|
||||
'gutter' => array(self::READ_VALUE, 'w:pgMar', 'w:gutter'),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
namespace PhpOffice\PhpWord\Shared;
|
||||
|
||||
abstract class AbstractEnum
|
||||
{
|
||||
|
||||
private static $constCacheArray = null;
|
||||
|
||||
private static function getConstants()
|
||||
{
|
||||
if (self::$constCacheArray == null) {
|
||||
self::$constCacheArray = array();
|
||||
}
|
||||
$calledClass = get_called_class();
|
||||
if (! array_key_exists($calledClass, self::$constCacheArray)) {
|
||||
$reflect = new \ReflectionClass($calledClass);
|
||||
self::$constCacheArray[$calledClass] = $reflect->getConstants();
|
||||
}
|
||||
return self::$constCacheArray[$calledClass];
|
||||
}
|
||||
|
||||
public static function values()
|
||||
{
|
||||
return array_values(self::getConstants());
|
||||
}
|
||||
|
||||
public static function validate($value)
|
||||
{
|
||||
$values = array_values(self::getConstants());
|
||||
if (!in_array($value, $values, true)) {
|
||||
$calledClass = get_called_class();
|
||||
throw new \InvalidArgumentException("$value is not a valid value for $calledClass, possible values are " . implode(', ', $values));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is part of PHPWord - A pure PHP library for reading and writing
|
||||
* word processing documents.
|
||||
*
|
||||
* PHPWord is free software distributed under the terms of the GNU Lesser
|
||||
* General Public License version 3 as published by the Free Software Foundation.
|
||||
*
|
||||
* For the full copyright and license information, please read the LICENSE
|
||||
* file that was distributed with this source code. For the full list of
|
||||
* contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
|
||||
*
|
||||
* @link https://github.com/PHPOffice/PHPWord
|
||||
* @copyright 2010-2016 PHPWord contributors
|
||||
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
|
||||
*/
|
||||
|
||||
namespace PhpOffice\PhpWord\SimpleType;
|
||||
|
||||
use PhpOffice\PhpWord\Shared\AbstractEnum;
|
||||
|
||||
/**
|
||||
* Numbering Format.
|
||||
*
|
||||
* @since 0.14.0
|
||||
*
|
||||
* @see http://www.datypic.com/sc/ooxml/t-w_ST_NumberFormat.html.
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
final class NumberFormat extends AbstractEnum
|
||||
{
|
||||
//Decimal Numbers
|
||||
const DECIMAL = 'decimal';
|
||||
//Uppercase Roman Numerals
|
||||
const UPPER_ROMAN = 'upperRoman';
|
||||
//Lowercase Roman Numerals
|
||||
const LOWER_ROMAN = 'lowerRoman';
|
||||
//Uppercase Latin Alphabet
|
||||
const UPPER_LETTER = 'upperLetter';
|
||||
//Lowercase Latin Alphabet
|
||||
const LOWER_LETTER = 'lowerLetter';
|
||||
//Ordinal
|
||||
const ORDINAL = 'ordinal';
|
||||
//Cardinal Text
|
||||
const CARDINAL_TEXT = 'cardinalText';
|
||||
//Ordinal Text
|
||||
const ORDINAL_TEXT = 'ordinalText';
|
||||
//Hexadecimal Numbering
|
||||
const HEX = 'hex';
|
||||
//Chicago Manual of Style
|
||||
const CHICAGO = 'chicago';
|
||||
//Ideographs
|
||||
const IDEOGRAPH_DIGITAL = 'ideographDigital';
|
||||
//Japanese Counting System
|
||||
const JAPANESE_COUNTING = 'japaneseCounting';
|
||||
//AIUEO Order Hiragana
|
||||
const AIUEO = 'aiueo';
|
||||
//Iroha Ordered Katakana
|
||||
const IROHA = 'iroha';
|
||||
//Double Byte Arabic Numerals
|
||||
const DECIMAL_FULL_WIDTH = 'decimalFullWidth';
|
||||
//Single Byte Arabic Numerals
|
||||
const DECIMAL_HALF_WIDTH = 'decimalHalfWidth';
|
||||
//Japanese Legal Numbering
|
||||
const JAPANESE_LEGAL = 'japaneseLegal';
|
||||
//Japanese Digital Ten Thousand Counting System
|
||||
const JAPANESE_DIGITAL_TEN_THOUSAND = 'japaneseDigitalTenThousand';
|
||||
//Decimal Numbers Enclosed in a Circle
|
||||
const DECIMAL_ENCLOSED_CIRCLE = 'decimalEnclosedCircle';
|
||||
//Double Byte Arabic Numerals Alternate
|
||||
const DECIMAL_FULL_WIDTH2 = 'decimalFullWidth2';
|
||||
//Full-Width AIUEO Order Hiragana
|
||||
const AIUEO_FULL_WIDTH = 'aiueoFullWidth';
|
||||
//Full-Width Iroha Ordered Katakana
|
||||
const IROHA_FULL_WIDTH = 'irohaFullWidth';
|
||||
//Initial Zero Arabic Numerals
|
||||
const DECIMAL_ZERO = 'decimalZero';
|
||||
//Bullet
|
||||
const BULLET = 'bullet';
|
||||
//Korean Ganada Numbering
|
||||
const GANADA = 'ganada';
|
||||
//Korean Chosung Numbering
|
||||
const CHOSUNG = 'chosung';
|
||||
//Decimal Numbers Followed by a Period
|
||||
const DECIMAL_ENCLOSED_FULL_STOP = 'decimalEnclosedFullstop';
|
||||
//Decimal Numbers Enclosed in Parenthesis
|
||||
const DECIMAL_ENCLOSED_PAREN = 'decimalEnclosedParen';
|
||||
//Decimal Numbers Enclosed in a Circle
|
||||
const DECIMAL_ENCLOSED_CIRCLE_CHINESE = 'decimalEnclosedCircleChinese';
|
||||
//Ideographs Enclosed in a Circle
|
||||
const IDEOGRAPHENCLOSEDCIRCLE = 'ideographEnclosedCircle';
|
||||
//Traditional Ideograph Format
|
||||
const IDEOGRAPH_TRADITIONAL = 'ideographTraditional';
|
||||
//Zodiac Ideograph Format
|
||||
const IDEOGRAPH_ZODIAC = 'ideographZodiac';
|
||||
//Traditional Zodiac Ideograph Format
|
||||
const IDEOGRAPH_ZODIAC_TRADITIONAL = 'ideographZodiacTraditional';
|
||||
//Taiwanese Counting System
|
||||
const TAIWANESE_COUNTING = 'taiwaneseCounting';
|
||||
//Traditional Legal Ideograph Format
|
||||
const IDEOGRAPH_LEGAL_TRADITIONAL = 'ideographLegalTraditional';
|
||||
//Taiwanese Counting Thousand System
|
||||
const TAIWANESE_COUNTING_THOUSAND = 'taiwaneseCountingThousand';
|
||||
//Taiwanese Digital Counting System
|
||||
const TAIWANESE_DIGITAL = 'taiwaneseDigital';
|
||||
//Chinese Counting System
|
||||
const CHINESE_COUNTING = 'chineseCounting';
|
||||
//Chinese Legal Simplified Format
|
||||
const CHINESE_LEGAL_SIMPLIFIED = 'chineseLegalSimplified';
|
||||
//Chinese Counting Thousand System
|
||||
const CHINESE_COUNTING_THOUSAND = 'chineseCountingThousand';
|
||||
//Korean Digital Counting System
|
||||
const KOREAN_DIGITAL = 'koreanDigital';
|
||||
//Korean Counting System
|
||||
const KOREAN_COUNTING = 'koreanCounting';
|
||||
//Korean Legal Numbering
|
||||
const KOREAN_LEGAL = 'koreanLegal';
|
||||
//Korean Digital Counting System Alternate
|
||||
const KOREAN_DIGITAL2 = 'koreanDigital2';
|
||||
//Vietnamese Numerals
|
||||
const VIETNAMESE_COUNTING = 'vietnameseCounting';
|
||||
//Lowercase Russian Alphabet
|
||||
const RUSSIAN_LOWER = 'russianLower';
|
||||
//Uppercase Russian Alphabet
|
||||
const RUSSIAN_UPPER = 'russianUpper';
|
||||
//No Numbering
|
||||
const NONE = 'none';
|
||||
//Number With Dashes
|
||||
const NUMBER_IN_DASH = 'numberInDash';
|
||||
//Hebrew Numerals
|
||||
const HEBREW1 = 'hebrew1';
|
||||
//Hebrew Alphabet
|
||||
const HEBREW2 = 'hebrew2';
|
||||
//Arabic Alphabet
|
||||
const ARABIC_ALPHA = 'arabicAlpha';
|
||||
//Arabic Abjad Numerals
|
||||
const ARABIC_ABJAD = 'arabicAbjad';
|
||||
//Hindi Vowels
|
||||
const HINDI_VOWELS = 'hindiVowels';
|
||||
//Hindi Consonants
|
||||
const HINDI_CONSONANTS = 'hindiConsonants';
|
||||
//Hindi Numbers
|
||||
const HINDI_NUMBERS = 'hindiNumbers';
|
||||
//Hindi Counting System
|
||||
const HINDI_COUNTING = 'hindiCounting';
|
||||
//Thai Letters
|
||||
const THAI_LETTERS = 'thaiLetters';
|
||||
//Thai Numerals
|
||||
const THAI_NUMBERS = 'thaiNumbers';
|
||||
//Thai Counting System
|
||||
const THAI_COUNTING = 'thaiCounting';
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
namespace PhpOffice\PhpWord\Style;
|
||||
|
||||
use PhpOffice\PhpWord\SimpleType\Jc;
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
/**
|
||||
* Numbering level definition
|
||||
|
|
@ -43,7 +44,7 @@ class NumberingLevel extends AbstractStyle
|
|||
private $start = 1;
|
||||
|
||||
/**
|
||||
* Numbering format bullet|decimal|upperRoman|lowerRoman|upperLetter|lowerLetter
|
||||
* Numbering format w:numFmt, one of PhpOffice\PhpWord\SimpleType\NumberFormat
|
||||
*
|
||||
* @var string
|
||||
* @link http://www.schemacentral.com/sc/ooxml/t-w_ST_NumberFormat.html
|
||||
|
|
@ -67,7 +68,7 @@ class NumberingLevel extends AbstractStyle
|
|||
private $pStyle;
|
||||
|
||||
/**
|
||||
* Content between numbering symbol and paragraph text
|
||||
* Content between numbering symbol and paragraph text w:suff
|
||||
*
|
||||
* @var string tab|space|nothing
|
||||
* @link http://www.schemacentral.com/sc/ooxml/e-w_suff-1.html
|
||||
|
|
@ -83,7 +84,9 @@ class NumberingLevel extends AbstractStyle
|
|||
private $text;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* Justification, w:lvlJc
|
||||
*
|
||||
* @var string, one of PhpOffice\PhpWord\SimpleType\Jc
|
||||
*/
|
||||
private $alignment = '';
|
||||
|
||||
|
|
@ -185,13 +188,12 @@ class NumberingLevel extends AbstractStyle
|
|||
*/
|
||||
public function setFormat($value)
|
||||
{
|
||||
$enum = array('bullet', 'decimal', 'upperRoman', 'lowerRoman', 'upperLetter', 'lowerLetter');
|
||||
$this->format = $this->setEnumVal($value, $enum, $this->format);
|
||||
$this->format = $this->setEnumVal($value, NumberFormat::values(), $this->format);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get start
|
||||
* Get restart
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
|
|
@ -201,7 +203,7 @@ class NumberingLevel extends AbstractStyle
|
|||
}
|
||||
|
||||
/**
|
||||
* Set start
|
||||
* Set restart
|
||||
*
|
||||
* @param integer $value
|
||||
* @return self
|
||||
|
|
|
|||
|
|
@ -158,6 +158,13 @@ class Paragraph extends Border
|
|||
*/
|
||||
private $shading;
|
||||
|
||||
/**
|
||||
* Ignore Spacing Above and Below When Using Identical Styles
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $contextualSpacing = false;
|
||||
|
||||
/**
|
||||
* Set Style value
|
||||
*
|
||||
|
|
@ -208,6 +215,7 @@ class Paragraph extends Border
|
|||
),
|
||||
'tabs' => $this->getTabs(),
|
||||
'shading' => $this->getShading(),
|
||||
'contextualSpacing' => $this->hasContextualSpacing(),
|
||||
);
|
||||
|
||||
return $styles;
|
||||
|
|
@ -731,4 +739,27 @@ class Paragraph extends Border
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get contextualSpacing
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasContextualSpacing()
|
||||
{
|
||||
return $this->contextualSpacing;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set contextualSpacing
|
||||
*
|
||||
* @param bool $contextualSpacing
|
||||
* @return self
|
||||
*/
|
||||
public function setContextualSpacing($contextualSpacing)
|
||||
{
|
||||
$this->contextualSpacing = $contextualSpacing;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,11 +37,7 @@ class Image extends Text
|
|||
if (!$this->element instanceof ImageElement) {
|
||||
return '';
|
||||
}
|
||||
/** @var \PhpOffice\PhpWord\Writer\HTML $parentWriter Type hint */
|
||||
$parentWriter = $this->parentWriter;
|
||||
|
||||
$content = '';
|
||||
if (!$parentWriter->isPdf()) {
|
||||
$imageData = $this->element->getImageStringData(true);
|
||||
if ($imageData !== null) {
|
||||
$styleWriter = new ImageStyleWriter($this->element->getStyle());
|
||||
|
|
@ -52,7 +48,6 @@ class Image extends Text
|
|||
$content .= "<img border=\"0\" style=\"{$style}\" src=\"{$imageData}\"/>";
|
||||
$content .= $this->writeClosing();
|
||||
}
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ use PhpOffice\Common\XMLWriter;
|
|||
use PhpOffice\PhpWord\Element\Section;
|
||||
use PhpOffice\PhpWord\Writer\Word2007\Element\Container;
|
||||
use PhpOffice\PhpWord\Writer\Word2007\Style\Section as SectionStyleWriter;
|
||||
use PhpOffice\PhpWord\SimpleType\FootnoteProperties;
|
||||
|
||||
/**
|
||||
* Word2007 document part writer: word/document.xml
|
||||
|
|
|
|||
|
|
@ -107,6 +107,9 @@ class Paragraph extends AbstractStyle
|
|||
$xmlWriter->endElement();
|
||||
}
|
||||
|
||||
//Paragraph contextualSpacing
|
||||
$xmlWriter->writeElementIf($styles['contextualSpacing'] === true, 'w:contextualSpacing');
|
||||
|
||||
// Child style: alignment, indentation, spacing, and shading
|
||||
$this->writeChildStyle($xmlWriter, 'Indentation', $styles['indentation']);
|
||||
$this->writeChildStyle($xmlWriter, 'Spacing', $styles['spacing']);
|
||||
|
|
|
|||
|
|
@ -15,9 +15,10 @@
|
|||
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
|
||||
*/
|
||||
|
||||
namespace PhpOffice\PhpWord\SimpleType;
|
||||
namespace PhpOffice\PhpWord\ComplexType;
|
||||
|
||||
use PhpOffice\PhpWord\SimpleType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\ComplexType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
/**
|
||||
* Test class for PhpOffice\PhpWord\SimpleType\FootnoteProperties
|
||||
|
|
@ -34,12 +35,12 @@ class FootnotePropertiesTest extends \PHPUnit_Framework_TestCase
|
|||
{
|
||||
$footnoteProp = new FootnoteProperties();
|
||||
$footnoteProp->setPos(FootnoteProperties::POSITION_DOC_END);
|
||||
$footnoteProp->setNumFmt(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN);
|
||||
$footnoteProp->setNumFmt(NumberFormat::LOWER_ROMAN);
|
||||
$footnoteProp->setNumStart(2);
|
||||
$footnoteProp->setNumRestart(FootnoteProperties::RESTART_NUMBER_EACH_PAGE);
|
||||
|
||||
$this->assertEquals(FootnoteProperties::POSITION_DOC_END, $footnoteProp->getPos());
|
||||
$this->assertEquals(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN, $footnoteProp->getNumFmt());
|
||||
$this->assertEquals(NumberFormat::LOWER_ROMAN, $footnoteProp->getNumFmt());
|
||||
$this->assertEquals(2, $footnoteProp->getNumStart());
|
||||
$this->assertEquals(FootnoteProperties::RESTART_NUMBER_EACH_PAGE, $footnoteProp->getNumRestart());
|
||||
}
|
||||
|
|
@ -52,7 +53,7 @@ class FootnotePropertiesTest extends \PHPUnit_Framework_TestCase
|
|||
public function testWrongPos()
|
||||
{
|
||||
$footnoteProp= new FootnoteProperties();
|
||||
$footnoteProp->setPos(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN);
|
||||
$footnoteProp->setPos(NumberFormat::LOWER_ROMAN);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -74,6 +75,6 @@ class FootnotePropertiesTest extends \PHPUnit_Framework_TestCase
|
|||
public function testWrongNumRestart()
|
||||
{
|
||||
$footnoteProp= new FootnoteProperties();
|
||||
$footnoteProp->setNumRestart(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN);
|
||||
$footnoteProp->setNumRestart(NumberFormat::LOWER_ROMAN);
|
||||
}
|
||||
}
|
||||
|
|
@ -47,9 +47,10 @@ class ParagraphTest extends \PHPUnit_Framework_TestCase
|
|||
'keepNext' => false,
|
||||
'keepLines' => false,
|
||||
'pageBreakBefore' => false,
|
||||
'contextualSpacing' => false,
|
||||
);
|
||||
foreach ($attributes as $key => $default) {
|
||||
$get = "get{$key}";
|
||||
$get = $this->findGetter($key, $default, $object);
|
||||
$object->setStyleValue($key, null);
|
||||
$this->assertEquals($default, $object->$get());
|
||||
$object->setStyleValue($key, '');
|
||||
|
|
@ -78,9 +79,10 @@ class ParagraphTest extends \PHPUnit_Framework_TestCase
|
|||
'keepNext' => true,
|
||||
'keepLines' => true,
|
||||
'pageBreakBefore' => true,
|
||||
'contextualSpacing' => true,
|
||||
);
|
||||
foreach ($attributes as $key => $value) {
|
||||
$get = "get{$key}";
|
||||
$get = $this->findGetter($key, $value, $object);
|
||||
$object->setStyleValue("$key", $value);
|
||||
if ('indent' == $key || 'hanging' == $key) {
|
||||
$value = $value * 720;
|
||||
|
|
@ -91,6 +93,18 @@ class ParagraphTest extends \PHPUnit_Framework_TestCase
|
|||
}
|
||||
}
|
||||
|
||||
private function findGetter($key, $value, $object)
|
||||
{
|
||||
if (is_bool($value)) {
|
||||
if (method_exists($object, "is{$key}")) {
|
||||
return "is{$key}";
|
||||
} else if (method_exists($object, "has{$key}")) {
|
||||
return "has{$key}";
|
||||
}
|
||||
}
|
||||
return "get{$key}";
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get null style value
|
||||
*/
|
||||
|
|
@ -100,7 +114,7 @@ class ParagraphTest extends \PHPUnit_Framework_TestCase
|
|||
|
||||
$attributes = array('spacing', 'indent', 'hanging', 'spaceBefore', 'spaceAfter');
|
||||
foreach ($attributes as $key) {
|
||||
$get = "get{$key}";
|
||||
$get = $this->findGetter($key, null, $object);
|
||||
$this->assertNull($object->$get());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,11 +16,12 @@
|
|||
*/
|
||||
namespace PhpOffice\PhpWord\Writer\Word2007\Part;
|
||||
|
||||
use PhpOffice\PhpWord\ComplexType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\PhpWord;
|
||||
use PhpOffice\PhpWord\SimpleType\Jc;
|
||||
use PhpOffice\PhpWord\Style\Font;
|
||||
use PhpOffice\PhpWord\TestHelperDOCX;
|
||||
use PhpOffice\PhpWord\SimpleType\FootnoteProperties;
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
/**
|
||||
* Test class for PhpOffice\PhpWord\Writer\Word2007\Part\Document
|
||||
|
|
@ -65,7 +66,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
|
|||
{
|
||||
$properties = new FootnoteProperties();
|
||||
$properties->setPos(FootnoteProperties::POSITION_DOC_END);
|
||||
$properties->setNumFmt(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN);
|
||||
$properties->setNumFmt(NumberFormat::LOWER_ROMAN);
|
||||
$properties->setNumStart(1);
|
||||
$properties->setNumRestart(FootnoteProperties::RESTART_NUMBER_EACH_PAGE);
|
||||
|
||||
|
|
@ -79,7 +80,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
|
|||
$this->assertEquals(FootnoteProperties::POSITION_DOC_END, $element->getAttribute('w:val'));
|
||||
|
||||
$element = $doc->getElement('/w:document/w:body/w:sectPr/w:footnotePr/w:numFmt');
|
||||
$this->assertEquals(FootnoteProperties::NUMBER_FORMAT_LOWER_ROMAN, $element->getAttribute('w:val'));
|
||||
$this->assertEquals(NumberFormat::LOWER_ROMAN, $element->getAttribute('w:val'));
|
||||
|
||||
$element = $doc->getElement('/w:document/w:body/w:sectPr/w:footnotePr/w:numStart');
|
||||
$this->assertEquals(1, $element->getAttribute('w:val'));
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Part;
|
|||
use PhpOffice\PhpWord\PhpWord;
|
||||
use PhpOffice\PhpWord\SimpleType\Jc;
|
||||
use PhpOffice\PhpWord\TestHelperDOCX;
|
||||
use PhpOffice\PhpWord\SimpleType\NumberFormat;
|
||||
|
||||
/**
|
||||
* Test class for PhpOffice\PhpWord\Writer\Word2007\Part\Numbering
|
||||
|
|
@ -52,7 +53,7 @@ class NumberingTest extends \PHPUnit_Framework_TestCase
|
|||
'levels' => array(
|
||||
array(
|
||||
'start' => 1,
|
||||
'format' => 'decimal',
|
||||
'format' => NumberFormat::DECIMAL,
|
||||
'restart' => 1,
|
||||
'suffix' => 'space',
|
||||
'text' => '%1.',
|
||||
|
|
|
|||
Loading…
Reference in New Issue