文字

PDF_setcolor

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_setcolorSet fill and stroke color

说明

bool PDF_setcolor ( resource $p , string $fstype , string $colorspace , float $c1 , float $c2 , float $c3 , float $c4 )

Sets the current color space and color. 成功时返回 TRUE , 或者在失败时返回 FALSE

用户评论:

[#1] cancausecancer at yahoo dot com [2011-01-14 16:39:36]

Here is a quick snippet to convert CMYK to RGB. It has better precision than a lot of other solutions that also don't factor in colour profiles.

<?php

$cmyk 
'10,20,100,31';
list(
$c$m$y$k) = explode(','$cmyk);

# Gets the rgb as floats (cast via (int) if you want int )
$r = (min(($c 100) * ($k /= 100) + $k1)) * 255;
$g = (min(($m 100) * ($k) + $k1)) * 255;
$b = (min(($y 100) * ($k) + $k1)) * 255;

echo 
"$r $g $b\r\n";

# Converts the rgb to hex with leading 0's
$r str_pad(dechex($r), 2'0'STR_PAD_LEFT);
$g str_pad(dechex($g), 2'0'STR_PAD_LEFT);
$b str_pad(dechex($b), 2'0'STR_PAD_LEFT);

echo 
"hex: $r$g$b\r\n";


?>

[#2] _meto ALT+q web.de [2004-05-08 09:03:21]

Damn, this took me some real long time! Maybe it's helpfull for those who even have no idea of color-Schemes like me ;)

If u want to generate PDF's for Print Offices u need to set all the colors in CMYK.

Here is a Function that will convert RGB to CMYK

<?php
function hex2rgb($hex) {
  
$color str_replace('#','',$hex);
  
$rgb = array('r' => hexdec(substr($color,0,2)),
               
'g' => hexdec(substr($color,2,2)),
               
'b' => hexdec(substr($color,4,2)));
  return 
$rgb;
}

function 
rgb2cmyk($var1,$g=0,$b=0) {
   if(
is_array($var1)) {
      
$r $var1['r'];
      
$g $var1['g'];
      
$b $var1['b'];
   }
   else 
$r=$var1;
   
$cyan    255 $r;
   
$magenta 255 $g;
   
$yellow  255 $b;
   
$black   min($cyan$magenta$yellow);
   
$cyan    = @(($cyan    $black) / (255 $black)) * 255;
   
$magenta = @(($magenta $black) / (255 $black)) * 255;
   
$yellow  = @(($yellow  $black) / (255 $black)) * 255;
   return array(
'c' => $cyan 255,
                
'm' => $magenta 255,
                
'y' => $yellow 255,
                
'k' => $black 255);
}

$color=rgb2cmyk(hex2rgb('#FF0000')); 
pdf_setcolor($pdf"both""cmyk"$color['c'], $color['m'], $color['y'], $color['k']);
?>


U can call it with parameters (r,g,b) or just an array(r,g,b) that contains these values.

Hope it works correct. All testing was fine.

[#3] enyo vel cora [2004-01-13 04:32:30]

This seems a little less complicated:

this is the color you want to use : 'FF11AA'

<?php
pdf_setcolor 
($pdf'both'0xFF 2550x11 2550xAA 255);
?>

[#4] php at perfectweb dotcom [2003-04-29 16:22:40]

Here's a better implementation for setting HTML hexadecimal colors:

function pdf_setcolor_hex($hexcolor, $type = '')
{
    global $pdf;     ## match this to your pdf resource handle
   $color['r'] = hexdec(substr($hexcolor, 0, 2))/255; 
    $color['g'] = hexdec(substr($hexcolor, 2, 2))/255; 
    $color['b'] = hexdec(substr($hexcolor, 4, 2))/255;
   if ($type != 'fill' && $type != 'stroke')  $type = 'both';
   pdf_setcolor($pdf, $type, 'rgb', $color['r'], $color['g'], $color['b']);
}

Sample usage:
pdf_setcolor_hex('FFFFFF', 'fill');

-Derek

[#5] php at perfectweb dotcom [2003-04-29 00:59:33]

Here's a function for converting HTML hexadecimal colors to RGB decimals suitable for this function:

$color_hex = "FF0000";       ## whatever hex color you want
$color = convert_hexcolor_rgbdec($color_hex);
pdf_setcolor($pdf, 'fill', 'rgb', $color['r'], $color['g'], $color['b']);

function convert_hexcolor_rgbdec($color_hex)
{
   $color['r'] = hexdec(substr($color_hex, 0, 2))/255; 
   $color['g'] = hexdec(substr($color_hex, 2, 2))/255; 
   $color['b'] = hexdec(substr($color_hex, 4, 2))/255;
   return $color;
}

-Derek

[#6] maurice dot anglebert at free dot fr [2003-04-28 08:25:57]

[#7] psychosos at gmx dot at [2003-04-16 10:51:07]

If you want to change the font color you need to set type to  "fill", not "stroke" ("both" also works, of course).

[#8] steven dot gould at NO_SPAM dot stevengould dot org [2001-12-21 11:44:25]

If you encounter errors of the form function 'PDF_setcolor' must not be called in 'path' scope this generally means that you've called the PDFLib functions in the wrong order. For example, the following would be *incorrect* because PDF_rect marks the beginning of the "path scope", and set_color must not be called in path scope:

<?php

// THIS CODE WILL PRODUCE AN ERROR
PDF_rect($pdf,0,0,$width,$height);
PDF_setcolor($pdf,$red,$green,$blue);
PDF_fill($pdf);
<
p>The correct order of function calls is as follows:
<
p>// Correct order of function calls
PDF_setcolor($pdf,$red,$green,$blue);
PDF_rect($pdf,0,0,$width,$height);
PDF_fill($pdf);

?>

上一篇: 下一篇: