Geometric figures

This extension allows to draw lines, rectangles, ellipses, polygons and curves with line style

Informations

Author: David Hernández Sanz
License: FPDF

Description

This extension allows to draw lines, rectangles, ellipses, polygons and curves with line style. Public methods are:

SetLineStyle($style: array)

Sets line style. Parameters are:

- style: an array with the following possible keys:

. width: width of the line in user units.
. cap: type of cap to put on the line (butt, round, square). The difference between "square" and "butt" is that "square" projects a flat end past the end of the line.
. join: miter, round, or bevel.
. dash: dash pattern. Is 0 (without dash) or array with series of length values, which are the lengths of the on and off dashes.
. phase: modifier of the dash pattern which is used to shift the point at which the pattern starts.
. color: draw color. Array with components (red, green, blue).

Line($x1: float, $y1: float, $x2: float, $y2: float, $style: array)

Draws a line. Overrides the method from FPDF. Parameters are:

- x1, y1: start point.
- x2, y2: end point.
- style: line style (array like for SetLineStyle).

Rect($x: float, $y: float, $w: float, $h: float, $style: string, $border_style: array, $fill_color: array)

Draws a rectangle. Overrides the method from FPDF. Parameters are:

- x, y: top left corner.
- w, h: width and height.
- style: style of rectangle (draw and/or fill: D, F, DF, FD).
- border_style: border style of rectangle. Array with index: (all => style) for all borders, or (L => style, T => style, R => style, B => style) for each border. Style is an array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).

Curve($x0: float, $y0: float, $x1: float, $y1: float, $x2: float, $y2: float, $x3: float, $y3: float, $style: string, $line_style: array, $fill_color: array)

Draws a Bézier curve. Parameters are:

- x0, y0: start point.
- x1, y1: control point 1.
- x2, y2: control point 2.
- x3, y3: end point.
- style: style of rectangle (draw and/or fill: D, F, DF, FD).
- line_style: line style for curve. Array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).

Ellipse($x0: float, $y0: float, $rx: float, $ry: float, $angle: float, $astart: float, $afinish: float, $style: string, $line_style: array, $fill_color: array, $nSeg: integer)

Draws an ellipse. Parameters are:

- x0, y0: center point.
- rx, ry: horizontal and vertical radius (if ry is 0, this is a circle).
- angle: orientation angle (anti-clockwise).
- astart: start angle.
- afinish: finish angle.
- style: style of ellipse (draw and/or fill: D, F, DF, FD, C (D + close)).
- line_style: line style for ellipse. Array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).
- nSeg: ellipse is made up of nSeg Bézier curves.

Circle($x0: float, $y0: float, $r: float, $astart: float, $afinish: float, $style: string, $line_style: array, $fill_color: array, $nSeg: integer)

Draws a circle. Parameters are:

- x0, y0: center point.
- R: radius.
- astart: start angle.
- afinish: finish angle.
- style: style of circle (draw and/or fill: D, F, DF, FD, C (D + close)).
- line_style: line style for circle. Array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).
- nSeg: circle is made up of nSeg Bézier curves.

Polygon($p: array, $style: string, $line_style: array, $fill_color: array)

Draws a polygon. Parameters are:

- p: points. Array with values x0, y0, x1, y1, ..., x(np-1), y(np-1).
- style: style of polygon (draw and/or fill: D, F, DF, FD).
- line_style: line style. Array with index (all => style) for all borders, or (0..np-1 => style) for each border. Style is an array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue)

RegularPolygon($x0: float, $y0: float, $r: float, $ns: Integer, $angle: float, $circle: boolean, $style: string, $line_style: array, $fill_color: array, $circle_style: array, $circle_line_style: array, $circle_fill_color: array)

Draws a regular polygon. Parameters are:

- x0, y0: center point.
- R: radius of circumscribed circle.
- ns: number of sides.
- angle: orientation angle (anti-clockwise).
- circle: draw circumscribed circle or not.
- style: style of polygon (draw and/or fill: D, F, DF, FD).
- line_style: line style. Array with index (all => style) for all borders, or (0..ns-1 => style) for each border. Style is an array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).
- circle_style: style of circumscribed circle (draw and/or fill: D, F, DF, FD).
- circle_line_style: line style for circumscribed circle. Array like for SetLineStyle.
- circle_fill_color: fill color for circumscribed circle. Array with components (red, green, blue).

