Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Artur Mendonça

Problema com caracteres especiais em mPDF

Recommended Posts

Olá amigos,

no meu sistema estou gerando um PDF com mPDF, mas os caracteres especiais aparecem desconfigurados.

 

O código é o seguinte:

<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
</head>
<?php

	include ('pdf/mpdf.php');
	include_once('conexao.php');
	    

Aqui está todo o código para passar os dados para o PDF e Formatação


$PDFContent = mb_convert_encoding($html, 'UTF-8', 'ISO-8859-1');
$mpdf = new mPDF();
$mpdf-> WriteHTML($PDFContent);
$mpdf-> Output($arquivo,'I');

// I - Abre o arquivo no navegador
// F - Salva o arquivo no servidor
// D - Salva o arquivo no computador do utilizador
?>

Na BD os caracteres aparecem corretamente, mas no documento em PDF aparecem desconfigurados.

 

Como posso resolver? Já pesquisei em vários sites e tentei várias soluções apresentadas mas nenhuma funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado.

 

Já baixei, descompactei e coloquei na pasta PDF do meu projeto, mas não está funcionando. A página abre em branco.
Coloquei assim.

<?php	require_once ('pdf/fpdf.php');
	include_once('conexao.php');

Código com os dados a passar para o PDF

$PDFContent = mb_convert_encoding($html, 'UTF-8', 'ISO-8859-1');
$fpdf = new fPDF("P","pt", "A4");
$fpdf-> WriteHTML($PDFContent);
$fpdf-> Output($arquivo,'I');

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já comecei a trabalhar com FPDF, mas os caracteres especiais (como por exemplo Esq.º) continuam a aparecer desconfgurados.
As palavras acentuadas (como por exemplo básico) aparecem corretamente. 

 

Coloquei o código assim:

<?php
ob_start ();

include('pdf/fpdf/fpdf.php');
include_once('conexao.php');

