123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- <?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-2014 PHPWord contributors
- * @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
- */
-
- namespace PhpOffice\PhpWord;
-
- /**
- * PHPWord settings class
- *
- * @since 0.8.0
- */
- class Settings
- {
- /**
- * Zip libraries
- *
- * @const string
- */
- const ZIPARCHIVE = 'ZipArchive';
- const PCLZIP = 'PclZip';
- const OLD_LIB = 'PhpOffice\\PhpWord\\Shared\\ZipArchive'; // @deprecated 0.11
-
- /**
- * PDF rendering libraries
- *
- * @const string
- */
- const PDF_RENDERER_DOMPDF = 'DomPDF';
- const PDF_RENDERER_TCPDF = 'TCPDF';
- const PDF_RENDERER_MPDF = 'MPDF';
-
- /**
- * Measurement units multiplication factor
- *
- * Applied to:
- * - Section: margins, header/footer height, gutter, column spacing
- * - Tab: position
- * - Indentation: left, right, firstLine, hanging
- * - Spacing: before, after
- *
- * @const string
- */
- const UNIT_TWIP = 'twip'; // = 1/20 point
- const UNIT_CM = 'cm';
- const UNIT_MM = 'mm';
- const UNIT_INCH = 'inch';
- const UNIT_POINT = 'point'; // = 1/72 inch
- const UNIT_PICA = 'pica'; // = 1/6 inch = 12 points
-
- /**
- * Default font settings
- *
- * OOXML defined font size values in halfpoints, i.e. twice of what PhpWord
- * use, and the conversion will be conducted during XML writing.
- */
- const DEFAULT_FONT_NAME = 'Arial';
- const DEFAULT_FONT_SIZE = 10;
- const DEFAULT_FONT_COLOR = '000000';
- const DEFAULT_FONT_CONTENT_TYPE = 'default'; // default|eastAsia|cs
-
- /**
- * Compatibility option for XMLWriter
- *
- * @var bool
- */
- private static $xmlWriterCompatibility = true;
-
- /**
- * Name of the class used for Zip file management
- *
- * @var string
- */
- private static $zipClass = self::ZIPARCHIVE;
-
- /**
- * Name of the external Library used for rendering PDF files
- *
- * @var string
- */
- private static $pdfRendererName = null;
-
- /**
- * Directory Path to the external Library used for rendering PDF files
- *
- * @var string
- */
- private static $pdfRendererPath = null;
-
- /**
- * Measurement unit
- *
- * @var int|float
- */
- private static $measurementUnit = self::UNIT_TWIP;
-
- /**
- * Default font name
- *
- * @var string
- */
- private static $defaultFontName = self::DEFAULT_FONT_NAME;
-
- /**
- * Default font size
- * @var int
- */
- private static $defaultFontSize = self::DEFAULT_FONT_SIZE;
-
- /**
- * The user defined temporary directory.
- *
- * @var string
- */
- private static $tempDir = '';
-
- /**
- * Return the compatibility option used by the XMLWriter
- *
- * @return bool Compatibility
- */
- public static function hasCompatibility()
- {
- return self::$xmlWriterCompatibility;
- }
-
- /**
- * Set the compatibility option used by the XMLWriter
- *
- * This sets the setIndent and setIndentString for better compatibility
- *
- * @param bool $compatibility
- * @return bool
- */
- public static function setCompatibility($compatibility)
- {
- $compatibility = (bool)$compatibility;
- self::$xmlWriterCompatibility = $compatibility;
-
- return true;
- }
-
- /**
- * Get zip handler class
- *
- * @return string
- */
- public static function getZipClass()
- {
- return self::$zipClass;
- }
-
- /**
- * Set zip handler class
- *
- * @param string $zipClass
- * @return bool
- */
- public static function setZipClass($zipClass)
- {
- if (in_array($zipClass, array(self::PCLZIP, self::ZIPARCHIVE, self::OLD_LIB))) {
- self::$zipClass = $zipClass;
- return true;
- }
-
- return false;
- }
-
- /**
- * Set details of the external library for rendering PDF files
- *
- * @param string $libraryName
- * @param string $libraryBaseDir
- * @return bool Success or failure
- */
- public static function setPdfRenderer($libraryName, $libraryBaseDir)
- {
- if (!self::setPdfRendererName($libraryName)) {
- return false;
- }
-
- return self::setPdfRendererPath($libraryBaseDir);
- }
-
- /**
- * Return the PDF Rendering Library.
- *
- * @return string
- */
- public static function getPdfRendererName()
- {
- return self::$pdfRendererName;
- }
-
- /**
- * Identify the external library to use for rendering PDF files
- *
- * @param string $libraryName
- * @return bool
- */
- public static function setPdfRendererName($libraryName)
- {
- $pdfRenderers = array(self::PDF_RENDERER_DOMPDF, self::PDF_RENDERER_TCPDF, self::PDF_RENDERER_MPDF);
- if (!in_array($libraryName, $pdfRenderers)) {
- return false;
- }
- self::$pdfRendererName = $libraryName;
-
- return true;
- }
-
-
- /**
- * Return the directory path to the PDF Rendering Library.
- *
- * @return string
- */
- public static function getPdfRendererPath()
- {
- return self::$pdfRendererPath;
- }
-
- /**
- * Location of external library to use for rendering PDF files
- *
- * @param string $libraryBaseDir Directory path to the library's base folder
- * @return bool Success or failure
- */
- public static function setPdfRendererPath($libraryBaseDir)
- {
- if (false === file_exists($libraryBaseDir) || false === is_readable($libraryBaseDir)) {
- return false;
- }
- self::$pdfRendererPath = $libraryBaseDir;
-
- return true;
- }
-
- /**
- * Get measurement unit
- *
- * @return string
- */
- public static function getMeasurementUnit()
- {
- return self::$measurementUnit;
- }
-
- /**
- * Set measurement unit
- *
- * @param string $value
- * @return bool
- */
- public static function setMeasurementUnit($value)
- {
- $units = array(self::UNIT_TWIP, self::UNIT_CM, self::UNIT_MM, self::UNIT_INCH,
- self::UNIT_POINT, self::UNIT_PICA);
- if (!in_array($value, $units)) {
- return false;
- }
- self::$measurementUnit = $value;
-
- return true;
- }
-
- /**
- * Sets the user defined path to temporary directory.
- *
- * @since 0.12.0
- *
- * @param string $tempDir The user defined path to temporary directory.
- * @return void
- */
- public static function setTempDir($tempDir)
- {
- self::$tempDir = $tempDir;
- }
-
- /**
- * Returns path to temporary directory.
- *
- * @since 0.12.0
- *
- * @return string
- */
- public static function getTempDir()
- {
- $tempDir = sys_get_temp_dir();
-
- if (!empty(self::$tempDir)) {
- $tempDir = self::$tempDir;
- }
-
- return $tempDir;
- }
-
- /**
- * Get default font name
- *
- * @return string
- */
- public static function getDefaultFontName()
- {
- return self::$defaultFontName;
- }
-
- /**
- * Set default font name
- *
- * @param string $value
- * @return bool
- */
- public static function setDefaultFontName($value)
- {
- if (is_string($value) && trim($value) !== '') {
- self::$defaultFontName = $value;
- return true;
- }
-
- return false;
- }
-
- /**
- * Get default font size
- *
- * @return integer
- */
- public static function getDefaultFontSize()
- {
- return self::$defaultFontSize;
- }
-
- /**
- * Set default font size
- *
- * @param int $value
- * @return bool
- */
- public static function setDefaultFontSize($value)
- {
- $value = intval($value);
- if ($value > 0) {
- self::$defaultFontSize = $value;
- return true;
- }
-
- return false;
- }
-
- /**
- * Load setting from phpword.yml or phpword.yml.dist
- *
- * @param string $filename
- * @return array
- */
- public static function loadConfig($filename = null)
- {
- // Get config file
- $configFile = null;
- $configPath = __DIR__ . '/../../';
- if ($filename !== null) {
- $files = array($filename);
- } else {
- $files = array("{$configPath}phpword.ini", "{$configPath}phpword.ini.dist");
- }
- foreach ($files as $file) {
- if (file_exists($file)) {
- $configFile = realpath($file);
- break;
- }
- }
-
- // Parse config file
- $config = array();
- if ($configFile !== null) {
- $config = @parse_ini_file($configFile);
- if ($config === false) {
- return $config;
- }
- }
-
- // Set config value
- foreach ($config as $key => $value) {
- $method = "set{$key}";
- if (method_exists(__CLASS__, $method)) {
- self::$method($value);
- }
- }
-
- return $config;
- }
-
- /**
- * Return the compatibility option used by the XMLWriter
- *
- * @deprecated 0.10.0
- * @codeCoverageIgnore
- */
- public static function getCompatibility()
- {
- return self::hasCompatibility();
- }
- }
|