Merge pull request #977 from troosan/paper_size_computation
fix paper size and add tests for Paper class
This commit is contained in:
commit
f59b7228bb
@ -17,6 +17,8 @@
|
||||
|
||||
namespace PhpOffice\PhpWord\Style;
|
||||
|
||||
use PhpOffice\PhpWord\Shared\Converter;
|
||||
|
||||
/**
|
||||
* Paper size from ISO/IEC 29500-1:2012 pg. 1656-1657
|
||||
*
|
||||
@ -100,6 +102,7 @@ class Paper extends AbstractStyle
|
||||
'A3' => array(297, 420, 'mm'),
|
||||
'A4' => array(210, 297, 'mm'),
|
||||
'A5' => array(148, 210, 'mm'),
|
||||
'B5' => array(176, 250, 'mm'),
|
||||
'Folio' => array(8.5, 13, 'in'),
|
||||
'Legal' => array(8.5, 14, 'in'),
|
||||
'Letter' => array(8.5, 11, 'in'),
|
||||
@ -157,11 +160,14 @@ class Paper extends AbstractStyle
|
||||
$this->size = $this->setEnumVal($size, array_keys($this->sizes), $this->size);
|
||||
|
||||
list($width, $height, $unit) = $this->sizes[$this->size];
|
||||
$multipliers = array('mm' => 56.5217, 'in' => 1440);
|
||||
$multiplier = $multipliers[$unit];
|
||||
|
||||
$this->width = (int)round($width * $multiplier);
|
||||
$this->height = (int)round($height * $multiplier);
|
||||
if ($unit == 'mm') {
|
||||
$this->width = Converter::cmToTwip($width / 10);
|
||||
$this->height = Converter::cmToTwip($height / 10);
|
||||
} else {
|
||||
$this->width = Converter::inchToTwip($width);
|
||||
$this->height = Converter::inchToTwip($height);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -35,14 +35,14 @@ class Section extends Border
|
||||
*
|
||||
* @const int|float
|
||||
*/
|
||||
const DEFAULT_WIDTH = 11870; // In twips.
|
||||
const DEFAULT_HEIGHT = 16787; // In twips.
|
||||
const DEFAULT_MARGIN = 1440; // In twips.
|
||||
const DEFAULT_GUTTER = 0; // In twips.
|
||||
const DEFAULT_HEADER_HEIGHT = 720; // In twips.
|
||||
const DEFAULT_FOOTER_HEIGHT = 720; // In twips.
|
||||
const DEFAULT_WIDTH = 11905.511811024; // In twips.
|
||||
const DEFAULT_HEIGHT = 16837.79527559; // In twips.
|
||||
const DEFAULT_MARGIN = 1440; // In twips.
|
||||
const DEFAULT_GUTTER = 0; // In twips.
|
||||
const DEFAULT_HEADER_HEIGHT = 720; // In twips.
|
||||
const DEFAULT_FOOTER_HEIGHT = 720; // In twips.
|
||||
const DEFAULT_COLUMN_COUNT = 1;
|
||||
const DEFAULT_COLUMN_SPACING = 720; // In twips.
|
||||
const DEFAULT_COLUMN_SPACING = 720; // In twips.
|
||||
|
||||
/**
|
||||
* Page Orientation
|
||||
|
||||
72
tests/PhpWord/Style/PaperTest.php
Normal file
72
tests/PhpWord/Style/PaperTest.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?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\Style;
|
||||
|
||||
use PhpOffice\PhpWord\PhpWord;
|
||||
use PhpOffice\PhpWord\TestHelperDOCX;
|
||||
|
||||
/**
|
||||
* Test class for PhpOffice\PhpWord\Style\Paper
|
||||
*
|
||||
* @runTestsInSeparateProcesses
|
||||
*/
|
||||
class PaperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tear down after each test
|
||||
*/
|
||||
public function tearDown()
|
||||
{
|
||||
TestHelperDOCX::clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test initiation for paper
|
||||
*/
|
||||
public function testInitiation()
|
||||
{
|
||||
$object = new Paper();
|
||||
|
||||
$this->assertEquals('A4', $object->getSize());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test paper size for B5 format
|
||||
*/
|
||||
public function testB5Size()
|
||||
{
|
||||
$object = new Paper('B5');
|
||||
|
||||
$this->assertEquals('B5', $object->getSize());
|
||||
$this->assertEquals(9977.9527559055, $object->getWidth(), '', 0.000000001);
|
||||
$this->assertEquals(14173.228346457, $object->getHeight(), '', 0.000000001);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test paper size for Folio format
|
||||
*/
|
||||
public function testFolioSize()
|
||||
{
|
||||
$object = new Paper();
|
||||
$object->setSize('Folio');
|
||||
|
||||
$this->assertEquals('Folio', $object->getSize());
|
||||
$this->assertEquals(12240, $object->getWidth(), '', 0.1);
|
||||
$this->assertEquals(18720, $object->getHeight(), '', 0.1);
|
||||
}
|
||||
}
|
||||
@ -33,14 +33,14 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
|
||||
$oSettings = new Section();
|
||||
|
||||
$this->assertEquals('portrait', $oSettings->getOrientation());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW(), '', 0.000000001);
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH(), '', 0.000000001);
|
||||
$this->assertEquals('A4', $oSettings->getPaperSize());
|
||||
|
||||
$oSettings->setSettingValue('orientation', 'landscape');
|
||||
$this->assertEquals('landscape', $oSettings->getOrientation());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeW());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeH());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeW(), '', 0.000000001);
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeH(), '', 0.000000001);
|
||||
|
||||
$iVal = rand(1, 1000);
|
||||
$oSettings->setSettingValue('borderSize', $iVal);
|
||||
@ -110,7 +110,7 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
|
||||
// Section Settings
|
||||
$oSettings = new Section();
|
||||
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW(), '', 0.000000001);
|
||||
$iVal = rand(1, 1000);
|
||||
$oSettings->setSettingValue('pageSizeW', $iVal);
|
||||
$this->assertEquals($iVal, $oSettings->getPageSizeW());
|
||||
@ -124,7 +124,7 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
|
||||
// Section Settings
|
||||
$oSettings = new Section();
|
||||
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH(), '', 0.000000001);
|
||||
$iVal = rand(1, 1000);
|
||||
$oSettings->setSettingValue('pageSizeH', $iVal);
|
||||
$this->assertEquals($iVal, $oSettings->getPageSizeH());
|
||||
@ -140,8 +140,8 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$oSettings->setLandscape();
|
||||
$this->assertEquals('landscape', $oSettings->getOrientation());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeW());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeH());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeW(), '', 0.000000001);
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeH(), '', 0.000000001);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -154,8 +154,8 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$oSettings->setPortrait();
|
||||
$this->assertEquals('portrait', $oSettings->getOrientation());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW());
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH());
|
||||
$this->assertEquals(Section::DEFAULT_WIDTH, $oSettings->getPageSizeW(), '', 0.000000001);
|
||||
$this->assertEquals(Section::DEFAULT_HEIGHT, $oSettings->getPageSizeH(), '', 0.000000001);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user