Merge pull request #1851 from oleibman/defaultpaper
Make Default Paper Configurable
This commit is contained in:
commit
554e90a46c
|
|
@ -130,6 +130,16 @@ To turn it on set ``outputEscapingEnabled`` option to ``true`` in your PHPWord c
|
||||||
|
|
||||||
\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
|
\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
|
||||||
|
|
||||||
|
Default Paper
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
By default, all sections of the document will print on A4 paper.
|
||||||
|
You can alter the default paper by using the following function:
|
||||||
|
|
||||||
|
.. code-block:: php
|
||||||
|
|
||||||
|
\PhpOffice\PhpWord\Settings::setDefaultPaper('Letter');
|
||||||
|
|
||||||
Default font
|
Default font
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,7 @@ outputEscapingEnabled = false
|
||||||
|
|
||||||
defaultFontName = Arial
|
defaultFontName = Arial
|
||||||
defaultFontSize = 10
|
defaultFontSize = 10
|
||||||
|
|
||||||
|
[Paper]
|
||||||
|
|
||||||
|
defaultPaper = "A4"
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ class Settings
|
||||||
const DEFAULT_FONT_SIZE = 10;
|
const DEFAULT_FONT_SIZE = 10;
|
||||||
const DEFAULT_FONT_COLOR = '000000';
|
const DEFAULT_FONT_COLOR = '000000';
|
||||||
const DEFAULT_FONT_CONTENT_TYPE = 'default'; // default|eastAsia|cs
|
const DEFAULT_FONT_CONTENT_TYPE = 'default'; // default|eastAsia|cs
|
||||||
|
const DEFAULT_PAPER = 'A4';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compatibility option for XMLWriter
|
* Compatibility option for XMLWriter
|
||||||
|
|
@ -119,6 +120,12 @@ class Settings
|
||||||
*/
|
*/
|
||||||
private static $defaultFontSize = self::DEFAULT_FONT_SIZE;
|
private static $defaultFontSize = self::DEFAULT_FONT_SIZE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default paper
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private static $defaultPaper = self::DEFAULT_PAPER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The user defined temporary directory.
|
* The user defined temporary directory.
|
||||||
*
|
*
|
||||||
|
|
@ -432,6 +439,33 @@ class Settings
|
||||||
return $config;
|
return $config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get default paper
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getDefaultPaper()
|
||||||
|
{
|
||||||
|
return self::$defaultPaper;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default paper
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function setDefaultPaper($value)
|
||||||
|
{
|
||||||
|
if (is_string($value) && trim($value) !== '') {
|
||||||
|
self::$defaultPaper = $value;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the compatibility option used by the XMLWriter
|
* Return the compatibility option used by the XMLWriter
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
namespace PhpOffice\PhpWord\Style;
|
namespace PhpOffice\PhpWord\Style;
|
||||||
|
|
||||||
|
use PhpOffice\PhpWord\Settings;
|
||||||
use PhpOffice\PhpWord\SimpleType\VerticalJc;
|
use PhpOffice\PhpWord\SimpleType\VerticalJc;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -200,8 +201,11 @@ class Section extends Border
|
||||||
* @param string $value
|
* @param string $value
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function setPaperSize($value = 'A4')
|
public function setPaperSize($value = '')
|
||||||
{
|
{
|
||||||
|
if (!$value) {
|
||||||
|
$value = Settings::getDefaultPaper();
|
||||||
|
}
|
||||||
if ($this->paper === null) {
|
if ($this->paper === null) {
|
||||||
$this->paper = new Paper();
|
$this->paper = new Paper();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,45 @@ namespace PhpOffice\PhpWord;
|
||||||
*/
|
*/
|
||||||
class SettingsTest extends \PHPUnit\Framework\TestCase
|
class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
|
private $compatibility;
|
||||||
|
private $defaultFontSize;
|
||||||
|
private $defaultFontName;
|
||||||
|
private $defaultPaper;
|
||||||
|
private $measurementUnit;
|
||||||
|
private $outputEscapingEnabled;
|
||||||
|
private $pdfRendererName;
|
||||||
|
private $pdfRendererPath;
|
||||||
|
private $tempDir;
|
||||||
|
private $zipClass;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
$this->compatibility = Settings::hasCompatibility();
|
||||||
|
$this->defaultFontSize = Settings::getDefaultFontSize();
|
||||||
|
$this->defaultFontName = Settings::getDefaultFontName();
|
||||||
|
$this->defaultPaper = Settings::getDefaultPaper();
|
||||||
|
$this->measurementUnit = Settings::getMeasurementUnit();
|
||||||
|
$this->outputEscapingEnabled = Settings::isOutputEscapingEnabled();
|
||||||
|
$this->pdfRendererName = Settings::getPdfRendererName();
|
||||||
|
$this->pdfRendererPath = Settings::getPdfRendererPath();
|
||||||
|
$this->tempDir = Settings::getTempDir();
|
||||||
|
$this->zipClass = Settings::getZipClass();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tearDown()
|
||||||
|
{
|
||||||
|
Settings::setCompatibility($this->compatibility);
|
||||||
|
Settings::setDefaultFontSize($this->defaultFontSize);
|
||||||
|
Settings::setDefaultFontName($this->defaultFontName);
|
||||||
|
Settings::setDefaultPaper($this->defaultPaper);
|
||||||
|
Settings::setMeasurementUnit($this->measurementUnit);
|
||||||
|
Settings::setOutputEscapingEnabled($this->outputEscapingEnabled);
|
||||||
|
Settings::setPdfRendererName($this->pdfRendererName);
|
||||||
|
Settings::setPdfRendererPath($this->pdfRendererPath);
|
||||||
|
Settings::setTempDir($this->tempDir);
|
||||||
|
Settings::setZipClass($this->zipClass);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test set/get compatibity option
|
* Test set/get compatibity option
|
||||||
*/
|
*/
|
||||||
|
|
@ -35,14 +74,28 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
$this->assertFalse(Settings::hasCompatibility());
|
$this->assertFalse(Settings::hasCompatibility());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test set/get outputEscapingEnabled option
|
||||||
|
*/
|
||||||
|
public function testSetGetOutputEscapingEnabled()
|
||||||
|
{
|
||||||
|
$this->assertFalse(Settings::isOutputEscapingEnabled());
|
||||||
|
Settings::setOutputEscapingEnabled(true);
|
||||||
|
$this->assertTrue(Settings::isOutputEscapingEnabled());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test set/get zip class
|
* Test set/get zip class
|
||||||
*/
|
*/
|
||||||
public function testSetGetZipClass()
|
public function testSetGetZipClass()
|
||||||
{
|
{
|
||||||
$this->assertEquals(Settings::ZIPARCHIVE, Settings::getZipClass());
|
$this->assertEquals(Settings::ZIPARCHIVE, Settings::getZipClass());
|
||||||
$this->assertTrue(Settings::setZipClass(Settings::PCLZIP));
|
|
||||||
$this->assertFalse(Settings::setZipClass('foo'));
|
$this->assertFalse(Settings::setZipClass('foo'));
|
||||||
|
$this->assertEquals(Settings::ZIPARCHIVE, Settings::getZipClass());
|
||||||
|
$this->assertTrue(Settings::setZipClass(Settings::PCLZIP));
|
||||||
|
$this->assertEquals(Settings::getZipClass(), Settings::PCLZIP);
|
||||||
|
$this->assertFalse(Settings::setZipClass('foo'));
|
||||||
|
$this->assertEquals(Settings::getZipClass(), Settings::PCLZIP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,6 +110,7 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
$this->assertEquals(Settings::PDF_RENDERER_DOMPDF, Settings::getPdfRendererName());
|
$this->assertEquals(Settings::PDF_RENDERER_DOMPDF, Settings::getPdfRendererName());
|
||||||
$this->assertEquals($domPdfPath, Settings::getPdfRendererPath());
|
$this->assertEquals($domPdfPath, Settings::getPdfRendererPath());
|
||||||
$this->assertFalse(Settings::setPdfRendererPath('dummy/path'));
|
$this->assertFalse(Settings::setPdfRendererPath('dummy/path'));
|
||||||
|
$this->assertEquals($domPdfPath, Settings::getPdfRendererPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -65,8 +119,12 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
public function testSetGetMeasurementUnit()
|
public function testSetGetMeasurementUnit()
|
||||||
{
|
{
|
||||||
$this->assertEquals(Settings::UNIT_TWIP, Settings::getMeasurementUnit());
|
$this->assertEquals(Settings::UNIT_TWIP, Settings::getMeasurementUnit());
|
||||||
$this->assertTrue(Settings::setMeasurementUnit(Settings::UNIT_INCH));
|
|
||||||
$this->assertFalse(Settings::setMeasurementUnit('foo'));
|
$this->assertFalse(Settings::setMeasurementUnit('foo'));
|
||||||
|
$this->assertEquals(Settings::UNIT_TWIP, Settings::getMeasurementUnit());
|
||||||
|
$this->assertTrue(Settings::setMeasurementUnit(Settings::UNIT_INCH));
|
||||||
|
$this->assertEquals(Settings::UNIT_INCH, Settings::getMeasurementUnit());
|
||||||
|
$this->assertFalse(Settings::setMeasurementUnit('foo'));
|
||||||
|
$this->assertEquals(Settings::UNIT_INCH, Settings::getMeasurementUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -99,8 +157,12 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
public function testSetGetDefaultFontName()
|
public function testSetGetDefaultFontName()
|
||||||
{
|
{
|
||||||
$this->assertEquals(Settings::DEFAULT_FONT_NAME, Settings::getDefaultFontName());
|
$this->assertEquals(Settings::DEFAULT_FONT_NAME, Settings::getDefaultFontName());
|
||||||
$this->assertTrue(Settings::setDefaultFontName('Times New Roman'));
|
|
||||||
$this->assertFalse(Settings::setDefaultFontName(' '));
|
$this->assertFalse(Settings::setDefaultFontName(' '));
|
||||||
|
$this->assertEquals(Settings::DEFAULT_FONT_NAME, Settings::getDefaultFontName());
|
||||||
|
$this->assertTrue(Settings::setDefaultFontName('Times New Roman'));
|
||||||
|
$this->assertEquals('Times New Roman', Settings::getDefaultFontName());
|
||||||
|
$this->assertFalse(Settings::setDefaultFontName(' '));
|
||||||
|
$this->assertEquals('Times New Roman', Settings::getDefaultFontName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -109,8 +171,35 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
public function testSetGetDefaultFontSize()
|
public function testSetGetDefaultFontSize()
|
||||||
{
|
{
|
||||||
$this->assertEquals(Settings::DEFAULT_FONT_SIZE, Settings::getDefaultFontSize());
|
$this->assertEquals(Settings::DEFAULT_FONT_SIZE, Settings::getDefaultFontSize());
|
||||||
$this->assertTrue(Settings::setDefaultFontSize(12));
|
|
||||||
$this->assertFalse(Settings::setDefaultFontSize(null));
|
$this->assertFalse(Settings::setDefaultFontSize(null));
|
||||||
|
$this->assertEquals(Settings::DEFAULT_FONT_SIZE, Settings::getDefaultFontSize());
|
||||||
|
$this->assertTrue(Settings::setDefaultFontSize(12));
|
||||||
|
$this->assertEquals(12, Settings::getDefaultFontSize());
|
||||||
|
$this->assertFalse(Settings::setDefaultFontSize(null));
|
||||||
|
$this->assertEquals(12, Settings::getDefaultFontSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test set/get default paper
|
||||||
|
*/
|
||||||
|
public function testSetGetDefaultPaper()
|
||||||
|
{
|
||||||
|
$dflt = Settings::DEFAULT_PAPER;
|
||||||
|
$chng = ($dflt === 'A4') ? 'Letter' : 'A4';
|
||||||
|
$doc = new PhpWord();
|
||||||
|
$this->assertEquals($dflt, Settings::getDefaultPaper());
|
||||||
|
$sec1 = $doc->addSection();
|
||||||
|
$this->assertEquals($dflt, $sec1->getStyle()->getPaperSize());
|
||||||
|
$this->assertFalse(Settings::setDefaultPaper(''));
|
||||||
|
$this->assertEquals($dflt, Settings::getDefaultPaper());
|
||||||
|
$this->assertTrue(Settings::setDefaultPaper($chng));
|
||||||
|
$this->assertEquals($chng, Settings::getDefaultPaper());
|
||||||
|
$sec2 = $doc->addSection();
|
||||||
|
$this->assertEquals($chng, $sec2->getStyle()->getPaperSize());
|
||||||
|
$sec3 = $doc->addSection(array('paperSize' => 'Legal'));
|
||||||
|
$this->assertEquals('Legal', $sec3->getStyle()->getPaperSize());
|
||||||
|
$this->assertFalse(Settings::setDefaultPaper(''));
|
||||||
|
$this->assertEquals($chng, Settings::getDefaultPaper());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -126,6 +215,7 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
'defaultFontName' => 'Arial',
|
'defaultFontName' => 'Arial',
|
||||||
'defaultFontSize' => 10,
|
'defaultFontSize' => 10,
|
||||||
'outputEscapingEnabled' => false,
|
'outputEscapingEnabled' => false,
|
||||||
|
'defaultPaper' => 'A4',
|
||||||
);
|
);
|
||||||
|
|
||||||
// Test default value
|
// Test default value
|
||||||
|
|
@ -133,6 +223,16 @@ class SettingsTest extends \PHPUnit\Framework\TestCase
|
||||||
|
|
||||||
// Test with valid file
|
// Test with valid file
|
||||||
$this->assertEquals($expected, Settings::loadConfig(__DIR__ . '/../../phpword.ini.dist'));
|
$this->assertEquals($expected, Settings::loadConfig(__DIR__ . '/../../phpword.ini.dist'));
|
||||||
|
foreach ($expected as $key => $value) {
|
||||||
|
if ($key === 'compatibility') {
|
||||||
|
$meth = 'hasCompatibility';
|
||||||
|
} elseif ($key === 'outputEscapingEnabled') {
|
||||||
|
$meth = 'isOutputEscapingEnabled';
|
||||||
|
} else {
|
||||||
|
$meth = 'get' . ucfirst($key);
|
||||||
|
}
|
||||||
|
$this->assertEquals(Settings::$meth(), $value);
|
||||||
|
}
|
||||||
|
|
||||||
// Test with invalid file
|
// Test with invalid file
|
||||||
$this->assertEmpty(Settings::loadConfig(__DIR__ . '/../../phpunit.xml.dist'));
|
$this->assertEmpty(Settings::loadConfig(__DIR__ . '/../../phpunit.xml.dist'));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue