| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- //
- // FPDI - Version 1.2
- //
- // Copyright 2004-2007 Setasign - Jan Slabon
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- if (!defined("ORD_z"))
- define("ORD_z",ord('z'));
- if (!defined("ORD_exclmark"))
- define("ORD_exclmark", ord('!'));
- if (!defined("ORD_u"))
- define("ORD_u", ord("u"));
- if (!defined("ORD_tilde"))
- define("ORD_tilde", ord('~'));
- class ASCII85Decode {
- function ASCII85Decode(&$fpdi) {
- $this->fpdi =& $fpdi;
- }
- function decode($in) {
- $out = "";
- $state = 0;
- $chn = null;
-
- $l = strlen($in);
-
- for ($k = 0; $k < $l; ++$k) {
- $ch = ord($in[$k]) & 0xff;
-
- if ($ch == ORD_tilde) {
- break;
- }
- if (preg_match("/^\s$/",chr($ch))) {
- continue;
- }
- if ($ch == ORD_z && $state == 0) {
- $out .= chr(0).chr(0).chr(0).chr(0);
- continue;
- }
- if ($ch < ORD_exclmark || $ch > ORD_u) {
- $this->fpdi->error("Illegal character in ASCII85Decode.");
- }
-
- $chn[$state++] = $ch - ORD_exclmark;
-
- if ($state == 5) {
- $state = 0;
- $r = 0;
- for ($j = 0; $j < 5; ++$j)
- $r = $r * 85 + $chn[$j];
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- $out .= chr($r >> 8);
- $out .= chr($r);
- }
- }
- $r = 0;
-
- if ($state == 1)
- $this->fpdi->error("Illegal length in ASCII85Decode.");
- if ($state == 2) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
- $out .= chr($r >> 24);
- }
- else if ($state == 3) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- }
- else if ($state == 4) {
- $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
- $out .= chr($r >> 24);
- $out .= chr($r >> 16);
- $out .= chr($r >> 8);
- }
- return $out;
- }
- }
- ?>
|