Exemple #1
0
 /**
  * Draw mark
  *
  * @param object $g plot object reference
  * @access private
  * @return void
  */
 private function _drawMark(&$g, $type, $color, $fcolor, $size)
 {
     if ($type) {
         $g->SetType($this->_getMark($type));
     }
     if ($color) {
         $g->SetColor($color);
     }
     if ($fcolor) {
         $g->SetFillColor($fcolor);
     }
     if ($size) {
         $g->SetSize($size);
     }
 }
 /**
  *
  * @param string $code
  * @param float $x
  * @param float $y
  * @param float $w
  * @param float $h
  * @param object $pdf
  * @return void
  */
 public static function draw_code39($code, $x, $y, $w, $h, $pdf)
 {
     //Dessine les barres
     $pdf->SetDrawColor(0, 0, 0);
     $pdf->SetFillColor(0, 0, 0);
     for ($i = 0; $i < strlen($code); $i++) {
         if ($code[$i] == '1') {
             $pdf->Rect($x + $i * $w, $y, $w, $h, 'F');
         }
     }
 }
Exemple #3
0
 /**
  *cabecalhoDANFE
  * Monta o cabelhalho da DANFE (retrato e paisagem)
  *
  * @param number $x Posição horizontal inicial, canto esquerdo
  * @param number $y Posição vertical inicial, canto superior
  * @param number $pag Número da Página
  * @param number$totPag Total de páginas
  * @return number Posição vertical final
  */
 protected function pCabecalhoDANFE($x = 0, $y = 0, $pag = '1', $totPag = '1')
 {
     $oldX = $x;
     $oldY = $y;
     if ($this->orientacao == 'P') {
         $maxW = $this->wPrint;
     } else {
         if ($pag == 1) {
             // primeira página
             $maxW = $this->wPrint - $this->wCanhoto;
         } else {
             // páginas seguintes
             $maxW = $this->wPrint;
         }
     }
     //####################################################################################
     //coluna esquerda identificação do emitente
     $w = round($maxW * 0.41, 0);
     if ($this->orientacao == 'P') {
         $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => 'I');
     } else {
         $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => 'B');
     }
     $w1 = $w;
     $h = 32;
     $oldY += $h;
     $this->pTextBox($x, $y, $w, $h);
     $texto = 'IDENTIFICAÇÃO DO EMITENTE';
     $this->pTextBox($x, $y, $w, 5, $texto, $aFont, 'T', 'C', 0, '');
     //estabelecer o alinhamento
     //pode ser left L, center C, right R, full logo L
     //se for left separar 1/3 da largura para o tamanho da imagem
     //os outros 2/3 serão usados para os dados do emitente
     //se for center separar 1/2 da altura para o logo e 1/2 para os dados
     //se for right separa 2/3 para os dados e o terço seguinte para o logo
     //se não houver logo centraliza dos dados do emitente
     // coloca o logo
     if (is_file($this->logomarca)) {
         $logoInfo = getimagesize($this->logomarca);
         //largura da imagem em mm
         $logoWmm = $logoInfo[0] / 72 * 25.4;
         //altura da imagem em mm
         $logoHmm = $logoInfo[1] / 72 * 25.4;
         if ($this->logoAlign == 'L') {
             $nImgW = round($w / 3, 0);
             $nImgH = round($logoHmm * ($nImgW / $logoWmm), 0);
             $xImg = $x + 1;
             $yImg = round(($h - $nImgH) / 2, 0) + $y;
             //estabelecer posições do texto
             $x1 = round($xImg + $nImgW + 1, 0);
             $y1 = round($h / 3 + $y, 0);
             $tw = round(2 * $w / 3, 0);
         } elseif ($this->logoAlign == 'C') {
             $nImgH = round($h / 3, 0);
             $nImgW = round($logoWmm * ($nImgH / $logoHmm), 0);
             $xImg = round(($w - $nImgW) / 2 + $x, 0);
             $yImg = $y + 3;
             $x1 = $x;
             $y1 = round($yImg + $nImgH + 1, 0);
             $tw = $w;
         } elseif ($this->logoAlign == 'R') {
             $nImgW = round($w / 3, 0);
             $nImgH = round($logoHmm * ($nImgW / $logoWmm), 0);
             $xImg = round($x + ($w - (1 + $nImgW)), 0);
             $yImg = round(($h - $nImgH) / 2, 0) + $y;
             $x1 = $x;
             $y1 = round($h / 3 + $y, 0);
             $tw = round(2 * $w / 3, 0);
         } elseif ($this->logoAlign == 'F') {
             $nImgH = round($h - 5, 0);
             $nImgW = round($logoWmm * ($nImgH / $logoHmm), 0);
             $xImg = round(($w - $nImgW) / 2 + $x, 0);
             $yImg = $y + 3;
             $x1 = $x;
             $y1 = round($yImg + $nImgH + 1, 0);
             $tw = $w;
         }
         $this->pdf->Image($this->logomarca, $xImg, $yImg, $nImgW, $nImgH);
     } else {
         $x1 = $x;
         $y1 = round($h / 3 + $y, 0);
         $tw = $w;
     }
     // monta as informações apenas se diferente de full logo
     if ($this->logoAlign !== 'F') {
         //Nome emitente
         $aFont = array('font' => $this->fontePadrao, 'size' => 12, 'style' => 'B');
         $texto = $this->emit->getElementsByTagName("xNome")->item(0)->nodeValue;
         $this->pTextBox($x1, $y1, $tw, 8, $texto, $aFont, 'T', 'C', 0, '');
         //endereço
         $y1 = $y1 + 5;
         $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => '');
         $fone = !empty($this->enderEmit->getElementsByTagName("fone")->item(0)->nodeValue) ? $this->enderEmit->getElementsByTagName("fone")->item(0)->nodeValue : '';
         $lgr = $this->pSimpleGetValue($this->enderEmit, "xLgr");
         $nro = $this->pSimpleGetValue($this->enderEmit, "nro");
         $cpl = $this->pSimpleGetValue($this->enderEmit, "xCpl", " - ");
         $bairro = $this->pSimpleGetValue($this->enderEmit, "xBairro");
         $CEP = $this->pSimpleGetValue($this->enderEmit, "CEP");
         $CEP = $this->pFormat($CEP, "#####-###");
         $mun = $this->pSimpleGetValue($this->enderEmit, "xMun");
         $UF = $this->pSimpleGetValue($this->enderEmit, "UF");
         $texto = $lgr . ", " . $nro . $cpl . "\n" . $bairro . " - " . $CEP . "\n" . $mun . " - " . $UF . " " . "Fone/Fax: " . $fone;
         $this->pTextBox($x1, $y1, $tw, 8, $texto, $aFont, 'T', 'C', 0, '');
     }
     //####################################################################################
     //coluna central Danfe
     $x += $w;
     $w = round($maxW * 0.17, 0);
     //35;
     $w2 = $w;
     $h = 32;
     $this->pTextBox($x, $y, $w, $h);
     if (!$this->pNotaCancelada()) {
         // A PRINCIPIO NÃO PRECISAVA, POIS A NFE ESTÁ AUTORIZADA,
         // SÓ SE RETIRA O DANFE PARA NOTAS NÃO AUTORIZADAS
         $texto = "DANFE";
         $aFont = array('font' => $this->fontePadrao, 'size' => 14, 'style' => 'B');
         $this->pTextBox($x, $y + 1, $w, $h, $texto, $aFont, 'T', 'C', 0, '');
         $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => '');
         $texto = 'Documento Auxiliar da Nota Fiscal Eletrônica';
         $h = 20;
         $this->pTextBox($x, $y + 6, $w, $h, $texto, $aFont, 'T', 'C', 0, '', false);
     }
     $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => '');
     $texto = '0 - ENTRADA';
     $y1 = $y + 14;
     $h = 8;
     $this->pTextBox($x + 2, $y1, $w, $h, $texto, $aFont, 'T', 'L', 0, '');
     $texto = '1 - SAÍDA';
     $y1 = $y + 17;
     $this->pTextBox($x + 2, $y1, $w, $h, $texto, $aFont, 'T', 'L', 0, '');
     //tipo de nF
     $aFont = array('font' => $this->fontePadrao, 'size' => 12, 'style' => 'B');
     $y1 = $y + 13;
     $h = 7;
     $texto = $this->ide->getElementsByTagName('tpNF')->item(0)->nodeValue;
     $this->pTextBox($x + 27, $y1, 5, $h, $texto, $aFont, 'C', 'C', 1, '');
     //numero da NF
     $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
     $y1 = $y + 20;
     $numNF = str_pad($this->ide->getElementsByTagName('nNF')->item(0)->nodeValue, 9, "0", STR_PAD_LEFT);
     $numNF = $this->pFormat($numNF, "###.###.###");
     $texto = "Nº. " . $numNF;
     $this->pTextBox($x, $y1, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
     //Série
     $y1 = $y + 23;
     $serie = str_pad($this->ide->getElementsByTagName('serie')->item(0)->nodeValue, 3, "0", STR_PAD_LEFT);
     $texto = "Série " . $serie;
     $this->pTextBox($x, $y1, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
     //numero paginas
     $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => 'I');
     $y1 = $y + 26;
     $texto = "Folha " . $pag . "/" . $totPag;
     $this->pTextBox($x, $y1, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
     //####################################################################################
     //coluna codigo de barras
     $x += $w;
     $w = $maxW - $w1 - $w2;
     //85;
     $w3 = $w;
     $h = 32;
     $this->pTextBox($x, $y, $w, $h);
     $this->pdf->SetFillColor(0, 0, 0);
     $chave_acesso = str_replace('NFe', '', $this->infNFe->getAttribute("Id"));
     $bW = 75;
     $bH = 12;
     //codigo de barras
     $this->pdf->Code128($x + ($w - $bW) / 2, $y + 2, $chave_acesso, $bW, $bH);
     //linhas divisorias
     $this->pdf->Line($x, $y + 4 + $bH, $x + $w, $y + 4 + $bH);
     $this->pdf->Line($x, $y + 12 + $bH, $x + $w, $y + 12 + $bH);
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $y1 = $y + 4 + $bH;
     $h = 7;
     $texto = 'CHAVE DE ACESSO';
     $this->pTextBox($x, $y1, $w, $h, $texto, $aFont, 'T', 'L', 0, '');
     $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => 'B');
     $y1 = $y + 8 + $bH;
     $texto = $this->pFormat($chave_acesso, $this->formatoChave);
     $this->pTextBox($x + 2, $y1, $w - 2, $h, $texto, $aFont, 'T', 'C', 0, '');
     $y1 = $y + 12 + $bH;
     $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => '');
     $chaveContingencia = "";
     if ($this->pNotaDPEC()) {
         $cabecalhoProtoAutorizacao = 'NÚMERO DE REGISTRO DPEC';
     } else {
         $cabecalhoProtoAutorizacao = 'PROTOCOLO DE AUTORIZAÇÃO DE USO';
     }
     if (($this->tpEmis == 2 || $this->tpEmis == 5) && !$this->pNotaDPEC()) {
         $cabecalhoProtoAutorizacao = "DADOS DA NF-E";
         $chaveContingencia = $this->pGeraChaveAdicionalDeContingencia();
         $this->pdf->SetFillColor(0, 0, 0);
         //codigo de barras
         $this->pdf->Code128($x + 11, $y1 + 1, $chaveContingencia, $bW * 0.9, $bH / 2);
     } else {
         $texto = 'Consulta de autenticidade no portal nacional da NF-e';
         $this->pTextBox($x + 2, $y1, $w - 2, $h, $texto, $aFont, 'T', 'C', 0, '');
         $y1 = $y + 16 + $bH;
         $texto = 'www.nfe.fazenda.gov.br/portal ou no site da Sefaz Autorizadora';
         $this->pTextBox($x + 2, $y1, $w - 2, $h, $texto, $aFont, 'T', 'C', 0, 'http://www.nfe.fazenda.gov.br/portal ou no site da Sefaz Autorizadora');
     }
     //####################################################################################
     //Dados da NF do cabeçalho
     //natureza da operação
     $texto = 'NATUREZA DA OPERAÇÃO';
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $w = $w1 + $w2;
     $y = $oldY;
     $oldY += $h;
     $x = $oldX;
     $h = 7;
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'T', 'L', 1, '');
     $texto = $this->ide->getElementsByTagName("natOp")->item(0)->nodeValue;
     $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'B', 'C', 0, '');
     $x += $w;
     $w = $w3;
     //PROTOCOLO DE AUTORIZAÇÃO DE USO ou DADOS da NF-E
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $this->pTextBox($x, $y, $w, $h, $cabecalhoProtoAutorizacao, $aFont, 'T', 'L', 1, '');
     // algumas NFe podem estar sem o protocolo de uso portanto sua existencia deve ser
     // testada antes de tentar obter a informação.
     // NOTA : DANFE sem protocolo deve existir somente no caso de contingência !!!
     // Além disso, existem várias NFes em contingência que eu recebo com protocolo de autorização.
     // Na minha opinião, deveríamos mostra-lo, mas o  manual  da NFe v4.01 diz outra coisa...
     if (($this->tpEmis == 2 || $this->tpEmis == 5) && !$this->pNotaDPEC()) {
         $aFont = array('font' => $this->fontePadrao, 'size' => 8, 'style' => 'B');
         $texto = $this->pFormat($chaveContingencia, "#### #### #### #### #### #### #### #### ####");
         $cStat = '';
     } else {
         $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
         if ($this->pNotaDPEC()) {
             $texto = $this->numero_registro_dpec;
             $cStat = '';
         } else {
             if (isset($this->nfeProc)) {
                 $texto = !empty($this->nfeProc->getElementsByTagName("nProt")->item(0)->nodeValue) ? $this->nfeProc->getElementsByTagName("nProt")->item(0)->nodeValue : '';
                 $tsHora = $this->pConvertTime($this->nfeProc->getElementsByTagName("dhRecbto")->item(0)->nodeValue);
                 if ($texto != '') {
                     $texto .= "  -  " . date('d/m/Y H:i:s', $tsHora);
                 }
                 $cStat = $this->nfeProc->getElementsByTagName("cStat")->item(0)->nodeValue;
             } else {
                 $texto = '';
                 $cStat = '';
             }
         }
     }
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'B', 'C', 0, '');
     //####################################################################################
     //INSCRIÇÃO ESTADUAL
     $w = round($maxW * 0.333, 0);
     $y += $h;
     $oldY += $h;
     $x = $oldX;
     $texto = 'INSCRIÇÃO ESTADUAL';
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'T', 'L', 1, '');
     $texto = $this->pSimpleGetValue($this->emit, "IE");
     $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'B', 'C', 0, '');
     //INSCRIÇÃO ESTADUAL DO SUBST. TRIBUT.
     $x += $w;
     $texto = 'INSCRIÇÃO ESTADUAL DO SUBST. TRIBUT.';
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'T', 'L', 1, '');
     $texto = !empty($this->emit->getElementsByTagName("IEST")->item(0)->nodeValue) ? $this->emit->getElementsByTagName("IEST")->item(0)->nodeValue : '';
     $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'B', 'C', 0, '');
     //CNPJ
     $x += $w;
     $w = $maxW - 2 * $w;
     $texto = 'CNPJ';
     $aFont = array('font' => $this->fontePadrao, 'size' => 6, 'style' => '');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'T', 'L', 1, '');
     $texto = $this->emit->getElementsByTagName("CNPJ")->item(0)->nodeValue;
     $texto = $this->pFormat($texto, "##.###.###/####-##");
     $aFont = array('font' => $this->fontePadrao, 'size' => 10, 'style' => 'B');
     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'B', 'C', 0, '');
     //####################################################################################
     //Indicação de NF Homologação, cancelamento e falta de protocolo
     $tpAmb = $this->ide->getElementsByTagName('tpAmb')->item(0)->nodeValue;
     //indicar cancelamento
     if ($this->pNotaCancelada()) {
         //101 Cancelamento
         $x = 10;
         $y = $this->hPrint - 130;
         $h = 25;
         $w = $maxW - 2 * $x;
         $this->pdf->SetTextColor(90, 90, 90);
         $texto = "NFe CANCELADA";
         $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
         $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $this->pdf->SetTextColor(0, 0, 0);
     }
     if ($this->pNotaDPEC() || $this->tpEmis == 4) {
         //DPEC
         $x = 10;
         $y = $this->hPrint - 130;
         $h = 25;
         $w = $maxW - 2 * $x;
         $this->pdf->SetTextColor(200, 200, 200);
         $texto = "DANFE impresso em contingência -\n" . "DPEC regularmente recebido pela Receita\n" . "Federal do Brasil";
         $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
         $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $this->pdf->SetTextColor(0, 0, 0);
     }
     if ($this->pNotaDenegada()) {
         //110 301 302 Denegada
         $x = 10;
         $y = $this->hPrint - 130;
         $h = 25;
         $w = $maxW - 2 * $x;
         $this->pdf->SetTextColor(90, 90, 90);
         $texto = "NFe USO DENEGADO";
         $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
         $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $y += $h;
         $h = 5;
         $w = $maxW - 2 * $x;
         if (isset($this->infProt)) {
             $xMotivo = $this->infProt->getElementsByTagName("xMotivo")->item(0)->nodeValue;
         } else {
             $xMotivo = '';
         }
         $texto = "SEM VALOR FISCAL\n" . $xMotivo;
         $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
         $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $this->pdf->SetTextColor(0, 0, 0);
     }
     //indicar sem valor
     if ($tpAmb != 1) {
         $x = 10;
         if ($this->orientacao == 'P') {
             $y = round($this->hPrint * 2 / 3, 0);
         } else {
             $y = round($this->hPrint / 2, 0);
         }
         $h = 5;
         $w = $maxW - 2 * $x;
         $this->pdf->SetTextColor(90, 90, 90);
         $texto = "SEM VALOR FISCAL";
         $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
         $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $aFont = array('font' => $this->fontePadrao, 'size' => 30, 'style' => 'B');
         $texto = "AMBIENTE DE HOMOLOGAÇÃO";
         $this->pTextBox($x, $y + 14, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         $this->pdf->SetTextColor(0, 0, 0);
     } else {
         $x = 10;
         if ($this->orientacao == 'P') {
             $y = round($this->hPrint * 2 / 3, 0);
         } else {
             $y = round($this->hPrint / 2, 0);
         }
         //fim orientacao
         $h = 5;
         $w = $maxW - 2 * $x;
         $this->pdf->SetTextColor(90, 90, 90);
         //indicar FALTA DO PROTOCOLO se NFe não for em contingência
         if (($this->tpEmis == 2 || $this->tpEmis == 5) && !$this->pNotaDPEC()) {
             //Contingência
             $texto = "DANFE Emitido em Contingência";
             $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
             $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
             $aFont = array('font' => $this->fontePadrao, 'size' => 30, 'style' => 'B');
             $texto = "devido à problemas técnicos";
             $this->pTextBox($x, $y + 12, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
         } else {
             if (!isset($this->nfeProc)) {
                 if (!$this->pNotaDPEC()) {
                     $texto = "SEM VALOR FISCAL";
                     $aFont = array('font' => $this->fontePadrao, 'size' => 48, 'style' => 'B');
                     $this->pTextBox($x, $y, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
                 }
                 $aFont = array('font' => $this->fontePadrao, 'size' => 30, 'style' => 'B');
                 $texto = "FALTA PROTOCOLO DE APROVAÇÃO DA SEFAZ";
                 if (!$this->pNotaDPEC()) {
                     $this->pTextBox($x, $y + 12, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
                 } else {
                     $this->pTextBox($x, $y + 25, $w, $h, $texto, $aFont, 'C', 'C', 0, '');
                 }
             }
             //fim nefProc
         }
         //fim tpEmis
         $this->pdf->SetTextColor(0, 0, 0);
     }
     return $oldY;
 }
 /**
  * Arbitrary cells containing text, optionally with borders and backgrounds
  *
  * @param string $text The text to display, can include line breaks with <br /> or \n
  * @param array $options an associative array of options, in the format 'option' => $value
  *  Possible options:
  *  font - object defining any of family, size and decoration, and colour as properties.
  *  fill - HTML-style hex string of RGB for background colour.
  *  width - the cell width, defaults to 0 (whole page)
  *  height - the cell height, defaults to 0
  *  border - 0 for no border, 1 for all borders, combination of LTRB for Left, Top, Right,
  *      Bottom, defaults to 0
  *  align - L for left, C for center, R for right, defaults to L
  *
  */
 public static function cell($text, $options = array())
 {
     $width = array_key_exists('width', $options) ? $options['width'] : '';
     $height = array_key_exists('height', $options) ? $options['height'] : self::$pdf->FontSize * 1.2;
     $border = array_key_exists('border', $options) ? $options['border'] : '';
     $fill = array_key_exists('fill', $options) ? $options['fill'] : 0;
     $breakafter = array_key_exists('breakafter', $options) ? $options['breakafter'] : 0;
     $align = array_key_exists('align', $options) ? $options['align'] : 'L';
     if (array_key_exists('font', $options) && !empty($options['font'])) {
         self::change_font($options['font']);
     }
     if (array_key_exists('fill', $options)) {
         $fill = 1;
         $colour = self::parse_colour($options['fill']);
         self::$pdf->SetFillColor($colour['red'], $colour['green'], $colour['blue']);
     }
     if (empty($border)) {
         $borders = 0;
     } else {
         $style = new stdClass();
         $borders = $border->borders;
         $style->width = isset($border->width) ? $border->width : null;
         $style->colour = isset($border->colour) ? $border->colour : null;
         self::$pdf->change_line_style($style);
     }
     $text = str_replace('<br />', "\n", $text);
     $text = self::decode_utf8($text);
     if (strpos($text, "\n") === false) {
         return self::$pdf->Cell($width, $height, $text, $borders, $breakafter, $align, $fill);
     } else {
         return self::$pdf->MultiCell($width, $height, $text, $borders, $align, $fill);
     }
 }