StarPolygon($x0: float, $y0: float, $r: float, $nv: Integer, $ng: Integer, $angle: float, $circle: boolean, $style: string, $line_style: array, $fill_color: array, $circle_style: array, $circle_line_style: array, $circle_fill_color: array)

Draws a star polygon. Parameters are:

- x0, y0: center point.
- R: radius of circumscribed circle.
- nv: number of vertices.
- ng: number of gaps (ng % nv = 1 => regular polygon).
- angle: orientation angle (anti-clockwise).
- circle: draw circumscribed circle or not.
- style: style of polygon (draw and/or fill) (D, F, DF, FD).
- line_style: line style. Array with index (all => style) for all borders, or (0..n-1 => style) for each border. Style is an array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).
- circle_style: style of circumscribed circle (draw and/or fill) (D, F, DF, FD) (if draw).
- circle_line_style: line style for circumscribed circle. Array like for SetLineStyle (if draw).
- circle_fill_color: fill color for circumscribed circle. Array with components (red, green, blue).

RoundedRect($x: float, $y: float, $w: float, $h: float, $r: float, $round_corner: string, $style: string, $border_style: string, $fill_color: array)

Draws a rounded rectangle. Parameters are:

- x, y: top left corner.
- w, h: width and height.
- R: radius of the rounded corners.
- round_corner: draws rounded corners or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order: top left, top right, bottom right and bottom left.
- style: style of rectangle (draw and/or fill: D, F, DF, FD).
- border_style: border style of rectangle. Array like for SetLineStyle.
- fill_color: fill color. Array with components (red, green, blue).

Source

