12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669 |
- <?php
- class TCPDF_STATIC {
-
- private static $tcpdf_version = '6.4.4';
-
- public static $alias_tot_pages = '{:ptp:}';
-
- public static $alias_num_page = '{:pnp:}';
-
- public static $alias_group_tot_pages = '{:ptg:}';
-
- public static $alias_group_num_page = '{:png:}';
-
- public static $alias_right_shift = '{rsc:';
-
- public static $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
-
- public static $byterange_string = '/ByteRange[0 ********** ********** **********]';
-
- public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');
-
-
- public static function getTCPDFVersion() {
- return self::$tcpdf_version;
- }
-
- public static function getTCPDFProducer() {
- return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29";
- }
-
- public static function set_mqr($mqr) {
- if (!defined('PHP_VERSION_ID')) {
- $version = PHP_VERSION;
- define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
- }
- if (PHP_VERSION_ID < 50300) {
- @set_magic_quotes_runtime($mqr);
- }
- }
-
- public static function get_mqr() {
- if (!defined('PHP_VERSION_ID')) {
- $version = PHP_VERSION;
- define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
- }
- if (PHP_VERSION_ID < 50300) {
- return @get_magic_quotes_runtime();
- }
- return 0;
- }
-
- public static function isValidURL($url) {
- $headers = @get_headers($url);
- if ($headers === false) {
- return false;
- }
- return (strpos($headers[0], '200') !== false);
- }
-
- public static function removeSHY($txt='', $unicode=true) {
- $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt);
- if (!$unicode) {
- $txt = preg_replace('/([\\xad]{1})/', '', $txt);
- }
- return $txt;
- }
-
- public static function getBorderMode($brd, $position='start', $opencell=true) {
- if ((!$opencell) OR empty($brd)) {
- return $brd;
- }
- if ($brd == 1) {
- $brd = 'LTRB';
- }
- if (is_string($brd)) {
-
- $slen = strlen($brd);
- $newbrd = array();
- for ($i = 0; $i < $slen; ++$i) {
- $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter');
- }
- $brd = $newbrd;
- }
- foreach ($brd as $border => $style) {
- switch ($position) {
- case 'start': {
- if (strpos($border, 'B') !== false) {
-
- $newkey = str_replace('B', '', $border);
- if (strlen($newkey) > 0) {
- $brd[$newkey] = $style;
- }
- unset($brd[$border]);
- }
- break;
- }
- case 'middle': {
- if (strpos($border, 'B') !== false) {
-
- $newkey = str_replace('B', '', $border);
- if (strlen($newkey) > 0) {
- $brd[$newkey] = $style;
- }
- unset($brd[$border]);
- $border = $newkey;
- }
- if (strpos($border, 'T') !== false) {
-
- $newkey = str_replace('T', '', $border);
- if (strlen($newkey) > 0) {
- $brd[$newkey] = $style;
- }
- unset($brd[$border]);
- }
- break;
- }
- case 'end': {
- if (strpos($border, 'T') !== false) {
-
- $newkey = str_replace('T', '', $border);
- if (strlen($newkey) > 0) {
- $brd[$newkey] = $style;
- }
- unset($brd[$border]);
- }
- break;
- }
- }
- }
- return $brd;
- }
-
- public static function empty_string($str) {
- return (is_null($str) OR (is_string($str) AND (strlen($str) == 0)));
- }
-
- public static function getObjFilename($type='tmp', $file_id='') {
- return tempnam(K_PATH_CACHE, '__tcpdf_'.$file_id.'_'.$type.'_'.md5(TCPDF_STATIC::getRandomSeed()).'_');
- }
-
- public static function _escape($s) {
-
- return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
- }
-
- public static function _escapeXML($str) {
- $replaceTable = array("\0" => '', '&' => '&', '<' => '<', '>' => '>');
- $str = strtr($str, $replaceTable);
- return $str;
- }
-
- public static function objclone($object) {
- if (($object instanceof Imagick) AND (version_compare(phpversion('imagick'), '3.0.1') !== 1)) {
-
- return @$object->clone();
- }
- return @clone($object);
- }
-
- public static function sendOutputData($data, $length) {
- if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
-
- header('Content-Length: '.$length);
- }
- echo $data;
- }
-
- public static function replacePageNumAliases($page, $replace, $diff=0) {
- foreach ($replace as $rep) {
- foreach ($rep[3] as $a) {
- if (strpos($page, $a) !== false) {
- $page = str_replace($a, $rep[0], $page);
- $diff += ($rep[2] - $rep[1]);
- }
- }
- }
- return array($page, $diff);
- }
-
- public static function getTimestamp($date) {
- if (($date[0] == 'D') AND ($date[1] == ':')) {
-
- $date = substr($date, 2);
- }
- return strtotime($date);
- }
-
- public static function getFormattedDate($time) {
- return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\'';
- }
-
- public static function getRandomSeed($seed='') {
- $rnd = uniqid(rand().microtime(true), true);
- if (function_exists('posix_getpid')) {
- $rnd .= posix_getpid();
- }
- if (function_exists('openssl_random_pseudo_bytes') AND (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) {
-
- $rnd .= openssl_random_pseudo_bytes(512);
- } else {
- for ($i = 0; $i < 23; ++$i) {
- $rnd .= uniqid('', true);
- }
- }
- return $rnd.$seed.__FILE__.serialize($_SERVER).microtime(true);
- }
-
- public static function _md5_16($str) {
- return pack('H*', md5($str));
- }
-
- public static function _AES($key, $text) {
-
- $padding = 16 - (strlen($text) % 16);
- $text .= str_repeat(chr($padding), $padding);
- if (extension_loaded('openssl')) {
- $algo = 'aes-256-cbc';
- if (strlen($key) == 16) {
- $algo = 'aes-128-cbc';
- }
- $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($algo));
- $text = openssl_encrypt($text, $algo, $key, OPENSSL_RAW_DATA, $iv);
- return $iv.substr($text, 0, -16);
- }
- $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
- $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
- $text = $iv.$text;
- return $text;
- }
-
- public static function _AESnopad($key, $text) {
- if (extension_loaded('openssl')) {
- $algo = 'aes-256-cbc';
- if (strlen($key) == 16) {
- $algo = 'aes-128-cbc';
- }
- $iv = str_repeat("\x00", openssl_cipher_iv_length($algo));
- $text = openssl_encrypt($text, $algo, $key, OPENSSL_RAW_DATA, $iv);
- return substr($text, 0, -16);
- }
- $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
- $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
- return $text;
- }
-
- public static function _RC4($key, $text, &$last_enc_key, &$last_enc_key_c) {
- if (function_exists('mcrypt_encrypt') AND ($out = @mcrypt_encrypt(MCRYPT_ARCFOUR, $key, $text, MCRYPT_MODE_STREAM, ''))) {
-
- return $out;
- }
- if ($last_enc_key != $key) {
- $k = str_repeat($key, (int) ((256 / strlen($key)) + 1));
- $rc4 = range(0, 255);
- $j = 0;
- for ($i = 0; $i < 256; ++$i) {
- $t = $rc4[$i];
- $j = ($j + $t + ord($k[$i])) % 256;
- $rc4[$i] = $rc4[$j];
- $rc4[$j] = $t;
- }
- $last_enc_key = $key;
- $last_enc_key_c = $rc4;
- } else {
- $rc4 = $last_enc_key_c;
- }
- $len = strlen($text);
- $a = 0;
- $b = 0;
- $out = '';
- for ($i = 0; $i < $len; ++$i) {
- $a = ($a + 1) % 256;
- $t = $rc4[$a];
- $b = ($b + $t) % 256;
- $rc4[$a] = $rc4[$b];
- $rc4[$b] = $t;
- $k = $rc4[($rc4[$a] + $rc4[$b]) % 256];
- $out .= chr(ord($text[$i]) ^ $k);
- }
- return $out;
- }
-
- public static function getUserPermissionCode($permissions, $mode=0) {
- $options = array(
- 'owner' => 2,
- 'print' => 4,
- 'modify' => 8,
- 'copy' => 16,
- 'annot-forms' => 32,
- 'fill-forms' => 256,
- 'extract' => 512,
- 'assemble' => 1024,
- 'print-high' => 2048
- );
- $protection = 2147422012;
- foreach ($permissions as $permission) {
- if (isset($options[$permission])) {
- if (($mode > 0) OR ($options[$permission] <= 32)) {
-
- if ($options[$permission] == 2) {
-
- $protection += $options[$permission];
- } else {
- $protection -= $options[$permission];
- }
- }
- }
- }
- return $protection;
- }
-
- public static function convertHexStringToString($bs) {
- $string = '';
- $bslength = strlen($bs);
- if (($bslength % 2) != 0) {
-
- $bs .= '0';
- ++$bslength;
- }
- for ($i = 0; $i < $bslength; $i += 2) {
- $string .= chr(hexdec($bs[$i].$bs[($i + 1)]));
- }
- return $string;
- }
-
- public static function convertStringToHexString($s) {
- $bs = '';
- $chars = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $c) {
- $bs .= sprintf('%02s', dechex(ord($c)));
- }
- return $bs;
- }
-
- public static function getEncPermissionsString($protection) {
- $binprot = sprintf('%032b', $protection);
- $str = chr(bindec(substr($binprot, 24, 8)));
- $str .= chr(bindec(substr($binprot, 16, 8)));
- $str .= chr(bindec(substr($binprot, 8, 8)));
- $str .= chr(bindec(substr($binprot, 0, 8)));
- return $str;
- }
-
- public static function encodeNameObject($name) {
- $escname = '';
- $length = strlen($name);
- for ($i = 0; $i < $length; ++$i) {
- $chr = $name[$i];
- if (preg_match('/[0-9a-zA-Z#_=-]/', $chr) == 1) {
- $escname .= $chr;
- } else {
- $escname .= sprintf('#%02X', ord($chr));
- }
- }
- return $escname;
- }
-
- public static function getAnnotOptFromJSProp($prop, &$spot_colors, $rtl=false) {
- if (isset($prop['aopt']) AND is_array($prop['aopt'])) {
-
- return $prop['aopt'];
- }
- $opt = array();
-
- if (isset($prop['alignment'])) {
- switch ($prop['alignment']) {
- case 'left': {
- $opt['q'] = 0;
- break;
- }
- case 'center': {
- $opt['q'] = 1;
- break;
- }
- case 'right': {
- $opt['q'] = 2;
- break;
- }
- default: {
- $opt['q'] = ($rtl)?2:0;
- break;
- }
- }
- }
-
- if (isset($prop['lineWidth'])) {
- $linewidth = intval($prop['lineWidth']);
- } else {
- $linewidth = 1;
- }
-
- if (isset($prop['borderStyle'])) {
- switch ($prop['borderStyle']) {
- case 'border.d':
- case 'dashed': {
- $opt['border'] = array(0, 0, $linewidth, array(3, 2));
- $opt['bs'] = array('w'=>$linewidth, 's'=>'D', 'd'=>array(3, 2));
- break;
- }
- case 'border.b':
- case 'beveled': {
- $opt['border'] = array(0, 0, $linewidth);
- $opt['bs'] = array('w'=>$linewidth, 's'=>'B');
- break;
- }
- case 'border.i':
- case 'inset': {
- $opt['border'] = array(0, 0, $linewidth);
- $opt['bs'] = array('w'=>$linewidth, 's'=>'I');
- break;
- }
- case 'border.u':
- case 'underline': {
- $opt['border'] = array(0, 0, $linewidth);
- $opt['bs'] = array('w'=>$linewidth, 's'=>'U');
- break;
- }
- case 'border.s':
- case 'solid': {
- $opt['border'] = array(0, 0, $linewidth);
- $opt['bs'] = array('w'=>$linewidth, 's'=>'S');
- break;
- }
- default: {
- break;
- }
- }
- }
- if (isset($prop['border']) AND is_array($prop['border'])) {
- $opt['border'] = $prop['border'];
- }
- if (!isset($opt['mk'])) {
- $opt['mk'] = array();
- }
- if (!isset($opt['mk']['if'])) {
- $opt['mk']['if'] = array();
- }
- $opt['mk']['if']['a'] = array(0.5, 0.5);
-
- if (isset($prop['buttonAlignX'])) {
- $opt['mk']['if']['a'][0] = $prop['buttonAlignX'];
- }
-
- if (isset($prop['buttonAlignY'])) {
- $opt['mk']['if']['a'][1] = $prop['buttonAlignY'];
- }
-
- if (isset($prop['buttonFitBounds']) AND ($prop['buttonFitBounds'] == 'true')) {
- $opt['mk']['if']['fb'] = true;
- }
-
- if (isset($prop['buttonScaleHow'])) {
- switch ($prop['buttonScaleHow']) {
- case 'scaleHow.proportional': {
- $opt['mk']['if']['s'] = 'P';
- break;
- }
- case 'scaleHow.anamorphic': {
- $opt['mk']['if']['s'] = 'A';
- break;
- }
- }
- }
-
- if (isset($prop['buttonScaleWhen'])) {
- switch ($prop['buttonScaleWhen']) {
- case 'scaleWhen.always': {
- $opt['mk']['if']['sw'] = 'A';
- break;
- }
- case 'scaleWhen.never': {
- $opt['mk']['if']['sw'] = 'N';
- break;
- }
- case 'scaleWhen.tooBig': {
- $opt['mk']['if']['sw'] = 'B';
- break;
- }
- case 'scaleWhen.tooSmall': {
- $opt['mk']['if']['sw'] = 'S';
- break;
- }
- }
- }
-
- if (isset($prop['buttonPosition'])) {
- switch ($prop['buttonPosition']) {
- case 0:
- case 'position.textOnly': {
- $opt['mk']['tp'] = 0;
- break;
- }
- case 1:
- case 'position.iconOnly': {
- $opt['mk']['tp'] = 1;
- break;
- }
- case 2:
- case 'position.iconTextV': {
- $opt['mk']['tp'] = 2;
- break;
- }
- case 3:
- case 'position.textIconV': {
- $opt['mk']['tp'] = 3;
- break;
- }
- case 4:
- case 'position.iconTextH': {
- $opt['mk']['tp'] = 4;
- break;
- }
- case 5:
- case 'position.textIconH': {
- $opt['mk']['tp'] = 5;
- break;
- }
- case 6:
- case 'position.overlay': {
- $opt['mk']['tp'] = 6;
- break;
- }
- }
- }
-
- if (isset($prop['fillColor'])) {
- if (is_array($prop['fillColor'])) {
- $opt['mk']['bg'] = $prop['fillColor'];
- } else {
- $opt['mk']['bg'] = TCPDF_COLORS::convertHTMLColorToDec($prop['fillColor'], $spot_colors);
- }
- }
-
- if (isset($prop['strokeColor'])) {
- if (is_array($prop['strokeColor'])) {
- $opt['mk']['bc'] = $prop['strokeColor'];
- } else {
- $opt['mk']['bc'] = TCPDF_COLORS::convertHTMLColorToDec($prop['strokeColor'], $spot_colors);
- }
- }
-
- if (isset($prop['rotation'])) {
- $opt['mk']['r'] = $prop['rotation'];
- }
-
- if (isset($prop['charLimit'])) {
- $opt['maxlen'] = intval($prop['charLimit']);
- }
- if (!isset($ff)) {
- $ff = 0;
- }
-
- if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) {
- $ff += 1 << 0;
- }
-
- if (isset($prop['required']) AND ($prop['required'] == 'true')) {
- $ff += 1 << 1;
- }
-
- if (isset($prop['multiline']) AND ($prop['multiline'] == 'true')) {
- $ff += 1 << 12;
- }
-
- if (isset($prop['password']) AND ($prop['password'] == 'true')) {
- $ff += 1 << 13;
- }
-
- if (isset($prop['NoToggleToOff']) AND ($prop['NoToggleToOff'] == 'true')) {
- $ff += 1 << 14;
- }
-
- if (isset($prop['Radio']) AND ($prop['Radio'] == 'true')) {
- $ff += 1 << 15;
- }
-
- if (isset($prop['Pushbutton']) AND ($prop['Pushbutton'] == 'true')) {
- $ff += 1 << 16;
- }
-
- if (isset($prop['Combo']) AND ($prop['Combo'] == 'true')) {
- $ff += 1 << 17;
- }
-
- if (isset($prop['editable']) AND ($prop['editable'] == 'true')) {
- $ff += 1 << 18;
- }
-
- if (isset($prop['Sort']) AND ($prop['Sort'] == 'true')) {
- $ff += 1 << 19;
- }
-
- if (isset($prop['fileSelect']) AND ($prop['fileSelect'] == 'true')) {
- $ff += 1 << 20;
- }
-
- if (isset($prop['multipleSelection']) AND ($prop['multipleSelection'] == 'true')) {
- $ff += 1 << 21;
- }
-
- if (isset($prop['doNotSpellCheck']) AND ($prop['doNotSpellCheck'] == 'true')) {
- $ff += 1 << 22;
- }
-
- if (isset($prop['doNotScroll']) AND ($prop['doNotScroll'] == 'true')) {
- $ff += 1 << 23;
- }
-
- if (isset($prop['comb']) AND ($prop['comb'] == 'true')) {
- $ff += 1 << 24;
- }
-
- if (isset($prop['radiosInUnison']) AND ($prop['radiosInUnison'] == 'true')) {
- $ff += 1 << 25;
- }
-
- if (isset($prop['richText']) AND ($prop['richText'] == 'true')) {
- $ff += 1 << 25;
- }
-
- if (isset($prop['commitOnSelChange']) AND ($prop['commitOnSelChange'] == 'true')) {
- $ff += 1 << 26;
- }
- $opt['ff'] = $ff;
-
- if (isset($prop['defaultValue'])) {
- $opt['dv'] = $prop['defaultValue'];
- }
- $f = 4;
-
- if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) {
- $f += 1 << 6;
- }
-
- if (isset($prop['display'])) {
- if ($prop['display'] == 'display.visible') {
-
- } elseif ($prop['display'] == 'display.hidden') {
- $f += 1 << 1;
- } elseif ($prop['display'] == 'display.noPrint') {
- $f -= 1 << 2;
- } elseif ($prop['display'] == 'display.noView') {
- $f += 1 << 5;
- }
- }
- $opt['f'] = $f;
-
- if (isset($prop['currentValueIndices']) AND is_array($prop['currentValueIndices'])) {
- $opt['i'] = $prop['currentValueIndices'];
- }
-
- if (isset($prop['value'])) {
- if (is_array($prop['value'])) {
- $opt['opt'] = array();
- foreach ($prop['value'] AS $key => $optval) {
-
- if (isset($prop['exportValues'][$key])) {
- $opt['opt'][$key] = array($prop['exportValues'][$key], $prop['value'][$key]);
- } else {
- $opt['opt'][$key] = $prop['value'][$key];
- }
- }
- } else {
- $opt['v'] = $prop['value'];
- }
- }
-
- if (isset($prop['richValue'])) {
- $opt['rv'] = $prop['richValue'];
- }
-
- if (isset($prop['submitName'])) {
- $opt['tm'] = $prop['submitName'];
- }
-
- if (isset($prop['name'])) {
- $opt['t'] = $prop['name'];
- }
-
- if (isset($prop['userName'])) {
- $opt['tu'] = $prop['userName'];
- }
-
- if (isset($prop['highlight'])) {
- switch ($prop['highlight']) {
- case 'none':
- case 'highlight.n': {
- $opt['h'] = 'N';
- break;
- }
- case 'invert':
- case 'highlight.i': {
- $opt['h'] = 'i';
- break;
- }
- case 'push':
- case 'highlight.p': {
- $opt['h'] = 'P';
- break;
- }
- case 'outline':
- case 'highlight.o': {
- $opt['h'] = 'O';
- break;
- }
- }
- }
-
-
-
-
-
-
- return $opt;
- }
-
- public static function formatPageNumber($num) {
- return number_format((float)$num, 0, '', '.');
- }
-
- public static function formatTOCPageNumber($num) {
- return number_format((float)$num, 0, '', '.');
- }
-
- public static function extractCSSproperties($cssdata) {
- if (empty($cssdata)) {
- return array();
- }
-
- $cssdata = preg_replace('/\/\*[^\*]*\*\//', '', $cssdata);
-
- $cssdata = preg_replace('/[\s]+/', ' ', $cssdata);
-
- $cssdata = preg_replace('/[\s]*([;:\{\}]{1})[\s]*/', '\\1', $cssdata);
-
- $cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata);
-
- $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata);
- $cssdata = preg_replace('/\}\}/si', '}§', $cssdata);
-
- $cssdata = trim($cssdata);
-
- $cssblocks = array();
- $matches = array();
- if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) {
- foreach ($matches[1] as $key => $type) {
- $cssblocks[$type] = $matches[2][$key];
- }
-
- $cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata);
- }
-
- if (isset($cssblocks['all']) AND !empty($cssblocks['all'])) {
- $cssdata .= $cssblocks['all'];
- }
- if (isset($cssblocks['print']) AND !empty($cssblocks['print'])) {
- $cssdata .= $cssblocks['print'];
- }
-
- $cssblocks = array();
- $matches = array();
-
- if (substr($cssdata, -1) == '}') {
-
- $cssdata = substr($cssdata, 0, -1);
- }
- $matches = explode('}', $cssdata);
- foreach ($matches as $key => $block) {
-
- $cssblocks[$key] = explode('{', $block);
- if (!isset($cssblocks[$key][1])) {
-
- unset($cssblocks[$key]);
- }
- }
-
- foreach ($cssblocks as $key => $block) {
- if (strpos($block[0], ',') > 0) {
- $selectors = explode(',', $block[0]);
- foreach ($selectors as $sel) {
- $cssblocks[] = array(0 => trim($sel), 1 => $block[1]);
- }
- unset($cssblocks[$key]);
- }
- }
-
- $cssdata = array();
- foreach ($cssblocks as $block) {
- $selector = $block[0];
-
- $matches = array();
- $a = 0;
- $b = intval(preg_match_all('/[\#]/', $selector, $matches));
- $c = intval(preg_match_all('/[\[\.]/', $selector, $matches));
- $c += intval(preg_match_all('/[\:]link|visited|hover|active|focus|target|lang|enabled|disabled|checked|indeterminate|root|nth|first|last|only|empty|contains|not/i', $selector, $matches));
- $d = intval(preg_match_all('/[\>\+\~\s]{1}[a-zA-Z0-9]+/', ' '.$selector, $matches));
- $d += intval(preg_match_all('/[\:][\:]/', $selector, $matches));
- $specificity = $a.$b.$c.$d;
-
- $cssdata[$specificity.' '.$selector] = $block[1];
- }
-
- ksort($cssdata, SORT_STRING);
-
- return $cssdata;
- }
-
- public static function fixHTMLCode($html, $default_css, $tagvs, $tidy_options, &$tagvspaces) {
-
- if (TCPDF_STATIC::empty_string($tidy_options)) {
- $tidy_options = array (
- 'clean' => 1,
- 'drop-empty-paras' => 0,
- 'drop-proprietary-attributes' => 1,
- 'fix-backslash' => 1,
- 'hide-comments' => 1,
- 'join-styles' => 1,
- 'lower-literals' => 1,
- 'merge-divs' => 1,
- 'merge-spans' => 1,
- 'output-xhtml' => 1,
- 'word-2000' => 1,
- 'wrap' => 0,
- 'output-bom' => 0,
-
-
-
- );
- }
-
- $tidy = tidy_parse_string($html, $tidy_options);
-
- $tidy->cleanRepair();
-
- $tidy_head = tidy_get_head($tidy);
- $css = $tidy_head->value;
- $css = preg_replace('/<style([^>]+)>/ims', '<style>', $css);
- $css = preg_replace('/<\/style>(.*)<style>/ims', "\n", $css);
- $css = str_replace('/*<![CDATA[*/', '', $css);
- $css = str_replace('/*]]>*/', '', $css);
- preg_match('/<style>(.*)<\/style>/ims', $css, $matches);
- if (isset($matches[1])) {
- $css = strtolower($matches[1]);
- } else {
- $css = '';
- }
-
- $css = '<style>'.$default_css.$css.'</style>';
-
- $tidy_body = tidy_get_body($tidy);
- $html = $tidy_body->value;
-
- $html = str_replace('<br>', '<br />', $html);
-
- $html = preg_replace('/<div([^\>]*)><\/div>/', '', $html);
- $html = preg_replace('/<p([^\>]*)><\/p>/', '', $html);
- if (!TCPDF_STATIC::empty_string($tagvs)) {
-
- $tagvspaces = $tagvs;
- }
-
- return $css.$html;
- }
-
- public static function isValidCSSSelectorForTag($dom, $key, $selector) {
- $valid = false;
- $tag = $dom[$key]['value'];
- $class = array();
- if (isset($dom[$key]['attribute']['class']) AND !empty($dom[$key]['attribute']['class'])) {
- $class = explode(' ', strtolower($dom[$key]['attribute']['class']));
- }
- $id = '';
- if (isset($dom[$key]['attribute']['id']) AND !empty($dom[$key]['attribute']['id'])) {
- $id = strtolower($dom[$key]['attribute']['id']);
- }
- $selector = preg_replace('/([\>\+\~\s]{1})([\.]{1})([^\>\+\~\s]*)/si', '\\1*.\\3', $selector);
- $matches = array();
- if (preg_match_all('/([\>\+\~\s]{1})([a-zA-Z0-9\*]+)([^\>\+\~\s]*)/si', $selector, $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE) > 0) {
- $parentop = array_pop($matches[1]);
- $operator = $parentop[0];
- $offset = $parentop[1];
- $lasttag = array_pop($matches[2]);
- $lasttag = strtolower(trim($lasttag[0]));
- if (($lasttag == '*') OR ($lasttag == $tag)) {
-
- $attrib = array_pop($matches[3]);
- $attrib = strtolower(trim($attrib[0]));
- if (!empty($attrib)) {
-
- switch ($attrib[0]) {
- case '.': {
- if (in_array(substr($attrib, 1), $class)) {
- $valid = true;
- }
- break;
- }
- case '#': {
- if (substr($attrib, 1) == $id) {
- $valid = true;
- }
- break;
- }
- case '[': {
- $attrmatch = array();
- if (preg_match('/\[([a-zA-Z0-9]*)[\s]*([\~\^\$\*\|\=]*)[\s]*["]?([^"\]]*)["]?\]/i', $attrib, $attrmatch) > 0) {
- $att = strtolower($attrmatch[1]);
- $val = $attrmatch[3];
- if (isset($dom[$key]['attribute'][$att])) {
- switch ($attrmatch[2]) {
- case '=': {
- if ($dom[$key]['attribute'][$att] == $val) {
- $valid = true;
- }
- break;
- }
- case '~=': {
- if (in_array($val, explode(' ', $dom[$key]['attribute'][$att]))) {
- $valid = true;
- }
- break;
- }
- case '^=': {
- if ($val == substr($dom[$key]['attribute'][$att], 0, strlen($val))) {
- $valid = true;
- }
- break;
- }
- case '$=': {
- if ($val == substr($dom[$key]['attribute'][$att], -strlen($val))) {
- $valid = true;
- }
- break;
- }
- case '*=': {
- if (strpos($dom[$key]['attribute'][$att], $val) !== false) {
- $valid = true;
- }
- break;
- }
- case '|=': {
- if ($dom[$key]['attribute'][$att] == $val) {
- $valid = true;
- } elseif (preg_match('/'.$val.'[\-]{1}/i', $dom[$key]['attribute'][$att]) > 0) {
- $valid = true;
- }
- break;
- }
- default: {
- $valid = true;
- }
- }
- }
- }
- break;
- }
- case ':': {
- if ($attrib[1] == ':') {
-
-
- } else {
-
-
- }
- break;
- }
- }
- } else {
- $valid = true;
- }
- if ($valid AND ($offset > 0)) {
- $valid = false;
-
- $selector = substr($selector, 0, $offset);
- switch ($operator) {
- case ' ': {
- while ($dom[$key]['parent'] > 0) {
- if (self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector)) {
- $valid = true;
- break;
- } else {
- $key = $dom[$key]['parent'];
- }
- }
- break;
- }
- case '>': {
- $valid = self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector);
- break;
- }
- case '+': {
- for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) {
- if ($dom[$i]['tag'] AND $dom[$i]['opening']) {
- $valid = self::isValidCSSSelectorForTag($dom, $i, $selector);
- break;
- }
- }
- break;
- }
- case '~': {
- for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) {
- if ($dom[$i]['tag'] AND $dom[$i]['opening']) {
- if (self::isValidCSSSelectorForTag($dom, $i, $selector)) {
- break;
- }
- }
- }
- break;
- }
- }
- }
- }
- }
- return $valid;
- }
-
- public static function getCSSdataArray($dom, $key, $css) {
- $cssarray = array();
-
- $selectors = array();
- if (isset($dom[($dom[$key]['parent'])]['csssel'])) {
- $selectors = $dom[($dom[$key]['parent'])]['csssel'];
- }
-
- foreach($css as $selector => $style) {
- $pos = strpos($selector, ' ');
-
- $specificity = substr($selector, 0, $pos);
-
- $selector = substr($selector, $pos);
-
- if (self::isValidCSSSelectorForTag($dom, $key, $selector)) {
- if (!in_array($selector, $selectors)) {
-
- $cssarray[] = array('k' => $selector, 's' => $specificity, 'c' => $style);
- $selectors[] = $selector;
- }
- }
- }
- if (isset($dom[$key]['attribute']['style'])) {
-
- $cssarray[] = array('k' => '', 's' => '1000', 'c' => $dom[$key]['attribute']['style']);
- }
-
- $cssordered = array();
- foreach ($cssarray as $key => $val) {
- $skey = sprintf('%04d', $key);
- $cssordered[$val['s'].'_'.$skey] = $val;
- }
-
- ksort($cssordered, SORT_STRING);
- return array($selectors, $cssordered);
- }
-
- public static function getTagStyleFromCSSarray($css) {
- $tagstyle = '';
- foreach ($css as $style) {
-
- $csscmds = explode(';', $style['c']);
- foreach ($csscmds as $cmd) {
- if (!empty($cmd)) {
- $pos = strpos($cmd, ':');
- if ($pos !== false) {
- $cmd = substr($cmd, 0, ($pos + 1));
- if (strpos($tagstyle, $cmd) !== false) {
-
- $tagstyle = preg_replace('/'.$cmd.'[^;]+/i', '', $tagstyle);
- }
- }
- }
- }
- $tagstyle .= ';'.$style['c'];
- }
-
- $tagstyle = preg_replace('/[;]+/', ';', $tagstyle);
- return $tagstyle;
- }
-
- public static function intToRoman($number) {
- $roman = '';
- if ($number >= 4000) {
-
- return strval($number);
- }
- while ($number >= 1000) {
- $roman .= 'M';
- $number -= 1000;
- }
- while ($number >= 900) {
- $roman .= 'CM';
- $number -= 900;
- }
- while ($number >= 500) {
- $roman .= 'D';
- $number -= 500;
- }
- while ($number >= 400) {
- $roman .= 'CD';
- $number -= 400;
- }
- while ($number >= 100) {
- $roman .= 'C';
- $number -= 100;
- }
- while ($number >= 90) {
- $roman .= 'XC';
- $number -= 90;
- }
- while ($number >= 50) {
- $roman .= 'L';
- $number -= 50;
- }
- while ($number >= 40) {
- $roman .= 'XL';
- $number -= 40;
- }
- while ($number >= 10) {
- $roman .= 'X';
- $number -= 10;
- }
- while ($number >= 9) {
- $roman .= 'IX';
- $number -= 9;
- }
- while ($number >= 5) {
- $roman .= 'V';
- $number -= 5;
- }
- while ($number >= 4) {
- $roman .= 'IV';
- $number -= 4;
- }
- while ($number >= 1) {
- $roman .= 'I';
- --$number;
- }
- return $roman;
- }
-
- public static function revstrpos($haystack, $needle, $offset = 0) {
- $length = strlen($haystack);
- $offset = ($offset > 0)?($length - $offset):abs($offset);
- $pos = strpos(strrev($haystack), strrev($needle), $offset);
- return ($pos === false)?false:($length - $pos - strlen($needle));
- }
-
- public static function getHyphenPatternsFromTEX($file) {
-
-
- $data = file_get_contents($file);
- $patterns = array();
-
- $data = preg_replace('/\%[^\n]*/', '', $data);
-
- preg_match('/\\\\patterns\{([^\}]*)\}/i', $data, $matches);
- $data = trim(substr($matches[0], 10, -1));
-
- $patterns_array = preg_split('/[\s]+/', $data);
-
- $patterns = array();
- foreach($patterns_array as $val) {
- if (!TCPDF_STATIC::empty_string($val)) {
- $val = trim($val);
- $val = str_replace('\'', '\\\'', $val);
- $key = preg_replace('/[0-9]+/', '', $val);
- $patterns[$key] = $val;
- }
- }
- return $patterns;
- }
-
- public static function getPathPaintOperator($style, $default='S') {
- $op = '';
- switch($style) {
- case 'S':
- case 'D': {
- $op = 'S';
- break;
- }
- case 's':
- case 'd': {
- $op = 's';
- break;
- }
- case 'f':
- case 'F': {
- $op = 'f';
- break;
- }
- case 'f*':
- case 'F*': {
- $op = 'f*';
- break;
- }
- case 'B':
- case 'FD':
- case 'DF': {
- $op = 'B';
- break;
- }
- case 'B*':
- case 'F*D':
- case 'DF*': {
- $op = 'B*';
- break;
- }
- case 'b':
- case 'fd':
- case 'df': {
- $op = 'b';
- break;
- }
- case 'b*':
- case 'f*d':
- case 'df*': {
- $op = 'b*';
- break;
- }
- case 'CNZ': {
- $op = 'W n';
- break;
- }
- case 'CEO': {
- $op = 'W* n';
- break;
- }
- case 'n': {
- $op = 'n';
- break;
- }
- default: {
- if (!empty($default)) {
- $op = self::getPathPaintOperator($default, '');
- } else {
- $op = '';
- }
- }
- }
- return $op;
- }
-
- public static function getTransformationMatrixProduct($ta, $tb) {
- $tm = array();
- $tm[0] = ($ta[0] * $tb[0]) + ($ta[2] * $tb[1]);
- $tm[1] = ($ta[1] * $tb[0]) + ($ta[3] * $tb[1]);
- $tm[2] = ($ta[0] * $tb[2]) + ($ta[2] * $tb[3]);
- $tm[3] = ($ta[1] * $tb[2]) + ($ta[3] * $tb[3]);
- $tm[4] = ($ta[0] * $tb[4]) + ($ta[2] * $tb[5]) + $ta[4];
- $tm[5] = ($ta[1] * $tb[4]) + ($ta[3] * $tb[5]) + $ta[5];
- return $tm;
- }
-
- public static function getSVGTransformMatrix($attribute) {
-
- $tm = array(1, 0, 0, 1, 0, 0);
- $transform = array();
- if (preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)[\s]*\(([^\)]+)\)/si', $attribute, $transform, PREG_SET_ORDER) > 0) {
- foreach ($transform as $key => $data) {
- if (!empty($data[2])) {
- $a = 1;
- $b = 0;
- $c = 0;
- $d = 1;
- $e = 0;
- $f = 0;
- $regs = array();
- switch ($data[1]) {
- case 'matrix': {
- if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $a = $regs[1];
- $b = $regs[2];
- $c = $regs[3];
- $d = $regs[4];
- $e = $regs[5];
- $f = $regs[6];
- }
- break;
- }
- case 'translate': {
- if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $e = $regs[1];
- $f = $regs[2];
- } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $e = $regs[1];
- }
- break;
- }
- case 'scale': {
- if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $a = $regs[1];
- $d = $regs[2];
- } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $a = $regs[1];
- $d = $a;
- }
- break;
- }
- case 'rotate': {
- if (preg_match('/([0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
- $ang = deg2rad($regs[1]);
- $x = $regs[2];
- $y = $regs[3];
- $a = cos($ang);
- $b = sin($ang);
- $c = -$b;
- $d = $a;
- $e = ($x * (1 - $a)) - ($y * $c);
- $f = ($y * (1 - $d)) - ($x * $b);
- } elseif (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
- $ang = deg2rad($regs[1]);
- $a = cos($ang);
- $b = sin($ang);
- $c = -$b;
- $d = $a;
- $e = 0;
- $f = 0;
- }
- break;
- }
- case 'skewX': {
- if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
- $c = tan(deg2rad($regs[1]));
- }
- break;
- }
- case 'skewY': {
- if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
- $b = tan(deg2rad($regs[1]));
- }
- break;
- }
- }
- $tm = self::getTransformationMatrixProduct($tm, array($a, $b, $c, $d, $e, $f));
- }
- }
- }
- return $tm;
- }
-
- public static function getVectorsAngle($x1, $y1, $x2, $y2) {
- $dprod = ($x1 * $x2) + ($y1 * $y2);
- $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1));
- $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2));
- $angle = acos($dprod / ($dist1 * $dist2));
- if (is_nan($angle)) {
- $angle = M_PI;
- }
- if ((($x1 * $y2) - ($x2 * $y1)) < 0) {
- $angle *= -1;
- }
- return $angle;
- }
-
- public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) {
-
- $limit = $limit === null ? -1 : $limit;
- $flags = $flags === null ? 0 : $flags;
-
- if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) {
- return preg_split($pattern.$modifiers, $subject, $limit, $flags);
- }
-
- $ret = array();
- while (($nl = strpos($subject, "\n")) !== FALSE) {
- $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags));
- $ret[] = "\n";
- $subject = substr($subject, ($nl + 1));
- }
- if (strlen($subject) > 0) {
- $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags));
- }
- return $ret;
- }
-
- public static function fopenLocal($filename, $mode) {
- if (strpos($filename, '://') === false) {
- $filename = 'file://'.$filename;
- } elseif (stream_is_local($filename) !== true) {
- return false;
- }
- return fopen($filename, $mode);
- }
-
- public static function url_exists($url) {
- $crs = curl_init();
-
- $url = self::encodeUrlQuery($url);
- curl_setopt($crs, CURLOPT_URL, $url);
- curl_setopt($crs, CURLOPT_NOBODY, true);
- curl_setopt($crs, CURLOPT_FAILONERROR, true);
- if ((ini_get('open_basedir') == '') && (!ini_get('safe_mode'))) {
- curl_setopt($crs, CURLOPT_FOLLOWLOCATION, true);
- }
- curl_setopt($crs, CURLOPT_CONNECTTIMEOUT, 5);
- curl_setopt($crs, CURLOPT_TIMEOUT, 30);
- curl_setopt($crs, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($crs, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($crs, CURLOPT_USERAGENT, 'tc-lib-file');
- curl_setopt($crs, CURLOPT_MAXREDIRS, 5);
- if (defined('CURLOPT_PROTOCOLS')) {
- curl_setopt($crs, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS | CURLPROTO_HTTP | CURLPROTO_FTP | CURLPROTO_FTPS);
- }
- curl_exec($crs);
- $code = curl_getinfo($crs, CURLINFO_HTTP_CODE);
- curl_close($crs);
- return ($code == 200);
- }
-
- public static function encodeUrlQuery($url) {
- $urlData = parse_url($url);
- if (isset($urlData['query']) && $urlData['query']) {
- $urlQueryData = array();
- parse_str(urldecode($urlData['query']), $urlQueryData);
- $updatedUrl = $urlData['scheme'] . '://' . $urlData['host'] . $urlData['path'] . '?' . http_build_query($urlQueryData);
- } else {
- $updatedUrl = $url;
- }
- return $updatedUrl;
- }
-
- public static function file_exists($filename) {
- if (preg_match('|^https?://|', $filename) == 1) {
- return self::url_exists($filename);
- }
- if (strpos($filename, '://')) {
- return false;
- }
- return @file_exists($filename);
- }
-
- public static function fileGetContents($file) {
- $alt = array($file);
-
- if ((strlen($file) > 1)
- && ($file[0] === '/')
- && ($file[1] !== '/')
- && !empty($_SERVER['DOCUMENT_ROOT'])
- && ($_SERVER['DOCUMENT_ROOT'] !== '/')
- ) {
- $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']);
- if (($findroot === false) || ($findroot > 1)) {
- $alt[] = htmlspecialchars_decode(urldecode($_SERVER['DOCUMENT_ROOT'].$file));
- }
- }
-
- $protocol = 'http';
- if (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) {
- $protocol .= 's';
- }
-
- $url = $file;
- if (preg_match('%^//%', $url) && !empty($_SERVER['HTTP_HOST'])) {
- $url = $protocol.':'.str_replace(' ', '%20', $url);
- }
- $url = htmlspecialchars_decode($url);
- $alt[] = $url;
-
- if (preg_match('%^(https?)://%', $url)
- && empty($_SERVER['HTTP_HOST'])
- && empty($_SERVER['DOCUMENT_ROOT'])
- ) {
- $urldata = parse_url($url);
- if (empty($urldata['query'])) {
- $host = $protocol.'://'.$_SERVER['HTTP_HOST'];
- if (strpos($url, $host) === 0) {
-
- $tmp = str_replace($host, $_SERVER['DOCUMENT_ROOT'], $url);
- $alt[] = htmlspecialchars_decode(urldecode($tmp));
- }
- }
- }
-
- if (isset($_SERVER['SCRIPT_URI'])
- && !preg_match('%^(https?|ftp)://%', $file)
- && !preg_match('%^//%', $file)
- ) {
- $urldata = @parse_url($_SERVER['SCRIPT_URI']);
- $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file;
- }
-
- $alt = array_unique($alt);
- foreach ($alt as $path) {
- if (!self::file_exists($path)) {
- continue;
- }
- $ret = @file_get_contents($path);
- if ( $ret != false ) {
- return $ret;
- }
-
- if (!ini_get('allow_url_fopen')
- && function_exists('curl_init')
- && preg_match('%^(https?|ftp)://%', $path)
- ) {
-
- $crs = curl_init();
- curl_setopt($crs, CURLOPT_URL, $path);
- curl_setopt($crs, CURLOPT_BINARYTRANSFER, true);
- curl_setopt($crs, CURLOPT_FAILONERROR, true);
- curl_setopt($crs, CURLOPT_RETURNTRANSFER, true);
- if ((ini_get('open_basedir') == '') && (!ini_get('safe_mode'))) {
- curl_setopt($crs, CURLOPT_FOLLOWLOCATION, true);
- }
- curl_setopt($crs, CURLOPT_CONNECTTIMEOUT, 5);
- curl_setopt($crs, CURLOPT_TIMEOUT, 30);
- curl_setopt($crs, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($crs, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($crs, CURLOPT_USERAGENT, 'tc-lib-file');
- curl_setopt($crs, CURLOPT_MAXREDIRS, 5);
- if (defined('CURLOPT_PROTOCOLS')) {
- curl_setopt($crs, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS | CURLPROTO_HTTP | CURLPROTO_FTP | CURLPROTO_FTPS);
- }
- $ret = curl_exec($crs);
- curl_close($crs);
- if ($ret !== false) {
- return $ret;
- }
- }
- }
- return false;
- }
-
- public static function _getULONG($str, $offset) {
- $v = unpack('Ni', substr($str, $offset, 4));
- return $v['i'];
- }
-
- public static function _getUSHORT($str, $offset) {
- $v = unpack('ni', substr($str, $offset, 2));
- return $v['i'];
- }
-
- public static function _getSHORT($str, $offset) {
- $v = unpack('si', substr($str, $offset, 2));
- return $v['i'];
- }
-
- public static function _getFWORD($str, $offset) {
- $v = self::_getUSHORT($str, $offset);
- if ($v > 0x7fff) {
- $v -= 0x10000;
- }
- return $v;
- }
-
- public static function _getUFWORD($str, $offset) {
- $v = self::_getUSHORT($str, $offset);
- return $v;
- }
-
- public static function _getFIXED($str, $offset) {
-
- $m = self::_getFWORD($str, $offset);
-
- $f = self::_getUSHORT($str, ($offset + 2));
- $v = floatval(''.$m.'.'.$f.'');
- return $v;
- }
-
- public static function _getBYTE($str, $offset) {
- $v = unpack('Ci', substr($str, $offset, 1));
- return $v['i'];
- }
-
- public static function rfread($handle, $length) {
- $data = fread($handle, $length);
- if ($data === false) {
- return false;
- }
- $rest = ($length - strlen($data));
- if (($rest > 0) && !feof($handle)) {
- $data .= self::rfread($handle, $rest);
- }
- return $data;
- }
-
- public static function _freadint($f) {
- $a = unpack('Ni', fread($f, 4));
- return $a['i'];
- }
-
- public static $page_formats = array(
-
- 'A0' => array( 2383.937, 3370.394),
- 'A1' => array( 1683.780, 2383.937),
- 'A2' => array( 1190.551, 1683.780),
- 'A3' => array( 841.890, 1190.551),
- 'A4' => array( 595.276, 841.890),
- 'A5' => array( 419.528, 595.276),
- 'A6' => array( 297.638, 419.528),
- 'A7' => array( 209.764, 297.638),
- 'A8' => array( 147.402, 209.764),
- 'A9' => array( 104.882, 147.402),
- 'A10' => array( 73.701, 104.882),
- 'A11' => array( 51.024, 73.701),
- 'A12' => array( 36.850, 51.024),
-
- 'B0' => array( 2834.646, 4008.189),
- 'B1' => array( 2004.094, 2834.646),
- 'B2' => array( 1417.323, 2004.094),
- 'B3' => array( 1000.630, 1417.323),
- 'B4' => array( 708.661, 1000.630),
- 'B5' => array( 498.898, 708.661),
- 'B6' => array( 354.331, 498.898),
- 'B7' => array( 249.449, 354.331),
- 'B8' => array( 175.748, 249.449),
- 'B9' => array( 124.724, 175.748),
- 'B10' => array( 87.874, 124.724),
- 'B11' => array( 62.362, 87.874),
- 'B12' => array( 42.520, 62.362),
-
- 'C0' => array( 2599.370, 3676.535),
- 'C1' => array( 1836.850, 2599.370),
- 'C2' => array( 1298.268, 1836.850),
- 'C3' => array( 918.425, 1298.268),
- 'C4' => array( 649.134, 918.425),
- 'C5' => array( 459.213, 649.134),
- 'C6' => array( 323.150, 459.213),
- 'C7' => array( 229.606, 323.150),
- 'C8' => array( 161.575, 229.606),
- 'C9' => array( 113.386, 161.575),
- 'C10' => array( 79.370, 113.386),
- 'C11' => array( 56.693, 79.370),
- 'C12' => array( 39.685, 56.693),
- 'C76' => array( 229.606, 459.213),
- 'DL' => array( 311.811, 623.622),
- 'DLE' => array( 323.150, 637.795),
- 'DLX' => array( 340.158, 666.142),
- 'DLP' => array( 280.630, 595.276),
-
- 'E0' => array( 2491.654, 3517.795),
- 'E1' => array( 1757.480, 2491.654),
- 'E2' => array( 1247.244, 1757.480),
- 'E3' => array( 878.740, 1247.244),
- 'E4' => array( 623.622, 878.740),
- 'E5' => array( 439.370, 623.622),
- 'E6' => array( 311.811, 439.370),
- 'E7' => array( 221.102, 311.811),
- 'E8' => array( 155.906, 221.102),
- 'E9' => array( 110.551, 155.906),
- 'E10' => array( 76.535, 110.551),
- 'E11' => array( 53.858, 76.535),
- 'E12' => array( 36.850, 53.858),
-
- 'G0' => array( 2715.591, 3838.110),
- 'G1' => array( 1919.055, 2715.591),
- 'G2' => array( 1357.795, 1919.055),
- 'G3' => array( 958.110, 1357.795),
- 'G4' => array( 677.480, 958.110),
- 'G5' => array( 479.055, 677.480),
- 'G6' => array( 337.323, 479.055),
- 'G7' => array( 238.110, 337.323),
- 'G8' => array( 167.244, 238.110),
- 'G9' => array( 119.055, 167.244),
- 'G10' => array( 82.205, 119.055),
- 'G11' => array( 59.528, 82.205),
- 'G12' => array( 39.685, 59.528),
-
- 'RA0' => array( 2437.795, 3458.268),
- 'RA1' => array( 1729.134, 2437.795),
- 'RA2' => array( 1218.898, 1729.134),
- 'RA3' => array( 864.567, 1218.898),
- 'RA4' => array( 609.449, 864.567),
- 'SRA0' => array( 2551.181, 3628.346),
- 'SRA1' => array( 1814.173, 2551.181),
- 'SRA2' => array( 1275.591, 1814.173),
- 'SRA3' => array( 907.087, 1275.591),
- 'SRA4' => array( 637.795, 907.087),
-
- '4A0' => array( 4767.874, 6740.787),
- '2A0' => array( 3370.394, 4767.874),
-
- 'A2_EXTRA' => array( 1261.417, 1754.646),
- 'A3+' => array( 932.598, 1369.134),
- 'A3_EXTRA' => array( 912.756, 1261.417),
- 'A3_SUPER' => array( 864.567, 1440.000),
- 'SUPER_A3' => array( 864.567, 1380.472),
- 'A4_EXTRA' => array( 666.142, 912.756),
- 'A4_SUPER' => array( 649.134, 912.756),
- 'SUPER_A4' => array( 643.465, 1009.134),
- 'A4_LONG' => array( 595.276, 986.457),
- 'F4' => array( 595.276, 935.433),
- 'SO_B5_EXTRA' => array( 572.598, 782.362),
- 'A5_EXTRA' => array( 490.394, 666.142),
-
- 'ANSI_E' => array( 2448.000, 3168.000),
- 'ANSI_D' => array( 1584.000, 2448.000),
- 'ANSI_C' => array( 1224.000, 1584.000),
- 'ANSI_B' => array( 792.000, 1224.000),
- 'ANSI_A' => array( 612.000, 792.000),
-
- 'USLEDGER' => array( 1224.000, 792.000),
- 'LEDGER' => array( 1224.000, 792.000),
- 'ORGANIZERK' => array( 792.000, 1224.000),
- 'BIBLE' => array( 792.000, 1224.000),
- 'USTABLOID' => array( 792.000, 1224.000),
- 'TABLOID' => array( 792.000, 1224.000),
- 'ORGANIZERM' => array( 612.000, 792.000),
- 'USLETTER' => array( 612.000, 792.000),
- 'LETTER' => array( 612.000, 792.000),
- 'USLEGAL' => array( 612.000, 1008.000),
- 'LEGAL' => array( 612.000, 1008.000),
- 'GOVERNMENTLETTER' => array( 576.000, 756.000),
- 'GLETTER' => array( 576.000, 756.000),
- 'JUNIORLEGAL' => array( 576.000, 360.000),
- 'JLEGAL' => array( 576.000, 360.000),
-
- 'QUADDEMY' => array( 2520.000, 3240.000),
- 'SUPER_B' => array( 936.000, 1368.000),
- 'QUARTO' => array( 648.000, 792.000),
- 'GOVERNMENTLEGAL' => array( 612.000, 936.000),
- 'FOLIO' => array( 612.000, 936.000),
- 'MONARCH' => array( 522.000, 756.000),
- 'EXECUTIVE' => array( 522.000, 756.000),
- 'ORGANIZERL' => array( 396.000, 612.000),
- 'STATEMENT' => array( 396.000, 612.000),
- 'MEMO' => array( 396.000, 612.000),
- 'FOOLSCAP' => array( 595.440, 936.000),
- 'COMPACT' => array( 306.000, 486.000),
- 'ORGANIZERJ' => array( 198.000, 360.000),
-
- 'P1' => array( 1587.402, 2437.795),
- 'P2' => array( 1218.898, 1587.402),
- 'P3' => array( 793.701, 1218.898),
- 'P4' => array( 609.449, 793.701),
- 'P5' => array( 396.850, 609.449),
- 'P6' => array( 303.307, 396.850),
-
- 'ARCH_E' => array( 2592.000, 3456.000),
- 'ARCH_E1' => array( 2160.000, 3024.000),
- 'ARCH_D' => array( 1728.000, 2592.000),
- 'BROADSHEET' => array( 1296.000, 1728.000),
- 'ARCH_C' => array( 1296.000, 1728.000),
- 'ARCH_B' => array( 864.000, 1296.000),
- 'ARCH_A' => array( 648.000, 864.000),
-
-
- 'ANNENV_A2' => array( 314.640, 414.000),
- 'ANNENV_A6' => array( 342.000, 468.000),
- 'ANNENV_A7' => array( 378.000, 522.000),
- 'ANNENV_A8' => array( 396.000, 584.640),
- 'ANNENV_A10' => array( 450.000, 692.640),
- 'ANNENV_SLIM' => array( 278.640, 638.640),
-
- 'COMMENV_N6_1/4' => array( 252.000, 432.000),
- 'COMMENV_N6_3/4' => array( 260.640, 468.000),
- 'COMMENV_N8' => array( 278.640, 540.000),
- 'COMMENV_N9' => array( 278.640, 638.640),
- 'COMMENV_N10' => array( 296.640, 684.000),
- 'COMMENV_N11' => array( 324.000, 746.640),
- 'COMMENV_N12' => array( 342.000, 792.000),
- 'COMMENV_N14' => array( 360.000, 828.000),
-
- 'CATENV_N1' => array( 432.000, 648.000),
- 'CATENV_N1_3/4' => array( 468.000, 684.000),
- 'CATENV_N2' => array( 468.000, 720.000),
- 'CATENV_N3' => array( 504.000, 720.000),
- 'CATENV_N6' => array( 540.000, 756.000),
- 'CATENV_N7' => array( 576.000, 792.000),
- 'CATENV_N8' => array( 594.000, 810.000),
- 'CATENV_N9_1/2' => array( 612.000, 756.000),
- 'CATENV_N9_3/4' => array( 630.000, 810.000),
- 'CATENV_N10_1/2' => array( 648.000, 864.000),
- 'CATENV_N12_1/2' => array( 684.000, 900.000),
- 'CATENV_N13_1/2' => array( 720.000, 936.000),
- 'CATENV_N14_1/4' => array( 810.000, 882.000),
- 'CATENV_N14_1/2' => array( 828.000, 1044.000),
-
- 'JIS_B0' => array( 2919.685, 4127.244),
- 'JIS_B1' => array( 2063.622, 2919.685),
- 'JIS_B2' => array( 1459.843, 2063.622),
- 'JIS_B3' => array( 1031.811, 1459.843),
- 'JIS_B4' => array( 728.504, 1031.811),
- 'JIS_B5' => array( 515.906, 728.504),
- 'JIS_B6' => array( 362.835, 515.906),
- 'JIS_B7' => array( 257.953, 362.835),
- 'JIS_B8' => array( 181.417, 257.953),
- 'JIS_B9' => array( 127.559, 181.417),
- 'JIS_B10' => array( 90.709, 127.559),
- 'JIS_B11' => array( 62.362, 90.709),
- 'JIS_B12' => array( 45.354, 62.362),
-
- 'PA0' => array( 2381.102, 3174.803),
- 'PA1' => array( 1587.402, 2381.102),
- 'PA2' => array( 1190.551, 1587.402),
- 'PA3' => array( 793.701, 1190.551),
- 'PA4' => array( 595.276, 793.701),
- 'PA5' => array( 396.850, 595.276),
- 'PA6' => array( 297.638, 396.850),
- 'PA7' => array( 198.425, 297.638),
- 'PA8' => array( 147.402, 198.425),
- 'PA9' => array( 99.213, 147.402),
- 'PA10' => array( 73.701, 99.213),
-
- 'PASSPORT_PHOTO' => array( 99.213, 127.559),
- 'E' => array( 233.858, 340.157),
- 'L' => array( 252.283, 360.000),
- '3R' => array( 252.283, 360.000),
- 'KG' => array( 289.134, 430.866),
- '4R' => array( 289.134, 430.866),
- '4D' => array( 340.157, 430.866),
- '2L' => array( 360.000, 504.567),
- '5R' => array( 360.000, 504.567),
- '8P' => array( 430.866, 575.433),
- '6R' => array( 430.866, 575.433),
- '6P' => array( 575.433, 720.000),
- '8R' => array( 575.433, 720.000),
- '6PW' => array( 575.433, 864.567),
- 'S8R' => array( 575.433, 864.567),
- '4P' => array( 720.000, 864.567),
- '10R' => array( 720.000, 864.567),
- '4PW' => array( 720.000, 1080.000),
- 'S10R' => array( 720.000, 1080.000),
- '11R' => array( 790.866, 1009.134),
- 'S11R' => array( 790.866, 1224.567),
- '12R' => array( 864.567, 1080.000),
- 'S12R' => array( 864.567, 1292.598),
-
- 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787),
- 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913),
- 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701),
- 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701),
-
- 'CREDIT_CARD' => array( 153.014, 242.646),
- 'BUSINESS_CARD' => array( 153.014, 242.646),
- 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646),
- 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764),
- 'BUSINESS_CARD_IT' => array( 155.906, 240.945),
- 'BUSINESS_CARD_UK' => array( 155.906, 240.945),
- 'BUSINESS_CARD_FR' => array( 155.906, 240.945),
- 'BUSINESS_CARD_DE' => array( 155.906, 240.945),
- 'BUSINESS_CARD_ES' => array( 155.906, 240.945),
- 'BUSINESS_CARD_CA' => array( 144.567, 252.283),
- 'BUSINESS_CARD_US' => array( 144.567, 252.283),
- 'BUSINESS_CARD_JP' => array( 155.906, 257.953),
- 'BUSINESS_CARD_HK' => array( 153.071, 255.118),
- 'BUSINESS_CARD_AU' => array( 155.906, 255.118),
- 'BUSINESS_CARD_DK' => array( 155.906, 255.118),
- 'BUSINESS_CARD_SE' => array( 155.906, 255.118),
- 'BUSINESS_CARD_RU' => array( 141.732, 255.118),
- 'BUSINESS_CARD_CZ' => array( 141.732, 255.118),
- 'BUSINESS_CARD_FI' => array( 141.732, 255.118),
- 'BUSINESS_CARD_HU' => array( 141.732, 255.118),
- 'BUSINESS_CARD_IL' => array( 141.732, 255.118),
-
- '4SHEET' => array( 2880.000, 4320.000),
- '6SHEET' => array( 3401.575, 5102.362),
- '12SHEET' => array( 8640.000, 4320.000),
- '16SHEET' => array( 5760.000, 8640.000),
- '32SHEET' => array(11520.000, 8640.000),
- '48SHEET' => array(17280.000, 8640.000),
- '64SHEET' => array(23040.000, 8640.000),
- '96SHEET' => array(34560.000, 8640.000),
-
-
- 'EN_EMPEROR' => array( 3456.000, 5184.000),
- 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000),
- 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000),
- 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000),
- 'EN_ATLAS' => array( 1872.000, 2448.000),
- 'EN_COLOMBIER' => array( 1692.000, 2484.000),
- 'EN_ELEPHANT' => array( 1656.000, 2016.000),
- 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000),
- 'EN_IMPERIAL' => array( 1584.000, 2160.000),
- 'EN_PRINCESS' => array( 1548.000, 2016.000),
- 'EN_CARTRIDGE' => array( 1512.000, 1872.000),
- 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000),
- 'EN_ROYAL' => array( 1440.000, 1800.000),
- 'EN_SHEET' => array( 1404.000, 1692.000),
- 'EN_HALF_POST' => array( 1404.000, 1692.000),
- 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000),
- 'EN_DOUBLE_POST' => array( 1368.000, 2196.000),
- 'EN_MEDIUM' => array( 1260.000, 1656.000),
- 'EN_DEMY' => array( 1260.000, 1620.000),
- 'EN_LARGE_POST' => array( 1188.000, 1512.000),
- 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000),
- 'EN_POST' => array( 1116.000, 1386.000),
- 'EN_CROWN' => array( 1080.000, 1440.000),
- 'EN_PINCHED_POST' => array( 1062.000, 1332.000),
- 'EN_BRIEF' => array( 972.000, 1152.000),
- 'EN_FOOLSCAP' => array( 972.000, 1224.000),
- 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000),
- 'EN_POTT' => array( 900.000, 1080.000),
-
- 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031),
- 'BE_COLOMBIER' => array( 1757.480, 2409.449),
- 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874),
- 'BE_ELEPHANT' => array( 1746.142, 2182.677),
- 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102),
- 'BE_GRAND_JESUS' => array( 1559.055, 2069.291),
- 'BE_JESUS' => array( 1530.709, 2069.291),
- 'BE_RAISIN' => array( 1417.323, 1842.520),
- 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961),
- 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575),
- 'BE_COQUILLE' => array( 1218.898, 1587.402),
- 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362),
- 'BE_RUCHE' => array( 1020.472, 1303.937),
- 'BE_PROPATRIA' => array( 977.953, 1218.898),
- 'BE_LYS' => array( 898.583, 1125.354),
- 'BE_POT' => array( 870.236, 1088.504),
- 'BE_ROSETTE' => array( 765.354, 983.622),
-
- 'FR_UNIVERS' => array( 2834.646, 3685.039),
- 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654),
- 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654),
- 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575),
- 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803),
- 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724),
- 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567),
- 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646),
- 'FR_JOURNAL' => array( 1842.520, 2664.567),
- 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181),
- 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874),
- 'FR_CLOCHE' => array( 1700.787, 2267.717),
- 'FR_SOLEIL' => array( 1700.787, 2267.717),
- 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181),
- 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488),
- 'FR_JESUS' => array( 1587.402, 2154.331),
- 'FR_RAISIN' => array( 1417.323, 1842.520),
- 'FR_CAVALIER' => array( 1303.937, 1757.480),
- 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945),
- 'FR_CARRE' => array( 1275.591, 1587.402),
- 'FR_COQUILLE' => array( 1247.244, 1587.402),
- 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559),
- 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787),
- 'FR_DOUBLE_POT' => array( 1133.858, 1757.480),
- 'FR_ECU' => array( 1133.858, 1474.016),
- 'FR_COURONNE' => array( 1020.472, 1303.937),
- 'FR_TELLIERE' => array( 963.780, 1247.244),
- 'FR_POT' => array( 878.740, 1133.858),
- );
-
- public static function getPageSizeFromFormat($format) {
- if (isset(self::$page_formats[$format])) {
- return self::$page_formats[$format];
- }
- return self::$page_formats['A4'];
- }
-
- public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points, $k, $pagedim=array()) {
- if (!isset($pagedim[$page])) {
-
- $pagedim[$page] = array();
- }
- if (!in_array($type, self::$pageboxes)) {
- return;
- }
- if ($points) {
- $k = 1;
- }
- $pagedim[$page][$type]['llx'] = ($llx * $k);
- $pagedim[$page][$type]['lly'] = ($lly * $k);
- $pagedim[$page][$type]['urx'] = ($urx * $k);
- $pagedim[$page][$type]['ury'] = ($ury * $k);
- return $pagedim;
- }
-
- public static function swapPageBoxCoordinates($page, $pagedim) {
- foreach (self::$pageboxes as $type) {
-
- if (isset($pagedim[$page][$type])) {
- $tmp = $pagedim[$page][$type]['llx'];
- $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly'];
- $pagedim[$page][$type]['lly'] = $tmp;
- $tmp = $pagedim[$page][$type]['urx'];
- $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury'];
- $pagedim[$page][$type]['ury'] = $tmp;
- }
- }
- return $pagedim;
- }
-
- public static function getPageLayoutMode($layout='SinglePage') {
- switch ($layout) {
- case 'default':
- case 'single':
- case 'SinglePage': {
- $layout_mode = 'SinglePage';
- break;
- }
- case 'continuous':
- case 'OneColumn': {
- $layout_mode = 'OneColumn';
- break;
- }
- case 'two':
- case 'TwoColumnLeft': {
- $layout_mode = 'TwoColumnLeft';
- break;
- }
- case 'TwoColumnRight': {
- $layout_mode = 'TwoColumnRight';
- break;
- }
- case 'TwoPageLeft': {
- $layout_mode = 'TwoPageLeft';
- break;
- }
- case 'TwoPageRight': {
- $layout_mode = 'TwoPageRight';
- break;
- }
- default: {
- $layout_mode = 'SinglePage';
- }
- }
- return $layout_mode;
- }
-
- public static function getPageMode($mode='UseNone') {
- switch ($mode) {
- case 'UseNone': {
- $page_mode = 'UseNone';
- break;
- }
- case 'UseOutlines': {
- $page_mode = 'UseOutlines';
- break;
- }
- case 'UseThumbs': {
- $page_mode = 'UseThumbs';
- break;
- }
- case 'FullScreen': {
- $page_mode = 'FullScreen';
- break;
- }
- case 'UseOC': {
- $page_mode = 'UseOC';
- break;
- }
- case '': {
- $page_mode = 'UseAttachments';
- break;
- }
- default: {
- $page_mode = 'UseNone';
- }
- }
- return $page_mode;
- }
- }
|