$mpdf = new FPDF("P","pt","A4");
$mpdf->AddPage();
$mpdf->SetFont('Arial', '', 11);
$mpdf->Image("../web/imagens/". $row_clube['DClube'].'.jpg');
$mpdf->cell(130,15,base64_decode($row_usuario['Nome']),1,1);
$mpdf->cell(130,15,$row_genero['DescGenero'],1,1);
$mpdf->cell(200,15,base64_decode($row_usuario['Morada']),1,1);
$mpdf->Output($arquivo,'I');
ob_end_flush(); 
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FamiluMoura
      Tenho um projeto em MVC aonde instalei a biblioteca mPdf, gerar o arquivo pdf normalmente e abre no Edge, porem qdo vou abrir no Adobe ele diz que o arquivo esta corrompido ou não tem suporte para este tipo de arquivo. O erro aconte ate mesmo com o exemplo da Biblioteca do mpdf
      o código abaixo e genérico do CriarPdf.php

       
      public function pdf(array $Dados) { $this->Dados = $Dados; try { $mpdf = new \Mpdf\Mpdf([ 'format' => [150, 130], 'mode' => 'c', 'margin_left' => 5, 'margin_right' => 5, 'margin_top' => 26, 'margin_bottom' => 15, 'margin_header' => 5, 'margin_footer' => 5, ]); $html = '<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <style> @page {size: auto;odd-header-name: html_myHeader1;odd-footer-name: html_myFooter1;} .size-10{font-size: 10px;} .size-16{font-size: 25px;color:#FF0000;} .negrito{font-weight: bold;} .espaco{margin: 20px;} .linha{width: 100%;border: 1px solid #000000;} .col-2 {float: left;width: 8.333333%;} .col-3 {float: left;width: 25%;} .col-4{float: left;width: 33%;} .col-6 {float: left;width: 50%;} .col-8{float: left;width: 66%;} .text-center {text-align: center !important;} .text-right {text-align: right !important;} .imgTamanho{width: 50%;} a{padding: 5px;text-decoration: none;} td{padding: 5px;} .border-bottom{border-bottom: 1px solid #000000;} </style> </head> <body> <htmlpageheader name="myHTMLHeader1"> <table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"> <tr> <td width="100%">"Logo da Empresa no Cabeçalho"</td> </tr> </table> </htmlpageheader> <htmlpagefooter name="myHTMLFooter1"> <table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"> <tr> <td width="100%" align="center"><span style="font-size:12pt">' . $this->Dados['imagem'] . '</span></td> </tr> </table> </htmlpagefooter> <!-- set the headers/footers - they will occur from here on in the document --> <!--mpdf <sethtmlpageheader name="myHTMLHeader1" page="O" value="on" show-this-page="1" /> <sethtmlpageheader name="myHTMLHeader1Even" page="E" value="on" /> <sethtmlpagefooter name="myHTMLFooter1" page="O" value="on" show-this-page="1" /> <sethtmlpagefooter name="myHTMLFooter1" page="E" value="on" /> mpdf--> <table width="600px"> <tr> <td class="text-center" >' . $this->Dados['corpo'] . '</td> //Aqui uma tabela que envio para criar o pdf </tr> </table> </body> </html> $mpdf->WriteHTML($html); $mpdf->Output(); } catch (\Mpdf\MpdfException $e) { // Note: safer fully qualified exception name used for catch // Process the exception, log, print etc. echo $e->getMessage(); }  
    • Por Carcleo
      Estou tentando rotacionar um texto no PDF com mPDF mas não estou conseguindo.
      $css = ' <style> ul { } ul li { float: left; list-style: none; /*necessáro width no campo */ } ul li span.vertical { display: block; //transform: rotate(270deg); /*necessáro display: block*/ text-rotate : 270; } </style>'; $html = ' <ul> <li style="width: 150px"><span class="vertical">Elefante</span></li> <li style="width: 150px"><span>Não</span></li> <li style="width: 150px"><span>Come</span></li> <li style="width: 150px"><span class="vertical">Bananada</span></li> </ul>'; require_once "../vendor/autoload.php"; $pdf = new \Mpdf\Mpdf(['debug' => true]); $pdf->AddPage(); $pdf->charset_in = "UTF-8"; $pdf->SetFont('Arial','B',16); $pdf->WriteHTML( $css, 1 ); $pdf->WriteHTML( $html ); $pdf->Output(); Obs.: O restante do estilo funciona normal.
       
      O problema é apenas no PDF. No navegador, os spans giram normalmente.
    • Por Fabio Jonas
      Pessoal, criei um relatório no php + html e gero ele pelo mpdf, ate ai tudo certo inclusive ele gera o índice, mas ele gera da seguinte maneira:
       
      1-Item 5
      2-item 6
      3-item 12
      O que preciso que ele insira os pontinhos apos a descrição do item como esse exemplo:
       
      1-Item............................................ 5
      2-item............................................ 6
      3-item.......................................... 12
       
      Consultei a documentação e pesquisei na internet e não encontrei nada que possa me ajudar, alguém chegou a fazer índice e conseguiu inserir esses pontinhos, caso tenha conseguido fazer em fPDf também me ajudaria pois como o Mpdf é baseado no fPdf, eu daria um jeito de adaptar.
       
      Agradeço a ajuda
       
    • Por fabiodaros
      Pessoal , queria carregar um arquivo tpl direto para o Mpdf, mas ele não leva as varíaveis que vem do MySql nem do forech.
       
      Alguem poderia me ajudar.
      $msg = $smarty->fetch(Rotas::get_SiteRaiz().'/view/carrinho.tpl'); $mpdf = new \Mpdf\Mpdf(); //$mpdf->SetDocTemplate($msg); $mpdf->allow_charset_conversion= true; $mpdf->charset_in = 'UTF-8'; $mpdf->WriteHTML($msg,0); $mpdf->Output();  
    • Por ammazzo
      Olá galera, 
       
      Eu tenho uma tabela com 2000 registros e gero um relatório através desta tabela e left join de mais outras 3 que complementam a informação da mesma. 
       
      Gostaria de saber se é razoável o tempo de 3m20s para a geração da mesma em um sistema. Lembrando que tenho índices criados e a query leva 0.034 segundos executada no banco de dados. 
       
      Não sei se o fato do mpdf ter sua estrutura baseada em HTML e css afeta o tempo de montagem da mesma (com o foreach essa estrutura aumenta). 
       
      Se alguém já utiliza mpdf e puder me dar uma dica, ou se é normal esse tempo tendo em vista que melhores soluções para php ainda não existam ou se outras bibliotecas reduzem o tempo, eu agradeço. 
       
      Um abraço.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.