<?php require('fpdf.php'); class PDF_Draw extends FPDF { // Sets line style // Parameters: // - style: Line style. Array with keys among the following: // . width: Width of the line in user units // . cap: Type of cap to put on the line (butt, round, square). The difference between 'square' and 'butt' is that 'square' projects a flat end past the end of the line. // . join: miter, round or bevel // . dash: Dash pattern. Is 0 (without dash) or array with series of length values, which are the lengths of the on and off dashes. // For example: (2) represents 2 on, 2 off, 2 on , 2 off ... // (2, 1) is 2 on, 1 off, 2 on, 1 off.. etc // . phase: Modifier of the dash pattern which is used to shift the point at which the pattern starts // . color: Draw color. Array with components (red, green, blue) function SetLineStyle($style) { extract($style); if (isset($width)) { $width_prev = $this->LineWidth; $this->SetLineWidth($width); $this->LineWidth = $width_prev; } if (isset($cap)) { $ca = array('butt' => 0, 'round'=> 1, 'square' => 2); if (isset($ca[$cap])) $this->_out($ca[$cap] . ' J'); } if (isset($join)) { $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2); if (isset($ja[$join])) $this->_out($ja[$join] . ' j'); } if (isset($dash)) { $dash_string = ''; if ($dash) { $tab = explode(', ', $dash); $dash_string = ''; foreach ($tab as $i => $v) { if ($i > 0) $dash_string .= ' '; $dash_string .= sprintf('%.2F', $v); } } if (!isset($phase) || !$dash) $phase = 0; $this->_out(sprintf('[%s] %.2F d', $dash_string, $phase)); } if (isset($color)) { list($r, $g, $b) = $color; $this->SetDrawColor($r, $g, $b); } } // Draws a line // Parameters: // - x1, y1: Start point // - x2, y2: End point // - style: Line style. Array like for SetLineStyle function Line($x1, $y1, $x2, $y2, $style = null) { if ($style) $this->SetLineStyle($style); parent::Line($x1, $y1, $x2, $y2); } // Draws a rectangle // Parameters: // - x, y: Top left corner // - w, h: Width and height // - style: Style of rectangle (draw and/or fill: D, F, DF, FD) // - border_style: Border style of rectangle. Array with some of this index // . all: Line style of all borders. Array like for SetLineStyle // . L: Line style of left border. null (no border) or array like for SetLineStyle // . T: Line style of top border. null (no border) or array like for SetLineStyle // . R: Line style of right border. null (no border) or array like for SetLineStyle // . B: Line style of bottom border. null (no border) or array like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) function Rect($x, $y, $w, $h, $style = '', $border_style = null, $fill_color = null) { if (!(false === strpos($style, 'F')) && $fill_color) { list($r, $g, $b) = $fill_color; $this->SetFillColor($r, $g, $b); } switch ($style) { case 'F': $border_style = null; parent::Rect($x, $y, $w, $h, $style); break; case 'DF': case 'FD': if (!$border_style || isset($border_style['all'])) { if (isset($border_style['all'])) { $this->SetLineStyle($border_style['all']); $border_style = null; } } else $style = 'F'; parent::Rect($x, $y, $w, $h, $style); break; default: if (!$border_style || isset($border_style['all'])) { if (isset($border_style['all']) && $border_style['all']) { $this->SetLineStyle($border_style['all']); $border_style = null; } parent::Rect($x, $y, $w, $h, $style); } break; } if ($border_style) { if (isset($border_style['L']) && $border_style['L']) $this->Line($x, $y, $x, $y + $h, $border_style['L']); if (isset($border_style['T']) && $border_style['T']) $this->Line($x, $y, $x + $w, $y, $border_style['T']); if (isset($border_style['R']) && $border_style['R']) $this->Line($x + $w, $y, $x + $w, $y + $h, $border_style['R']); if (isset($border_style['B']) && $border_style['B']) $this->Line($x, $y + $h, $x + $w, $y + $h, $border_style['B']); } } // Draws a Bézier curve (the Bézier curve is tangent to the line between the control points at either end of the curve) // Parameters: // - x0, y0: Start point // - x1, y1: Control point 1 // - x2, y2: Control point 2 // - x3, y3: End point // - style: Style of rectangule (draw and/or fill: D, F, DF, FD) // - line_style: Line style for curve. Array like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) function Curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3, $style = '', $line_style = null, $fill_color = null) { if (!(false === strpos($style, 'F')) && $fill_color) { list($r, $g, $b) = $fill_color; $this->SetFillColor($r, $g, $b); } switch ($style) { case 'F': $op = 'f'; $line_style = null; break; case 'FD': case 'DF': $op = 'B'; break; default: $op = 'S'; break; } if ($line_style) $this->SetLineStyle($line_style); $this->_Point($x0, $y0); $this->_Curve($x1, $y1, $x2, $y2, $x3, $y3); $this->_out($op); } // Draws an ellipse // Parameters: // - x0, y0: Center point // - rx, ry: Horizontal and vertical radius (if ry = 0, draws a circle) // - angle: Orientation angle (anti-clockwise) // - astart: Start angle // - afinish: Finish angle // - style: Style of ellipse (draw and/or fill: D, F, DF, FD, C (D + close)) // - line_style: Line style for ellipse. Array like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) // - nSeg: Ellipse is made up of nSeg Bézier curves function Ellipse($x0, $y0, $rx, $ry = 0, $angle = 0, $astart = 0, $afinish = 360, $style = '', $line_style = null, $fill_color = null, $nSeg = 8) { if ($rx) { if (!(false === strpos($style, 'F')) && $fill_color) { list($r, $g, $b) = $fill_color; $this->SetFillColor($r, $g, $b); } switch ($style) { case 'F': $op = 'f'; $line_style = null; break; case 'FD': case 'DF': $op = 'B'; break; case 'C': $op = 's'; // small 's' means closing the path as well break; default: $op = 'S'; break; } if ($line_style) $this->SetLineStyle($line_style); if (!$ry) $ry = $rx; $rx *= $this->k; $ry *= $this->k; if ($nSeg < 2) $nSeg = 2; $astart = deg2rad((float) $astart); $afinish = deg2rad((float) $afinish); $totalAngle = $afinish - $astart; $dt = $totalAngle/$nSeg; $dtm = $dt/3; $x0 *= $this->k; $y0 = ($this->h - $y0) * $this->k; if ($angle != 0) { $a = -deg2rad((float) $angle); $this->_out(sprintf('q %.2F %.2F %.2F %.2F %.2F %.2F cm', cos($a), -1 * sin($a), sin($a), cos($a), $x0, $y0)); $x0 = 0; $y0 = 0; } $t1 = $astart; $a0 = $x0 + ($rx * cos($t1)); $b0 = $y0 + ($ry * sin($t1)); $c0 = -$rx * sin($t1); $d0 = $ry * cos($t1); $this->_Point($a0 / $this->k, $this->h - ($b0 / $this->k)); for ($i = 1; $i <= $nSeg; $i++) { // Draw this bit of the total curve $t1 = ($i * $dt) + $astart; $a1 = $x0 + ($rx * cos($t1)); $b1 = $y0 + ($ry * sin($t1)); $c1 = -$rx * sin($t1); $d1 = $ry * cos($t1); $this->_Curve(($a0 + ($c0 * $dtm)) / $this->k, $this->h - (($b0 + ($d0 * $dtm)) / $this->k), ($a1 - ($c1 * $dtm)) / $this->k, $this->h - (($b1 - ($d1 * $dtm)) / $this->k), $a1 / $this->k, $this->h - ($b1 / $this->k)); $a0 = $a1; $b0 = $b1; $c0 = $c1; $d0 = $d1; } $this->_out($op); if ($angle !=0) $this->_out('Q'); } } // Draws a circle // Parameters: // - x0, y0: Center point // - r: Radius // - astart: Start angle // - afinish: Finish angle // - style: Style of circle (draw and/or fill) (D, F, DF, FD, C (D + close)) // - line_style: Line style for circle. Array like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) // - nSeg: Ellipse is made up of nSeg Bézier curves function Circle($x0, $y0, $r, $astart = 0, $afinish = 360, $style = '', $line_style = null, $fill_color = null, $nSeg = 8) { $this->Ellipse($x0, $y0, $r, 0, 0, $astart, $afinish, $style, $line_style, $fill_color, $nSeg); } // Draws a polygon // Parameters: // - p: Points. Array with values x0, y0, x1, y1, ..., x(np-1), y(np - 1) // - style: Style of polygon (draw and/or fill) (D, F, DF, FD) // - line_style: Line style. Array with one of this index // . all: Line style of all lines. Array like for SetLineStyle // . 0..np-1: Line style of each line. Item is 0 (not line) or like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) function Polygon($p, $style = '', $line_style = null, $fill_color = null) { $np = count($p) / 2; if (!(false === strpos($style, 'F')) && $fill_color) { list($r, $g, $b) = $fill_color; $this->SetFillColor($r, $g, $b); } switch ($style) { case 'F': $line_style = null; $op = 'f'; break; case 'FD': case 'DF': $op = 'B'; break; default: $op = 'S'; break; } $draw = true; if ($line_style) if (isset($line_style['all'])) $this->SetLineStyle($line_style['all']); else { // 0 .. (np - 1), op = {B, S} $draw = false; if ('B' == $op) { $op = 'f'; $this->_Point($p[0], $p[1]); for ($i = 2; $i < ($np * 2); $i = $i + 2) $this->_Line($p[$i], $p[$i + 1]); $this->_Line($p[0], $p[1]); $this->_out($op); } $p[$np * 2] = $p[0]; $p[($np * 2) + 1] = $p[1]; for ($i = 0; $i < $np; $i++) if (!empty($line_style[$i])) $this->Line($p[$i * 2], $p[($i * 2) + 1], $p[($i * 2) + 2], $p[($i * 2) + 3], $line_style[$i]); } if ($draw) { $this->_Point($p[0], $p[1]); for ($i = 2; $i < ($np * 2); $i = $i + 2) $this->_Line($p[$i], $p[$i + 1]); $this->_Line($p[0], $p[1]); $this->_out($op); } } // Draws a regular polygon // Parameters: // - x0, y0: Center point // - r: Radius of circumscribed circle // - ns: Number of sides // - angle: Orientation angle (anti-clockwise) // - circle: Draw circumscribed circle or not // - style: Style of polygon (draw and/or fill) (D, F, DF, FD) // - line_style: Line style. Array with one of this index // . all: Line style of all lines. Array like for SetLineStyle // . 0..ns-1: Line style of each line. Item is 0 (not line) or like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) // - circle_style: Style of circumscribed circle (draw and/or fill) (D, F, DF, FD) (if draw) // - circle_line_style: Line style for circumscribed circle. Array like for SetLineStyle (if draw) // - circle_fill_color: Fill color for circumscribed circle. Array with components (red, green, blue) (if draw fill circle) function RegularPolygon($x0, $y0, $r, $ns, $angle = 0, $circle = false, $style = '', $line_style = null, $fill_color = null, $circle_style = '', $circle_line_style = null, $circle_fill_color = null) { if ($ns < 3) $ns = 3; if ($circle) $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_line_style, $circle_fill_color); $p = null; for ($i = 0; $i < $ns; $i++) { $a = $angle + ($i * 360 / $ns); $a_rad = deg2rad((float) $a); $p[] = $x0 + ($r * sin($a_rad)); $p[] = $y0 + ($r * cos($a_rad)); } $this->Polygon($p, $style, $line_style, $fill_color); } // Draws a star polygon // Parameters: // - x0, y0: Center point // - r: Radius of circumscribed circle // - nv: Number of vertices // - ng: Number of gaps (ng % nv = 1 => regular polygon) // - angle: Orientation angle (anti-clockwise) // - circle: Draw circumscribed circle or not // - style: Style of polygon (draw and/or fill) (D, F, DF, FD) // - line_style: Line style. Array with one of this index // . all: Line style of all lines. Array like for SetLineStyle // . 0..n-1: Line style of each line. Item is 0 (not line) or like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) // - circle_style: Style of circumscribed circle (draw and/or fill) (D, F, DF, FD) (if draw) // - circle_line_style: Line style for circumscribed circle. Array like for SetLineStyle (if draw) // - circle_fill_color: Fill color for circumscribed circle. Array with components (red, green, blue) (if draw fill circle) function StarPolygon($x0, $y0, $r, $nv, $ng, $angle = 0, $circle = false, $style = '', $line_style = null, $fill_color = null, $circle_style = '', $circle_line_style = null, $circle_fill_color = null) { if ($nv < 2) $nv = 2; if ($circle) $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_line_style, $circle_fill_color); $p2 = null; $visited = null; for ($i = 0; $i < $nv; $i++) { $a = $angle + ($i * 360 / $nv); $a_rad = deg2rad((float) $a); $p2[] = $x0 + ($r * sin($a_rad)); $p2[] = $y0 + ($r * cos($a_rad)); $visited[] = false; } $p = null; $i = 0; do { $p[] = $p2[$i * 2]; $p[] = $p2[($i * 2) + 1]; $visited[$i] = true; $i += $ng; $i %= $nv; } while (!$visited[$i]); $this->Polygon($p, $style, $line_style, $fill_color); } // Draws a rounded rectangle // Parameters: // - x, y: Top left corner // - w, h: Width and height // - r: Radius of the rounded corners // - round_corner: Draws rounded corner or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order and begin to 0: top left, top right, bottom right and bottom left // - style: Style of rectangle (draw and/or fill) (D, F, DF, FD) // - border_style: Border style of rectangle. Array like for SetLineStyle // - fill_color: Fill color. Array with components (red, green, blue) function RoundedRect($x, $y, $w, $h, $r, $round_corner = '1111', $style = '', $border_style = null, $fill_color = null) { if ('0000' == $round_corner) // Not rounded $this->Rect($x, $y, $w, $h, $style, $border_style, $fill_color); else { // Rounded if (!(false === strpos($style, 'F')) && $fill_color) { list($red, $g, $b) = $fill_color; $this->SetFillColor($red, $g, $b); } switch ($style) { case 'F': $border_style = null; $op = 'f'; break; case 'FD': case 'DF': $op = 'B'; break; default: $op = 'S'; break; } if ($border_style) $this->SetLineStyle($border_style); $MyArc = 4 / 3 * (sqrt(2) - 1); $this->_Point($x + $r, $y); $xc = $x + $w - $r; $yc = $y + $r; $this->_Line($xc, $y); if ($round_corner[0]) $this->_Curve($xc + ($r * $MyArc), $yc - $r, $xc + $r, $yc - ($r * $MyArc), $xc + $r, $yc); else $this->_Line($x + $w, $y); $xc = $x + $w - $r ; $yc = $y + $h - $r; $this->_Line($x + $w, $yc); if ($round_corner[1]) $this->_Curve($xc + $r, $yc + ($r * $MyArc), $xc + ($r * $MyArc), $yc + $r, $xc, $yc + $r); else $this->_Line($x + $w, $y + $h); $xc = $x + $r; $yc = $y + $h - $r; $this->_Line($xc, $y + $h); if ($round_corner[2]) $this->_Curve($xc - ($r * $MyArc), $yc + $r, $xc - $r, $yc + ($r * $MyArc), $xc - $r, $yc); else $this->_Line($x, $y + $h); $xc = $x + $r; $yc = $y + $r; $this->_Line($x, $yc); if ($round_corner[3]) $this->_Curve($xc - $r, $yc - ($r * $MyArc), $xc - ($r * $MyArc), $yc - $r, $xc, $yc - $r); else { $this->_Line($x, $y); $this->_Line($x + $r, $y); } $this->_out($op); } } /* PRIVATE METHODS */ // Sets a draw point // Parameters: // - x, y: Point function _Point($x, $y) { $this->_out(sprintf('%.2F %.2F m', $x * $this->k, ($this->h - $y) * $this->k)); } // Draws a line from last draw point // Parameters: // - x, y: End point function _Line($x, $y) { $this->_out(sprintf('%.2F %.2F l', $x * $this->k, ($this->h - $y) * $this->k)); } // Draws a Bézier curve from last draw point // Parameters: // - x1, y1: Control point 1 // - x2, y2: Control point 2 // - x3, y3: End point function _Curve($x1, $y1, $x2, $y2, $x3, $y3) { $this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c', $x1 * $this->k, ($this->h - $y1) * $this->k, $x2 * $this->k, ($this->h - $y2) * $this->k, $x3 * $this->k, ($this->h - $y3) * $this->k)); } } ?>

Example

<?php require('draw.php'); $pdf = new PDF_Draw(); $pdf->SetFont('arial', '', 10); $pdf->AddPage(); $style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10, 20, 5, 10', 'phase' => 10, 'color' => array(255, 0, 0)); $style2 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0)); $style3 = array('width' => 1, 'cap' => 'round', 'join' => 'round', 'dash' => '2, 10', 'color' => array(255, 0, 0)); $style4 = array('L' => 0, 'T' => array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => '20, 10', 'phase' => 10, 'color' => array(100, 100, 255)), 'R' => array('width' => 0.50, 'cap' => 'round', 'join' => 'miter', 'dash' => 0, 'color' => array(50, 50, 127)), 'B' => array('width' => 0.75, 'cap' => 'square', 'join' => 'miter', 'dash' => '30, 10, 5, 10')); $style5 = array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)); $style6 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10, 10', 'color' => array(0, 255, 0)); $style7 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(200, 200, 0)); // Line $pdf->Text(5, 7, 'Line examples'); $pdf->Line(5, 10, 80, 30, $style); $pdf->Line(5, 10, 5, 30, $style2); $pdf->Line(5, 10, 80, 10, $style3); // Rect $pdf->Text(100, 7, 'Rectangle examples'); $pdf->Rect(100, 10, 40, 20, 'DF', $style4, array(220, 220, 200)); $pdf->Rect(145, 10, 40, 20, 'D', array('all' => $style3)); // Curve $pdf->Text(5, 37, 'Curve examples'); $pdf->Curve(5, 40, 30, 55, 70, 45, 60, 75, null, $style6); $pdf->Curve(80, 40, 70, 75, 150, 45, 100, 75, 'F', $style6); $pdf->Curve(140, 40, 150, 55, 180, 45, 200, 75, 'DF', $style6, array(200, 220, 200)); // Circle and ellipse $pdf->Text(5, 82, 'Circle and ellipse examples'); $pdf->SetLineStyle($style5); $pdf->Circle(25, 105, 20); $pdf->Circle(25, 105, 10, 90, 180, null, $style6); $pdf->Circle(25, 105, 10, 270, 360, 'F'); $pdf->Circle(25, 105, 10, 270, 360, 'C', $style6); $pdf->SetLineStyle($style5); $pdf->Ellipse(100, 105, 40, 20); $pdf->Ellipse(100, 105, 20, 10, 0, 90, 180, null, $style6); $pdf->Ellipse(100, 105, 20, 10, 0, 270, 360, 'DF', $style6); $pdf->SetLineStyle($style5); $pdf->Ellipse(175, 105, 30, 15, 45); $pdf->Ellipse(175, 105, 15, 7.50, 45, 90, 180, null, $style6); $pdf->Ellipse(175, 105, 15, 7.50, 45, 270, 360, 'F', $style6, array(220, 200, 200)); // Polygon $pdf->Text(5, 132, 'Polygon examples'); $pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); $pdf->Polygon(array(5, 135, 45, 135, 15, 165)); $pdf->Polygon(array(60, 135, 80, 135, 80, 155, 70, 165, 50, 155), 'DF', array($style6, $style7, $style7, 0, $style6)); $pdf->Polygon(array(120, 135, 140, 135, 150, 155, 110, 155), 'D', array($style6, 0, $style7, $style6)); $pdf->Polygon(array(160, 135, 190, 155, 170, 155, 200, 160, 160, 165), 'DF', array('all' => $style6), array(220, 220, 220)); // Regular polygon $pdf->Text(5, 172, 'Regular polygon examples'); $pdf->SetLineStyle($style5); $pdf->RegularPolygon(20, 190, 15, 6, 0, 1, 'F'); $pdf->RegularPolygon(55, 190, 15, 6); $pdf->RegularPolygon(55, 190, 10, 6, 45, 0, 'DF', array($style6, 0, $style7, 0, $style7, $style7, $style6)); $pdf->RegularPolygon(90, 190, 15, 3, 0, 1, 'DF', array('all' => $style5), array(200, 220, 200), 'F', array(255, 200, 200)); $pdf->RegularPolygon(125, 190, 15, 4, 30, 1, null, array('all' => $style5), null, null, $style6); $pdf->RegularPolygon(160, 190, 15, 10); // Star polygon $pdf->Text(5, 212, 'Star polygon examples'); $pdf->SetLineStyle($style5); $pdf->StarPolygon(20, 230, 15, 20, 3, 0, 1, 'F'); $pdf->StarPolygon(55, 230, 15, 12, 5); $pdf->StarPolygon(55, 230, 7, 12, 5, 45, 0, 'DF', array($style6, 0, $style7, 0, $style7, $style7, $style6)); $pdf->StarPolygon(90, 230, 15, 20, 6, 0, 1, 'DF', array('all' => $style5), array(220, 220, 200), 'F', array(255, 200, 200)); $pdf->StarPolygon(125, 230, 15, 5, 2, 30, 1, null, array('all' => $style5), null, null, $style6); $pdf->StarPolygon(160, 230, 15, 10, 3); $pdf->StarPolygon(160, 230, 7, 50, 26); // Rounded rectangle $pdf->Text(5, 252, 'Rounded rectangle examples'); $pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); $pdf->RoundedRect(5, 255, 40, 30, 3.50, '1111', 'DF'); $pdf->RoundedRect(50, 255, 40, 30, 6.50, '1000'); $pdf->RoundedRect(95, 255, 40, 30, 10.0, '1111', null, $style6); $pdf->RoundedRect(140, 255, 40, 30, 8.0, '0101', 'DF', $style6, array(200, 200, 200)); $pdf->Output(); ?>
View the result here.

Download

ZIP | TGZ

Quelle

http://www.fpdf.org/en/script/script69.php, zuletzt abgerufen 29.03.2016 23:56