Blame view

dompdf/src/FrameDecorator/Image.php 2.27 KB
670b6d6f8   tuan   2016/09/22 - Copy...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  <?php
  /**
   * @package dompdf
   * @link    http://dompdf.github.com/
   * @author  Benj Carson <benjcarson@digitaljunkies.ca>
   * @author  Fabien Ménager <fabien.menager@gmail.com>
   * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
   */
  namespace Dompdf\FrameDecorator;
  
  use Dompdf\Dompdf;
  use Dompdf\Frame;
  use Dompdf\FontMetrics;
  use Dompdf\Image\Cache;
  
  /**
   * Decorates frames for image layout and rendering
   *
   * @package dompdf
   */
  class Image extends AbstractFrameDecorator
  {
  
      /**
       * The path to the image file (note that remote images are
       * downloaded locally to Options:tempDir).
       *
       * @var string
       */
      protected $_image_url;
  
      /**
       * The image's file error message
       *
       * @var string
       */
      protected $_image_msg;
  
      /**
       * Class constructor
       *
       * @param Frame $frame the frame to decorate
       * @param DOMPDF $dompdf the document's dompdf object (required to resolve relative & remote urls)
       */
      function __construct(Frame $frame, Dompdf $dompdf)
      {
          parent::__construct($frame, $dompdf);
          $url = $frame->get_node()->getAttribute("src");
  
          $debug_png = $dompdf->get_option("debug_png");
          if ($debug_png) print '[__construct ' . $url . ']';
  
          list($this->_image_url, /*$type*/, $this->_image_msg) = Cache::resolve_url(
              $url,
              $dompdf->get_protocol(),
              $dompdf->get_host(),
              $dompdf->get_base_path(),
              $dompdf
          );
  
          if (Cache::is_broken($this->_image_url) &&
              $alt = $frame->get_node()->getAttribute("alt")
          ) {
              $style = $frame->get_style();
              $style->width = (4 / 3) * $dompdf->getFontMetrics()->getTextWidth($alt, $style->font_family, $style->font_size, $style->word_spacing);
              $style->height = $dompdf->getFontMetrics()->getFontHeight($style->font_family, $style->font_size);
          }
      }
  
      /**
       * Return the image's url
       *
       * @return string The url of this image
       */
      function get_image_url()
      {
          return $this->_image_url;
      }
  
      /**
       * Return the image's error message
       *
       * @return string The image's error message
       */
      function get_image_msg()
      {
          return $this->_image_msg;
      }
  
  }