[RESOLVIDO] Imprimir Retangulo com cantos arredondados TCPDF

Estou tentando imprimir em PDF um retângulo com cantos arredondados e o mesmo não aparece!

No código do Layout PDF, inseri o seguinte:

$pdf = new TCPDF();
//Rect ($x, $y, $w, $h, $style=’’, $border_style=array(), $fill_color=array())
$pdf->Rect(30, 40, 50, 20, $style4, $border_style=array(4.0), $fill_color=array(400));

//RoundedRect ($x, $y, $w, $h, $r, $round_corner=‘1111’, $style=’’, $border_style=array(), $fill_color=array())
$pdf->RoundedRect (50, 50, 50, 20, 10.0);
$pdf->RoundedRect(95, 55, 40, 30, 10.0, ‘1111’,null, $border_style=array(4.0), $fill_color=array(400));

O retângulo é impresso perfeitamente, mas o retângulo com bordas arredondadas não aparece.

Obrigado!

Onde você colocou a função RoundedRect() ? Pois salvo me engano, ela não vem nativa da biblioteca.
Explique melhor o que você esta fazendo, se esta desenvolvendo em um Blank, ou se usa o ReportPdf, etc…

Segue abaixo a biblioteca que faz isso:

function RoundedRect($x, $y, $w, $h, $r, $style = '')
    {
        $k = $this->k;
        $hp = $this->h;
        if($style=='F')
            $op='f';
        elseif($style=='FD' || $style=='DF')
            $op='B';
        else
            $op='S';
        $MyArc = 4/3 * (sqrt(2) - 1);
        $this->_out(sprintf('%.2F %.2F m',($x+$r)*$k,($hp-$y)*$k ));
        $xc = $x+$w-$r ;
        $yc = $y+$r;
        $this->_out(sprintf('%.2F %.2F l', $xc*$k,($hp-$y)*$k ));

        $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
        $xc = $x+$w-$r ;
        $yc = $y+$h-$r;
        $this->_out(sprintf('%.2F %.2F l',($x+$w)*$k,($hp-$yc)*$k));
        $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
        $xc = $x+$r ;
        $yc = $y+$h-$r;
        $this->_out(sprintf('%.2F %.2F l',$xc*$k,($hp-($y+$h))*$k));
        $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
        $xc = $x+$r ;
        $yc = $y+$r;
        $this->_out(sprintf('%.2F %.2F l',($x)*$k,($hp-$yc)*$k ));
        $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
        $this->_out($op);
    }

    function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
    {
        $h = $this->h;
        $this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $x1*$this->k, ($h-$y1)*$this->k,
            $x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k));
    }

Só implementar!

Fred, obrigado por ajudar.

Estou em Report PDF > Layout PDF > Código
Inseri o código e só aparece o retângulo.

Após sua resposta criei uma biblioteca (de Projeto) com o código que vc enviou em Ferramentas > Bibliotecas.
No Report PDF > Programação > Bibliotecas, selecionei a biblioteca criada.

O código no Report PDF está assim:

$pdf = new TCPDF();

$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’));

// Rect ($x, $y, $w, $h, $style=’’, $border_style=array(), $fill_color=array())
$pdf->Rect(30, 40, 50, 20, $style4, $border_style=array(4.0), $fill_color=array(400));

// RoundedRect ($x, $y, $w, $h, $r, $round_corner=‘1111’, $style=’’, $border_style=array(), $fill_color=array())
$pdf->RoundedRect (50, 50, 50, 20, 10.0);
$pdf->RoundedRect(95, 55, 40, 30, 10.0, ‘1111’,null, $border_style=array(4.0), $fill_color=array(400));

Mesmo assim, só aparece o retângulo.

Não sei usar o ReportPDF… apenas Blank! Desculpa.

Bom dia Fred, eu também sempre usei blank, precisei alterar um Report PDF antigo e achei na documentação os metódos SC para report PDF que faz os métodos FPDF, como segue:

Metodo FPDF Macro ScriptCase Descrição
AcceptPageBreak sc_pdf_accept_page_break Aceita ou não quebra de página automática.
AddFont sc_pdf_add_font Adiciona uma nova fonte
AddLink sc_pdf_add_link Cria um link interno
AddPage sc_pdf_add_page Adiciona uma nova página.
AliasNbPages sc_pdf_alias_nb_pages Define uma alias para o número de páginas
Cell sc_pdf_cell imprime uma célula
Close sc_pdf_close: finaliza o documento
Error sc_pdf_error Exibir mensagem de erro
Footer sc_pdf_footer Rodapé da página
GetStringWidth sc_pdf_get_string_length Calcula o tamanho de uma string
GetX sc_pdf_get_x Retorna a posição atual de x
GetY sc_pdf_get_y Retorna a posição atual de y
Header sc_pdf_header Cabeçalho da página
Image sc_pdf_image Coloca uma imagem na página
Line sc_pdf_line Desenha uma linha
Link sc_pdf_link Insere um link
Ln sc_pdf_ln Configura a quebra de linha
MultiCell sc_pdf_multi_cell imprime um texto com quebra de linhas
Output sc_pdf_output Salva ou envia o documento
PageNo sc_pdf_page_no Número da página
Rect sc_pdf_rect Desenha um retângulo
SetAuthor sc_pdf_set_author Define o autor do documento
SetAutoPageBreak sc_pdf_set_auto_page_break Ativa ou desativa o modo de quebra de página autom…
SetCompression sc_pdf_set_compression Liga / Desliga compressão de página
SetCreator sc_pdf_set_creator Define o criador do documento.
SetDisplayMode sc_pdf_set_display_mode Alterna o modo display
SetDrawColor sc_pdf_set_draw_color Define a cor usada para operações de desenho
SetFillColor sc_pdf_set_fill_color Define a cor para operações de preenchimento
SetFont sc_pdf_set_font Define as configurações da fonte
SetFontSize sc_pdf_set_font_size Define o tamanho da fonte
SetKeywords sc_pdf_set_keywords Associa uma palvra chave a um documento
SetLeftMargin sc_pdf_set_left_margin Define a margem esquerda
SetLineWidth sc_pdf_set_line_width Define a largura da linha
SetLink sc_pdf_set_link Define o destino de um link interno
SetMargins sc_pdf_set_margins Define as margens
SetRightMargin sc_pdf_set_right_margin Define a margem direita
SetSubject sc_pdf_set_subject Define o assunto
SetTextColor sc_pdf_set_text_color Define a cor do texto
SetTitle sc_pdf_set_title Define o título do documento
SetTopMargin sc_pdf_set_top_margin Define a margem do topo
SetX sc_pdf_set_x Define a posição atual de x
SetXY sc_pdf_set_xy Define a posição atual de x e y
SetY sc_pdf_set_y Define a posição atual de y
Text sc_pdf_text Imrime uma string
Write sc_pdf_write Imprime uma string de caracteres

Achei a solução para o meu problema.
Vejam como foi resolvido:

Pesquisando sobre Retângulos com Cantos Arredondados na FPDF, encontrei um código nesse link http://www.fpdf.org/~~V/phorum/read.php?f=1&i=59709&t=59709&v=t, na qual fiz algumas alterações que permitiram criar na minha aplicação o Retângulo com Cantos Arredondados.

Em Report PDF > Layout PDF > Código, insira o seguinte código abaixo:

[font=courier]

DESENHA RETANGULOS COM CANTOS ARREDONDADOS

$pdf->SetLineWidth(0.5);
$pdf->SetDrawColor(255,0,0);

$x=20; # Posição X
$y=50; # Posição Y
$w=100; # Largura
$h=50; # Altura
$raio=20; # Tamanho do canto
$r=10; # Resolução do desenho (melhor entre 0.1 e 10);

$cantoID = 0;
$cantoIE = 90;
$cantoSE = 180;
$cantoSD = 270;

$x+=$raio;
$y+=$raio;

Linha superior

$pdf->Line($x,$y-$raio,$x+$w-($raio*2),$y-$raio);

Linha inferior

$pdf->Line($x,$y-$raio+$h,$x+$w-($raio*2),$y-$raio+$h);

Linha esquerda

$pdf->Line($x-$raio,$y,$x-$raio,$y-($raio*2)+$h);

Linha direita

$pdf->Line($x-$raio+$w,$y,$x-$raio+$w,$y-($raio*2)+$h);

Canto Superior Esquerda

for($cantoSE=180; $cantoSE<270; $cantoSE+=$r)
{
$Xse =((cos($cantoSEpi()/180))$raio)+$x;
$Yse =((sin($cantoSEpi()/180))$raio)+$y;
$X1se =((cos(($cantoSE+$r)pi()/180))$raio)+$x;
$Y1se =((sin(($cantoSE+$r)pi()/180))$raio)+$y;
$pdf->Line($Xse,$Yse,$X1se,$Y1se);
}

Canto Superior Direito

$x+=$w-$raio-$raio;
for($cantoSD=270; $cantoSD<360; $cantoSD+=$r)
{
$Xsd =((cos($cantoSDpi()/180))$raio)+$x;
$Ysd =((sin($cantoSDpi()/180))$raio)+$y;
$X1sd =((cos(($cantoSD+$r)pi()/180))$raio)+$x;
$Y1sd =((sin(($cantoSD+$r)pi()/180))$raio)+$y;
$pdf->Line($Xsd,$Ysd,$X1sd,$Y1sd);
}

Canto Inferior Direito

$y+=$h-$raio-$raio;
for($cantoID=0; $cantoID<90; $cantoID+=$r)
{
$Xid =((cos($cantoIDpi()/180))$raio)+$x;
$Yid =((sin($cantoIDpi()/180))$raio)+$y;
$X1id =((cos(($cantoID+$r)pi()/180))$raio)+$x;
$Y1id =((sin(($cantoID+$r)pi()/180))$raio)+$y;
$pdf->Line($Xid,$Yid,$X1id,$Y1id);
}

Canto Inferior Esquerdo

$x-=$w-$raio-$raio;
for($cantoIE=90; $cantoIE<180; $cantoIE+=$r)
{
$Xie =((cos($cantoIEpi()/180))$raio)+$x;
$Yie =((sin($cantoIEpi()/180))$raio)+$y;
$X1ie =((cos(($cantoIE+$r)pi()/180))$raio)+$x;
$Y1ie =((sin(($cantoIE+$r)pi()/180))$raio)+$y;
$pdf->Line($Xie,$Yie,$X1ie,$Y1ie);
}
[/font]