Jump to content
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.

Share this post


Link to post
Share on other 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');

?>

 

Share this post


Link to post
Share on other 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(); 
?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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.
    • By 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
       
    • By 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();  
    • By 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.
       
    • By Vitor G. Delgallo
      Bom dia,

      Estou desenvolvendo um projeto que necessita da implementação do mPDF para gerar relatórios, no entanto, não consegui de nenhuma maneira, implementa-lo em meu projeto.
      Gostaria de implementar a seguinte versão do mPDF por ser a mais recente:
       - https://github.com/mpdf/mpdf

      Se alguém pudesse me ajudar eu agradeceria muito!! (Gostaria de implementar-lo manualmente no meu projeto, não via composer, pois nunca utilizei composer e também não sei como ativar os comandos via CMD para a instalação).

      Segue a lista de como tentei implementar o mPDF:
       - Copiei os arquivos do mPDF para a pasta "application/third_party/mpdf" do Codeigniter;
       - Criei uma library dentro da pasta "application/libraries" do Codeigniter com o nome de "m_pdf_lib.php";
       - Dentro dessa biblioteca, coloquei o seguinte código:
      <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); include_once APPPATH . '/third_party/mpdf/src/Mpdf.php'; class m_pdf_lib { private $paramsLibrary = '"en-GB-x","A4","","",10,10,10,10,6,3'; private $pdfLibrary; public function __construct() { } public function getParamsLibrary(){ return $this->paramsLibrary; } public function setParamsLibrary($newParamsLibrary){ $this->paramsLibrary = $newParamsLibrary; return true; } public function getPdfLibrary(){ return $this->pdfLibrary; } public function setPdfLibrary(){ $this->pdfLibrary = new \Mpdf\Mpdf($this->paramsLibrary); return true; } }  
       - E então, dentro da minha controller Default de teste, eu coloquei o seguinte código:
      <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Teste extends CI_Controller { public function __construct() { parent::__construct(); $this->load->library('m_pdf_lib'); } public function testePDF(){ $this->m_pdf_lib->setPdfLibrary(); $mpdf = $this->m_pdf_lib->getPdfLibrary(); $html = '<br><br><br>teste<br><br><br>'; $file = "Relatorio.pdf"; $mpdf->WriteHTML($html); $mpdf->Output($file, 'D'); } }
      PS: Já tentei ver vídeos e artigos tutoriais sobre isso, mas todos, apenas ensinam à implementar as versões antigas do mesmo (que também não funcionam no meu projeto), ou ensinam a versão mais recente via composer, algo com o qual nunca tive contato e não sei como usar.

      Desculpem qualquer incomodo e obrigado desde já!!!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.