本文整理汇总了PHP中dompdf_getimagesize函数的典型用法代码示例。如果您正苦于以下问题:PHP dompdf_getimagesize函数的具体用法?PHP dompdf_getimagesize怎么用?PHP dompdf_getimagesize使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dompdf_getimagesize函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Class constructor
*
* @param Frame $frame the bullet frame to decorate
* @param DOMPDF $dompdf the document's dompdf object
*/
function __construct(Frame $frame, DOMPDF $dompdf)
{
$style = $frame->get_style();
$url = $style->list_style_image;
$frame->get_node()->setAttribute("src", $url);
$this->_img = new Image_Frame_Decorator($frame, $dompdf);
parent::__construct($this->_img, $dompdf);
list($width, $height) = dompdf_getimagesize($this->_img->get_image_url());
// Resample the bullet image to be consistent with 'auto' sized images
// See also Image_Frame_Reflower::get_min_max_width
// Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary.
$this->_width = (double) rtrim($width, "px") * 72 / DOMPDF_DPI;
$this->_height = (double) rtrim($height, "px") * 72 / DOMPDF_DPI;
//If an image is taller as the containing block/box, the box should be extended.
//Neighbour elements are overwriting the overlapping image areas.
//Todo: Where can the box size be extended?
//Code below has no effect.
//See block_frame_reflower _calculate_restricted_height
//See generated_frame_reflower, Dompdf:render() "list-item", "-dompdf-list-bullet"S.
//Leave for now
//if ($style->min_height < $this->_height ) {
// $style->min_height = $this->_height;
//}
//$style->height = "auto";
}
示例2: __construct
function __construct(Frame $frame, DOMPDF $dompdf)
{
$style = $frame->get_style();
$url = $style->list_style_image;
$frame->get_node()->setAttribute("src", $url);
$this->_img = new Image_Frame_Decorator($frame, $dompdf);
parent::__construct($this->_img, $dompdf);
list($width, $height) = dompdf_getimagesize($this->_img->get_image_url());
$this->_width = (double) rtrim($width, "px") * 72 / DOMPDF_DPI;
$this->_height = (double) rtrim($height, "px") * 72 / DOMPDF_DPI;
}
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:11,代码来源:list_bullet_image_frame_decorator.cls.php
示例3: get_min_max_width
function get_min_max_width()
{
if (DEBUGPNG) {
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
print "get_min_max_width() " . $this->_frame->get_style()->width . ' ' . $this->_frame->get_style()->height . ';' . $this->_frame->get_parent()->get_style()->width . " " . $this->_frame->get_parent()->get_style()->height . ";" . $this->_frame->get_parent()->get_parent()->get_style()->width . ' ' . $this->_frame->get_parent()->get_parent()->get_style()->height . ';' . $img_width . ' ' . $img_height . '|';
}
$style = $this->_frame->get_style();
$width = $style->width > 0 ? $style->width : 0;
if (is_percent($width)) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$f_style = $f->get_style();
$t = $f_style->length_in_pt($f_style->width);
if ($t != 0) {
break;
}
}
$width = (double) rtrim($width, "%") * $t / 100;
} elseif (!mb_strpos($width, 'pt')) {
$width = $style->length_in_pt($width);
}
$height = $style->height > 0 ? $style->height : 0;
if (is_percent($height)) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$f_style = $f->get_style();
$t = $f_style->length_in_pt($f_style->height);
if ($t != 0) {
break;
}
}
$height = (double) rtrim($height, "%") * $t / 100;
} elseif (!mb_strpos($height, 'pt')) {
$height = $style->length_in_pt($height);
}
if ($width == 0 || $height == 0) {
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
if ($width == 0 && $height == 0) {
$width = (double) ($img_width * 72) / DOMPDF_DPI;
$height = (double) ($img_height * 72) / DOMPDF_DPI;
} elseif ($height == 0 && $width != 0) {
$height = $width / $img_width * $img_height;
} elseif ($width == 0 && $height != 0) {
$width = $height / $img_height * $img_width;
}
}
if (DEBUGPNG) {
print $width . ' ' . $height . ';';
}
$style->width = $width . "pt";
$style->height = $height . "pt";
return array($width, $width, "min" => $width, "max" => $width);
}
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:53,代码来源:image_frame_reflower.cls.php
示例4: detect_type
static function detect_type($file)
{
list(, , $type) = dompdf_getimagesize($file);
return $type;
}
示例5: get_min_max_width
function get_min_max_width()
{
if (DEBUGPNG) {
// Determine the image's size. Time consuming. Only when really needed?
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
print "get_min_max_width() " . $this->_frame->get_style()->width . ' ' . $this->_frame->get_style()->height . ';' . $this->_frame->get_parent()->get_style()->width . " " . $this->_frame->get_parent()->get_style()->height . ";" . $this->_frame->get_parent()->get_parent()->get_style()->width . ' ' . $this->_frame->get_parent()->get_parent()->get_style()->height . ';' . $img_width . ' ' . $img_height . '|';
}
$style = $this->_frame->get_style();
//own style auto or invalid value: use natural size in px
//own style value: ignore suffix text including unit, use given number as px
//own style %: walk up parent chain until found available space in pt; fill available space
//
//special ignored unit: e.g. 10ex: e treated as exponent; x ignored; 10e completely invalid ->like auto
$width = $style->width > 0 ? $style->width : 0;
if (is_percent($width)) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$t = (double) $f->get_style()->width;
//always in pt
if ((double) $t != 0) {
break;
}
}
$width = (double) rtrim($width, "%") * $t / 100;
//maybe 0
} elseif (!mb_strpos($width, 'pt')) {
// Don't set image original size if "%" branch was 0 or size not given.
// Otherwise aspect changed on %/auto combination for width/height
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
$width = (double) ($width * 72) / DOMPDF_DPI;
}
$height = $style->height > 0 ? $style->height : 0;
if (is_percent($height)) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$t = (double) $f->get_style()->height;
//always in pt
if ((double) $t != 0) {
break;
}
}
$height = (double) rtrim($height, "%") * $t / 100;
//maybe 0
} elseif (!mb_strpos($height, 'pt')) {
// Don't set image original size if "%" branch was 0 or size not given.
// Otherwise aspect changed on %/auto combination for width/height
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
$height = (double) ($height * 72) / DOMPDF_DPI;
}
if ($width == 0 || $height == 0) {
// Determine the image's size. Time consuming. Only when really needed!
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
// don't treat 0 as error. Can be downscaled or can be catched elsewhere if image not readable.
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
if ($width == 0 && $height == 0) {
$width = (double) ($img_width * 72) / DOMPDF_DPI;
$height = (double) ($img_height * 72) / DOMPDF_DPI;
} elseif ($height == 0 && $width != 0) {
$height = $width / $img_width * $img_height;
//keep aspect ratio
} elseif ($width == 0 && $height != 0) {
$width = $height / $img_height * $img_width;
//keep aspect ratio
}
}
if (DEBUGPNG) {
print $width . ' ' . $height . ';';
}
$style->width = $width . "pt";
$style->height = $height . "pt";
return array($width, $width, "min" => $width, "max" => $width);
}
示例6: render
function render(Frame $frame)
{
$style = $frame->get_style();
$font_size = $style->get_font_size();
$line_height = $style->length_in_pt($style->line_height, $frame->get_containing_block("w"));
$this->_set_opacity($frame->get_opacity($style->opacity));
// Handle list-style-image
// If list style image is requested but missing, fall back to predefined types
if ($style->list_style_image !== "none" && strcmp($img = $frame->get_image_url(), DOMPDF_LIB_DIR . "/res/broken_image.png") != 0) {
list($x, $y) = $frame->get_position();
//For expected size and aspect, instead of box size, use image natural size scaled to DPI.
// Resample the bullet image to be consistent with 'auto' sized images
// See also Image_Frame_Reflower::get_min_max_width
// Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary.
//$w = $frame->get_width();
//$h = $frame->get_height();
list($width, $height) = dompdf_getimagesize($img);
$w = (double) rtrim($width, "px") * 72 / DOMPDF_DPI;
$h = (double) rtrim($height, "px") * 72 / DOMPDF_DPI;
$x -= $w;
$y -= ($line_height - $font_size) / 2;
//Reverse hinting of list_bullet_positioner
$this->_canvas->image($img, $frame->get_image_ext(), $x, $y, $w, $h);
} else {
$bullet_style = $style->list_style_type;
$fill = false;
switch ($bullet_style) {
default:
case "disc":
$fill = true;
case "circle":
list($x, $y) = $frame->get_position();
$r = $font_size * List_Bullet_Frame_Decorator::BULLET_SIZE / 2;
$x -= $font_size * (List_Bullet_Frame_Decorator::BULLET_SIZE / 2);
$y += $font_size * (1 - List_Bullet_Frame_Decorator::BULLET_DESCENT) / 2;
$o = $font_size * List_Bullet_Frame_Decorator::BULLET_THICKNESS;
$this->_canvas->circle($x, $y, $r, $style->color, $o, null, $fill);
break;
case "square":
list($x, $y) = $frame->get_position();
$w = $font_size * List_Bullet_Frame_Decorator::BULLET_SIZE;
$x -= $w;
$y += $font_size * (1 - List_Bullet_Frame_Decorator::BULLET_DESCENT - List_Bullet_Frame_Decorator::BULLET_SIZE) / 2;
$this->_canvas->filled_rectangle($x, $y, $w, $w, $style->color);
break;
case "decimal-leading-zero":
case "decimal":
case "lower-alpha":
case "lower-latin":
case "lower-roman":
case "lower-greek":
case "upper-alpha":
case "upper-latin":
case "upper-roman":
case "1":
// HTML 4.0 compatibility
// HTML 4.0 compatibility
case "a":
case "i":
case "A":
case "I":
list($x, $y) = $frame->get_position();
$pad = null;
if ($bullet_style === "decimal-leading-zero") {
$pad = strlen($frame->get_parent()->get_parent()->get_node()->getAttribute("dompdf-children-count"));
}
$index = $frame->get_node()->getAttribute("dompdf-counter");
$text = $this->make_counter($index, $bullet_style, $pad);
$font_family = $style->font_family;
$spacing = 0;
//$frame->get_text_spacing() + $style->word_spacing;
if (trim($text) == "") {
return;
}
$x -= Font_Metrics::get_text_width($text, $font_family, $font_size, $spacing);
$this->_canvas->text($x, $y, $text, $font_family, $font_size, $style->color, $spacing);
case "none":
break;
}
}
}
示例7: _background_image
/**
* Render a background image over a rectangular area
*
* @param string $url The background image to load
* @param float $x The left edge of the rectangular area
* @param float $y The top edge of the rectangular area
* @param float $width The width of the rectangular area
* @param float $height The height of the rectangular area
* @param Style $style The associated Style object
*
* @throws Exception
*/
protected function _background_image($url, $x, $y, $width, $height, $style)
{
if (!function_exists("imagecreatetruecolor")) {
throw new Exception("The PHP GD extension is required, but is not installed.");
}
$sheet = $style->get_stylesheet();
// Skip degenerate cases
if ($width == 0 || $height == 0) {
return;
}
$box_width = $width;
$box_height = $height;
//debugpng
if (DEBUGPNG) {
print '[_background_image ' . $url . ']';
}
list($img, $type, ) = Image_Cache::resolve_url($url, $sheet->get_protocol(), $sheet->get_host(), $sheet->get_base_path(), $this->_dompdf);
// Bail if the image is no good
if (Image_Cache::is_broken($img)) {
return;
}
//Try to optimize away reading and composing of same background multiple times
//Postponing read with imagecreatefrom ...()
//final composition parameters and name not known yet
//Therefore read dimension directly from file, instead of creating gd object first.
//$img_w = imagesx($src); $img_h = imagesy($src);
list($img_w, $img_h) = dompdf_getimagesize($img);
if (!isset($img_w) || $img_w == 0 || !isset($img_h) || $img_h == 0) {
return;
}
$repeat = $style->background_repeat;
$dpi = $this->_dompdf->get_option("dpi");
//Increase background resolution and dependent box size according to image resolution to be placed in
//Then image can be copied in without resize
$bg_width = round((double) ($width * $dpi) / 72);
$bg_height = round((double) ($height * $dpi) / 72);
//Need %bg_x, $bg_y as background pos, where img starts, converted to pixel
list($bg_x, $bg_y) = $style->background_position;
if (is_percent($bg_x)) {
// The point $bg_x % from the left edge of the image is placed
// $bg_x % from the left edge of the background rectangle
$p = (double) $bg_x / 100.0;
$x1 = $p * $img_w;
$x2 = $p * $bg_width;
$bg_x = $x2 - $x1;
} else {
$bg_x = (double) ($style->length_in_pt($bg_x) * $dpi) / 72;
}
$bg_x = round($bg_x + $style->length_in_pt($style->border_left_width) * $dpi / 72);
if (is_percent($bg_y)) {
// The point $bg_y % from the left edge of the image is placed
// $bg_y % from the left edge of the background rectangle
$p = (double) $bg_y / 100.0;
$y1 = $p * $img_h;
$y2 = $p * $bg_height;
$bg_y = $y2 - $y1;
} else {
$bg_y = (double) ($style->length_in_pt($bg_y) * $dpi) / 72;
}
$bg_y = round($bg_y + $style->length_in_pt($style->border_top_width) * $dpi / 72);
//clip background to the image area on partial repeat. Nothing to do if img off area
//On repeat, normalize start position to the tile at immediate left/top or 0/0 of area
//On no repeat with positive offset: move size/start to have offset==0
//Handle x/y Dimensions separately
if ($repeat !== "repeat" && $repeat !== "repeat-x") {
//No repeat x
if ($bg_x < 0) {
$bg_width = $img_w + $bg_x;
} else {
$x += $bg_x * 72 / $dpi;
$bg_width = $bg_width - $bg_x;
if ($bg_width > $img_w) {
$bg_width = $img_w;
}
$bg_x = 0;
}
if ($bg_width <= 0) {
return;
}
$width = (double) ($bg_width * 72) / $dpi;
} else {
//repeat x
if ($bg_x < 0) {
$bg_x = -(-$bg_x % $img_w);
} else {
$bg_x = $bg_x % $img_w;
if ($bg_x > 0) {
$bg_x -= $img_w;
//.........这里部分代码省略.........
示例8: _background_image
protected function _background_image($url, $x, $y, $width, $height, $style)
{
$sheet = $style->get_stylesheet();
if ($width == 0 || $height == 0) {
return;
}
$box_width = $width;
$box_height = $height;
if (DEBUGPNG) {
print '[_background_image ' . $url . ']';
}
list($img, $type, $msg) = Image_Cache::resolve_url($url, $sheet->get_protocol(), $sheet->get_host(), $sheet->get_base_path());
if (Image_Cache::is_broken($img)) {
return;
}
list($img_w, $img_h) = dompdf_getimagesize($img);
if (!isset($img_w) || $img_w == 0 || !isset($img_h) || $img_h == 0) {
return;
}
$repeat = $style->background_repeat;
$bg_color = $style->background_color;
$bg_width = round((double) ($width * DOMPDF_DPI) / 72);
$bg_height = round((double) ($height * DOMPDF_DPI) / 72);
list($bg_x, $bg_y) = $style->background_position;
if (is_percent($bg_x)) {
$p = (double) $bg_x / 100.0;
$x1 = $p * $img_w;
$x2 = $p * $bg_width;
$bg_x = $x2 - $x1;
} else {
$bg_x = (double) ($style->length_in_pt($bg_x) * DOMPDF_DPI) / 72;
}
$bg_x = round($bg_x + $style->length_in_pt($style->border_left_width) * DOMPDF_DPI / 72);
if (is_percent($bg_y)) {
$p = (double) $bg_y / 100.0;
$y1 = $p * $img_h;
$y2 = $p * $bg_height;
$bg_y = $y2 - $y1;
} else {
$bg_y = (double) ($style->length_in_pt($bg_y) * DOMPDF_DPI) / 72;
}
$bg_y = round($bg_y + $style->length_in_pt($style->border_top_width) * DOMPDF_DPI / 72);
if ($repeat !== "repeat" && $repeat !== "repeat-x") {
if ($bg_x < 0) {
$bg_width = $img_w + $bg_x;
} else {
$x += $bg_x * 72 / DOMPDF_DPI;
$bg_width = $bg_width - $bg_x;
if ($bg_width > $img_w) {
$bg_width = $img_w;
}
$bg_x = 0;
}
if ($bg_width <= 0) {
return;
}
$width = (double) ($bg_width * 72) / DOMPDF_DPI;
} else {
if ($bg_x < 0) {
$bg_x = -(-$bg_x % $img_w);
} else {
$bg_x = $bg_x % $img_w;
if ($bg_x > 0) {
$bg_x -= $img_w;
}
}
}
if ($repeat !== "repeat" && $repeat !== "repeat-y") {
if ($bg_y < 0) {
$bg_height = $img_h + $bg_y;
} else {
$y += $bg_y * 72 / DOMPDF_DPI;
$bg_height = $bg_height - $bg_y;
if ($bg_height > $img_h) {
$bg_height = $img_h;
}
$bg_y = 0;
}
if ($bg_height <= 0) {
return;
}
$height = (double) ($bg_height * 72) / DOMPDF_DPI;
} else {
if ($bg_y < 0) {
$bg_y = -(-$bg_y % $img_h);
} else {
$bg_y = $bg_y % $img_h;
if ($bg_y > 0) {
$bg_y -= $img_h;
}
}
}
if ($repeat === "repeat" && $bg_y <= 0 && $img_h + $bg_y >= $bg_height) {
$repeat = "repeat-x";
}
if ($repeat === "repeat" && $bg_x <= 0 && $img_w + $bg_x >= $bg_width) {
$repeat = "repeat-y";
}
if ($repeat === "repeat-x" && $bg_x <= 0 && $img_w + $bg_x >= $bg_width || $repeat === "repeat-y" && $bg_y <= 0 && $img_h + $bg_y >= $bg_height) {
$repeat = "no-repeat";
//.........这里部分代码省略.........
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:101,代码来源:abstract_renderer.cls.php
示例9: get_min_max_width
function get_min_max_width() {
if (DEBUGPNG) {
// Determine the image's size. Time consuming. Only when really needed?
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
print "get_min_max_width() ".
$this->_frame->get_style()->width.' '.
$this->_frame->get_style()->height.';'.
$this->_frame->get_parent()->get_style()->width." ".
$this->_frame->get_parent()->get_style()->height.";".
$this->_frame->get_parent()->get_parent()->get_style()->width.' '.
$this->_frame->get_parent()->get_parent()->get_style()->height.';'.
$img_width. ' '.
$img_height.'|' ;
}
$style = $this->_frame->get_style();
$width_forced = true;
$height_forced = true;
//own style auto or invalid value: use natural size in px
//own style value: ignore suffix text including unit, use given number as px
//own style %: walk up parent chain until found available space in pt; fill available space
//
//special ignored unit: e.g. 10ex: e treated as exponent; x ignored; 10e completely invalid ->like auto
$width = ($style->width > 0 ? $style->width : 0);
if ( is_percent($width) ) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$f_style = $f->get_style();
$t = $f_style->length_in_pt($f_style->width);
if ($t != 0) {
break;
}
}
$width = ((float)rtrim($width,"%") * $t)/100; //maybe 0
} elseif ( !mb_strpos($width, 'pt') ) {
// Don't set image original size if "%" branch was 0 or size not given.
// Otherwise aspect changed on %/auto combination for width/height
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
$width = $style->length_in_pt($width);
}
$height = ($style->height > 0 ? $style->height : 0);
if ( is_percent($height) ) {
$t = 0.0;
for ($f = $this->_frame->get_parent(); $f; $f = $f->get_parent()) {
$f_style = $f->get_style();
$t = $f_style->length_in_pt($f_style->height);
if ($t != 0) {
break;
}
}
$height = ((float)rtrim($height,"%") * $t)/100; //maybe 0
} elseif ( !mb_strpos($height, 'pt') ) {
// Don't set image original size if "%" branch was 0 or size not given.
// Otherwise aspect changed on %/auto combination for width/height
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
$height = $style->length_in_pt($height);
}
if ($width == 0 || $height == 0) {
// Determine the image's size. Time consuming. Only when really needed!
list($img_width, $img_height) = dompdf_getimagesize($this->_frame->get_image_url());
// don't treat 0 as error. Can be downscaled or can be catched elsewhere if image not readable.
// Resample according to px per inch
// See also List_Bullet_Image_Frame_Decorator::__construct
if ($width == 0 && $height == 0) {
$dpi = $this->_frame->get_dompdf()->get_option("dpi");
$width = (float)($img_width * 72) / $dpi;
$height = (float)($img_height * 72) / $dpi;
$width_forced = false;
$height_forced = false;
} elseif ($height == 0 && $width != 0) {
$height_forced = false;
$height = ($width / $img_width) * $img_height; //keep aspect ratio
} elseif ($width == 0 && $height != 0) {
$width_forced = false;
$width = ($height / $img_height) * $img_width; //keep aspect ratio
}
}
// Handle min/max width/height
if ( $style->min_width !== "none" ||
$style->max_width !== "none" ||
$style->min_height !== "none" ||
$style->max_height !== "none" ) {
list(/*$x*/, /*$y*/, $w, $h) = $this->_frame->get_containing_block();
$min_width = $style->length_in_pt($style->min_width, $w);
$max_width = $style->length_in_pt($style->max_width, $w);
$min_height = $style->length_in_pt($style->min_height, $h);
$max_height = $style->length_in_pt($style->max_height, $h);
if ( $max_width !== "none" && $width > $max_width ) {
//.........这里部分代码省略.........
示例10: resolve_url
/**
* Resolve and fetch an image for use.
*
* @param string $url The url of the image
* @param string $proto Default protocol if none specified in $url
* @param string $host Default host if none specified in $url
* @param string $base_path Default path if none specified in $url
* @return array An array with two elements: The local path to the image and the image extension
*/
static function resolve_url($url, $proto, $host, $base_path)
{
global $_dompdf_warnings;
$parsed_url = explode_url($url);
$DEBUGPNG = DEBUGPNG;
//=DEBUGPNG; Allow override of global setting for ad hoc debug
$full_url_dbg = '';
//debugpng
if ($DEBUGPNG) {
print 'resolve_url(' . $url . ',' . $proto . ',' . $host . ',' . $base_path . ')(' . $parsed_url['protocol'] . ')';
}
$remote = $proto != "" && $proto !== "file://";
$remote = $remote || $parsed_url['protocol'] != "";
$datauri = strpos($parsed_url['protocol'], "data:") === 0;
if (!DOMPDF_ENABLE_REMOTE && $remote && !$datauri) {
$resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
$ext = "png";
//debugpng
if ($DEBUGPNG) {
$full_url_dbg = '(blockedremote)';
}
} else {
if (DOMPDF_ENABLE_REMOTE && $remote || $datauri) {
// Download remote files to a temporary directory
$full_url = build_url($proto, $host, $base_path, $url);
if (isset(self::$_cache[$full_url])) {
list($resolved_url, $ext) = self::$_cache[$full_url];
//debugpng
if ($DEBUGPNG) {
$full_url_dbg = $full_url . '(cache)';
}
} else {
$resolved_url = tempnam(DOMPDF_TEMP_DIR, "ca_dompdf_img_");
//debugpng
if ($DEBUGPNG) {
echo $resolved_url . "\n";
}
if ($datauri) {
if ($parsed_data_uri = parse_data_uri($url)) {
$image = $parsed_data_uri['data'];
list(, $ext) = explode('/', $parsed_data_uri['mime'], 2);
}
} else {
$old_err = set_error_handler("record_warnings");
$image = file_get_contents($full_url);
restore_error_handler();
}
if (strlen($image) == 0) {
//target image not found
$resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
$ext = "png";
//debugpng
if ($DEBUGPNG) {
$full_url_dbg = $full_url . '(missing)';
}
} else {
file_put_contents($resolved_url, $image);
//e.g. fetch.php?media=url.jpg&cache=1
//- Image file name might be one of the dynamic parts of the url, don't strip off!
// if ( preg_match("/.*\.(\w+)/",$url,$match) ) $ext = $match[1];
//- a remote url does not need to have a file extension at all
//- local cached file does not have a matching file extension
//Therefore get image type from the content
$imagedim = dompdf_getimagesize($resolved_url);
if ($imagedim[0] && $imagedim[1] && in_array($imagedim[2], array(IMAGETYPE_GIF, IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_BMP))) {
//target image is valid
$imagetypes = array('', 'gif', 'jpeg', 'png', 'swf', 'psd', 'bmp');
$ext = $imagetypes[$imagedim[2]];
if (rename($resolved_url, $resolved_url . '.' . $ext)) {
$resolved_url .= '.' . $ext;
}
//Don't put replacement image into cache - otherwise it will be deleted on cache cleanup.
//Only execute on successfull caching of remote image.
self::$_cache[$full_url] = array($resolved_url, $ext);
} else {
//target image is not valid.
unlink($resolved_url);
$resolved_url = DOMPDF_LIB_DIR . "/res/broken_image.png";
$ext = "png";
}
}
}
} else {
$resolved_url = build_url($proto, $host, $base_path, $url);
if ($DEBUGPNG) {
print 'build_url(' . $proto . ',' . $host . ',' . $base_path . ',' . $url . ')(' . $resolved_url . ')';
}
if (!preg_match("/.*\\.(\\w+)/", $url, $match)) {
//debugpng
if ($DEBUGPNG) {
print '[resolve_url exception ' . $url . ']';
//.........这里部分代码省略.........
示例11: render
function render(Frame $frame) {
$style = $frame->get_style();
$font_size = $style->get_font_size();
$line_height = $style->length_in_pt($style->line_height, $frame->get_containing_block("w"));
$this->_set_opacity( $frame->get_opacity( $style->opacity ) );
$li = $frame->get_parent();
// Don't render bullets twice if if was split
if ($li->_splitted) {
return;
}
// Handle list-style-image
// If list style image is requested but missing, fall back to predefined types
if ( $style->list_style_image !== "none" &&
!Image_Cache::is_broken($img = $frame->get_image_url())) {
list($x,$y) = $frame->get_position();
//For expected size and aspect, instead of box size, use image natural size scaled to DPI.
// Resample the bullet image to be consistent with 'auto' sized images
// See also Image_Frame_Reflower::get_min_max_width
// Tested php ver: value measured in px, suffix "px" not in value: rtrim unnecessary.
//$w = $frame->get_width();
//$h = $frame->get_height();
list($width, $height) = dompdf_getimagesize($img);
$dpi = $this->_dompdf->get_option("dpi");
$w = ((float)rtrim($width, "px") * 72) / $dpi;
$h = ((float)rtrim($height, "px") * 72) / $dpi;
$x -= $w;
$y -= ($line_height - $font_size)/2; //Reverse hinting of list_bullet_positioner
$this->_canvas->image( $img, $x, $y, $w, $h);
} else {
$bullet_style = $style->list_style_type;
$fill = false;
switch ($bullet_style) {
default:
case "disc":
$fill = true;
case "circle":
list($x,$y) = $frame->get_position();
$r = ($font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE /*-List_Bullet_Frame_Decorator::BULLET_THICKNESS*/ ))/2;
$x -= $font_size*(List_Bullet_Frame_Decorator::BULLET_SIZE/2);
$y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT))/2;
$o = $font_size*List_Bullet_Frame_Decorator::BULLET_THICKNESS;
$this->_canvas->circle($x, $y, $r, $style->color, $o, null, $fill);
break;
case "square":
list($x, $y) = $frame->get_position();
$w = $font_size*List_Bullet_Frame_Decorator::BULLET_SIZE;
$x -= $w;
$y += ($font_size*(1-List_Bullet_Frame_Decorator::BULLET_DESCENT-List_Bullet_Frame_Decorator::BULLET_SIZE))/2;
$this->_canvas->filled_rectangle($x, $y, $w, $w, $style->color);
break;
case "decimal-leading-zero":
case "decimal":
case "lower-alpha":
case "lower-latin":
case "lower-roman":
case "lower-greek":
case "upper-alpha":
case "upper-latin":
case "upper-roman":
case "1": // HTML 4.0 compatibility
case "a":
case "i":
case "A":
case "I":
$pad = null;
if ( $bullet_style === "decimal-leading-zero" ) {
$pad = strlen($li->get_parent()->get_node()->getAttribute("dompdf-children-count"));
}
$node = $frame->get_node();
if ( !$node->hasAttribute("dompdf-counter") ) {
return;
}
$index = $node->getAttribute("dompdf-counter");
$text = $this->make_counter($index, $bullet_style, $pad);
if ( trim($text) == "" ) {
return;
}
$spacing = 0;
$font_family = $style->font_family;
//.........这里部分代码省略.........
示例12: detect_type
static function detect_type($file, $context = null)
{
list(, , $type) = dompdf_getimagesize($file, $context);
return $type;
}
示例13: image
function image($img, $x, $y, $w, $h, $resolution = "normal")
{
list($width, $height, $type) = dompdf_getimagesize($img);
//debugpng
if (DEBUGPNG) print "[image:$img|$width|$height|$type]";
switch ($type) {
case IMAGETYPE_JPEG:
if (DEBUGPNG) print '!!!jpg!!!';
$this->_pdf->addJpegFromFile($img, $x, $this->y($y) - $h, $w, $h);
break;
case IMAGETYPE_GIF:
case IMAGETYPE_BMP:
if (DEBUGPNG) print '!!!bmp or gif!!!';
// @todo use cache for BMP and GIF
$img = $this->_convert_gif_bmp_to_png($img, $type);
case IMAGETYPE_PNG:
if (DEBUGPNG) print '!!!png!!!';
$this->_pdf->addPngFromFile($img, $x, $this->y($y) - $h, $w, $h);
break;
default:
if (DEBUGPNG) print '!!!unknown!!!';
}
}
示例14: render
function render(Frame $frame)
{
$style = $frame->get_style();
$font_size = $style->get_font_size();
$line_height = $style->length_in_pt($style->line_height, $frame->get_containing_block("w"));
$this->_set_opacity($frame->get_opacity($style->opacity));
if ($style->list_style_image !== "none" && !Image_Cache::is_broken($img = $frame->get_image_url())) {
list($x, $y) = $frame->get_position();
list($width, $height) = dompdf_getimagesize($img);
$w = (double) rtrim($width, "px") * 72 / DOMPDF_DPI;
$h = (double) rtrim($height, "px") * 72 / DOMPDF_DPI;
$x -= $w;
$y -= ($line_height - $font_size) / 2;
$this->_canvas->image($img, $x, $y, $w, $h);
} else {
$bullet_style = $style->list_style_type;
$fill = false;
switch ($bullet_style) {
default:
case "disc":
$fill = true;
case "circle":
list($x, $y) = $frame->get_position();
$r = $font_size * List_Bullet_Frame_Decorator::BULLET_SIZE / 2;
$x -= $font_size * (List_Bullet_Frame_Decorator::BULLET_SIZE / 2);
$y += $font_size * (1 - List_Bullet_Frame_Decorator::BULLET_DESCENT) / 2;
$o = $font_size * List_Bullet_Frame_Decorator::BULLET_THICKNESS;
$this->_canvas->circle($x, $y, $r, $style->color, $o, null, $fill);
break;
case "square":
list($x, $y) = $frame->get_position();
$w = $font_size * List_Bullet_Frame_Decorator::BULLET_SIZE;
$x -= $w;
$y += $font_size * (1 - List_Bullet_Frame_Decorator::BULLET_DESCENT - List_Bullet_Frame_Decorator::BULLET_SIZE) / 2;
$this->_canvas->filled_rectangle($x, $y, $w, $w, $style->color);
break;
case "decimal-leading-zero":
case "decimal":
case "lower-alpha":
case "lower-latin":
case "lower-roman":
case "lower-greek":
case "upper-alpha":
case "upper-latin":
case "upper-roman":
case "1":
case "a":
case "i":
case "A":
case "I":
$li = $frame->get_parent();
$pad = null;
if ($bullet_style === "decimal-leading-zero") {
$pad = strlen($li->get_parent()->get_node()->getAttribute("dompdf-children-count"));
}
$index = $frame->get_node()->getAttribute("dompdf-counter");
$text = $this->make_counter($index, $bullet_style, $pad);
if (trim($text) == "") {
return;
}
$spacing = 0;
$font_family = $style->font_family;
$line = $li->get_containing_line();
list($x, $y) = array($frame->get_position("x"), $line->y);
$x -= Font_Metrics::get_text_width($text, $font_family, $font_size, $spacing);
$line_height = $style->line_height;
$y += ($line_height - $font_size) / 4;
$this->_canvas->text($x, $y, $text, $font_family, $font_size, $style->color, $spacing);
case "none":
break;
}
}
}
开发者ID:EfncoPlugins,项目名称:web-portal-lite-client-portal-secure-file-sharing-private-messaging,代码行数:73,代码来源:list_bullet_renderer.cls.php
示例15: detect_type
static function detect_type($file)
{
list($width, $height, $type) = dompdf_getimagesize($file);
return $type;
}