Merge remote-tracking branch 'github_troosan/paper_size_computation' into develop

This commit is contained in:
antoine 2017-01-21 19:29:14 +01:00
commit da60645be3
4 changed files with 84 additions and 5 deletions

View File

@ -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;
}

View File

@ -106,7 +106,7 @@ class Settings extends AbstractPart
'w:themeFontLang' => array('@attributes' => array('w:val' => 'en-US')),
'w:decimalSymbol' => array('@attributes' => array('w:val' => '.')),
'w:listSeparator' => array('@attributes' => array('w:val' => ';')),
'w:compat' => '',
'w:compat' => array(),
'm:mathPr' => array(
'm:mathFont' => array('@attributes' => array('m:val' => 'Cambria Math')),
'm:brkBin' => array('@attributes' => array('m:val' => 'before')),

View 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);
}
}

View File

@ -64,5 +64,6 @@ class SettingsTest extends \PHPUnit_Framework_TestCase
$path = '/w:settings/w:compat/w:compatSetting';
$this->assertTrue($doc->elementExists($path, $file));
$this->assertEquals($phpWord->getCompatibility()->getOoxmlVersion(), 15);
}
}