Projet

Général

Profil

Paste
Télécharger (2,82 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / libraries / fpdi-version / pdf_context.php @ d69c481e

1
<?php
2
//
3
//  FPDI - Version 1.4.4
4
//
5
//    Copyright 2004-2013 Setasign - Jan Slabon
6
//
7
//  Licensed under the Apache License, Version 2.0 (the "License");
8
//  you may not use this file except in compliance with the License.
9
//  You may obtain a copy of the License at
10
//
11
//      http://www.apache.org/licenses/LICENSE-2.0
12
//
13
//  Unless required by applicable law or agreed to in writing, software
14
//  distributed under the License is distributed on an "AS IS" BASIS,
15
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
//  See the License for the specific language governing permissions and
17
//  limitations under the License.
18
//
19

    
20
if (!class_exists('pdf_context', false)) {
21
    
22
    class pdf_context {
23
    
24
        /**
25
         * Modi
26
         *
27
         * @var integer 0 = file | 1 = string
28
         */
29
        var $_mode = 0;
30
        
31
            var $file;
32
            var $buffer;
33
            var $offset;
34
            var $length;
35
    
36
            var $stack;
37
    
38
            // Constructor
39
    
40
            function pdf_context(&$f) {
41
                    $this->file =& $f;
42
                    if (is_string($this->file))
43
                        $this->_mode = 1;
44
                    $this->reset();
45
            }
46
    
47
            // Optionally move the file
48
            // pointer to a new location
49
            // and reset the buffered data
50
    
51
            function reset($pos = null, $l = 100) {
52
                if ($this->_mode == 0) {
53
                    if (!is_null ($pos)) {
54
                                fseek ($this->file, $pos);
55
                        }
56
        
57
                        $this->buffer = $l > 0 ? fread($this->file, $l) : '';
58
                        $this->length = strlen($this->buffer);
59
                        if ($this->length < $l)
60
                    $this->increase_length($l - $this->length);
61
                } else {
62
                    $this->buffer = $this->file;
63
                    $this->length = strlen($this->buffer);
64
                }
65
                    $this->offset = 0;
66
                    $this->stack = array();
67
            }
68
    
69
            // Make sure that there is at least one
70
            // character beyond the current offset in
71
            // the buffer to prevent the tokenizer
72
            // from attempting to access data that does
73
            // not exist
74
    
75
            function ensure_content() {
76
                    if ($this->offset >= $this->length - 1) {
77
                            return $this->increase_length();
78
                    } else {
79
                            return true;
80
                    }
81
            }
82
    
83
            // Forcefully read more data into the buffer
84
    
85
            function increase_length($l = 100) {
86
                        if ($this->_mode == 0 && feof($this->file)) {
87
                                return false;
88
                        } elseif ($this->_mode == 0) {
89
                            $totalLength = $this->length + $l;
90
                            do {
91
                                    $toRead = $totalLength - $this->length;
92
                                    if ($toRead < 1)
93
                                            break;
94
                            
95
                                    $this->buffer .= fread($this->file, $toRead);
96
                    } while ((($this->length = strlen($this->buffer)) != $totalLength) && !feof($this->file));
97
                                
98
                                return true;
99
                        } else {
100
                        return false;
101
                        }
102
                }
103
    }
104
}