Jump to content
marcelobbt

Converter html para pdf com codeigniter

Recommended Posts

Alguém indica uma biblioteca em php para converter páginas para pdf. E como uso a mesma no codeignigter.

 

Obs.: Tentei usar o TCPDF mas da muito trabalho e diversos erros incompreensíveis.

Share this post


Link to post
Share on other sites

Eu indico apenas a TCPDF. Todas as outras trabalharão com o mesmo sistema. Nunca tive erros com ela (ainda mais incompreensíveis). Está utilizando a versão mais recente pelo composer?

Share this post


Link to post
Share on other sites

Então não estou sabendo usar. O texto está vindo pela metade em alguns casos.

 

E sim, baixei a última versão direto do site.

Share this post


Link to post
Share on other sites

Mostre-nos o seu código e os erros apresentados.

Share this post


Link to post
Share on other sites

Segue o código abaixo:

pdf_helper (helper)

<?php
	function tcpdf()
	{
		require_once('tcpdf/examples/lang/eng.php');
		require_once('tcpdf/tcpdf.php');
	}
?>

(controler)

//carrega biblioteca
$this->load->helper('pdf_helper');

//código para obter as informações no BD
...

tcpdf();
// cria novo documento PDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
//define informações do documento
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Marcelo Teixeira');
$pdf->SetTitle('Relatório');
$pdf->SetSubject('Relatório');
// define fonte
$pdf->SetFont('helvetica', '', 10);
//adiciona a página
$pdf->AddPage();
//adiciona imagem
$pdf->Image('img/bannerRelat.png', 5, 5, 200, 38, 'PNG', '', '', true, 150, '', false, false, 1, false, false, false);
//adiciona segunda imagem
$pdf->Image('img/logo.png', 5, 55, 50, 34, 'PNG', '', '', true, 150, '', false, false, 1, false, false, false);
//cria as colunas
$coluna2 = '<h2>Título: '.$titulo.'</h2>
<p>Autor: '.$autor.'</p>';
//define cor do fundo
$pdf->SetFillColor(255, 255, 255);
//imprime coluna 2
$pdf->writeHTMLCell(120, '', 60, $y, $coluna2, 0, 2, 1, true, 'c', true);
//cria página
ob_start();
$html = '
	<p> </p>
	<table width="80%" border="2" cellspacing="2" cellpadding="6" >
		<tr>
			<td>Data da Reunião</td>
			<td>'.$datareuniaoBD.'</td>
		</tr>
		<tr>
			<td>Número de Membros</td>
			<td>'.$membrostotais.'</td>
		</tr>
		<tr>
			<td>Membros Presentes</td>
			<td>'.$membrosparticipantesBD.'</td>
		</tr>
		<tr>
			<td>Número de Visitantes na Reunião</td>
			<td>'.$visitantesBD.'</td>
		</tr>
		<tr>
			<td>Crianças</td>
			<td>'.$criancasBD.'</td>
		</tr>
		<tr>
			<td>Visitas realizadas na semana?</td>
			<td>'.$visitasBD.'</td>
		</tr>
		...
        <tr>
			<td colspan="2">
				<h5>Relate qualquer situação fora do habitual:</h5>
				<p>
					<ul>
						<li>ESTUDAM OU TRABALHAM: '.$trabalhamBD.'</li>
						<li>FALTOSOS: '.$faltososBD.'</li>
						<li>VISITANTES: '.$nomevisitantesBD.'</li>
					</ul>
				</p>
				<p><strong>Observação:</strong>  '.$observacaoBD.'</p>
			</td>
		</tr>		
	</table>';			
ob_end_clean();
//escreve texto html no pdf
$pdf->writeHTML($html, true, true, false, false, '');
//gera o pdf
$pdf->Output('output.pdf', 'I');

No resultado sai apenas parte do $html. O restante do texto não aparece.

 

Obs.: Também não consigo fazer aparecer a borda da tabela.

 

 

 

Share this post


Link to post
Share on other sites

Qual é o "restante do texto" que não aparece?

 

TCPDF não interpreta HTML com erros, tem uma reticências perdida no meio do seu HTML

  • +1 1

Share this post


Link to post
Share on other sites

Eu havia removido pois era muito grande.

 

Mas depois do que você falou encontrei um caractere perdido no $html e ao remover foi tudo resolvido.

 

Valeu pela ajuda. Agora quando der a mesma coisa vou prestar mais atenção.

obrigado!

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 Diego Tolentino
      Fala Galera!! procuro uma solução a tempos para um leitor de pdf que leia pdf com mídias (no meu caso vídeos).
       
      Tenho um ebook em pdf que preciso disponibilizá-lo online, porém esse pdf contem um vídeo e não roda apenas com os navegadores normais. 
       
      A solução não poderia ser através de plugin ou apps, pois preciso que as pessoas que acessarem esse ebook abram sem maiores dificuldades.
       
      Eu já uso um leitor em javaScript, o PDF.js mas ele não lê o video
       
       
    • By gereiz
      Bom dia a todos. Adaptei um código para renomear vários arquivo com vba, que realiza a seguinte função:
       
      1) Eu seleiono a pasta,
      2) O VBA abre o PDF (Nota fiscal) , extrai a informação do texto e com a razão social fecha o pdf e renomeia ele com o nome extraido.
       
      O problema é que após renomear o primeiro arquivo corretamente a execução do código trava, e é necessário finalizar o processo.
      Segue abaixo o código.
      Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Public Function ListaArquivos(ByVal Caminho As String) As String()          'Atenção: Faça referência à biblioteca Micrsoft Scripting Runtime     Dim FSO As New FileSystemObject     Dim result() As String     Dim Pasta As Folder     Dim Arquivo As File     Dim Indice As Long         ReDim result(0) As String     If FSO.FolderExists(Caminho) Then         Set Pasta = FSO.GetFolder(Caminho)           For Each Arquivo In Pasta.Files             Indice = IIf(result(0) = "", 0, Indice + 1)             ReDim Preserve result(Indice) As String             result(Indice) = Arquivo.Name         Next     End If       ListaArquivos = result ErrHandler:     Set FSO = Nothing     Set Pasta = Nothing     Set Arquivo = Nothing End Function Private Sub selecionar_pasta()  Dim box As Folder  Dim arquivos() As String  Dim lCtr As Long  Dim AdobeApp As String  Dim StartAdobe  Dim Arquivo As String  Dim NomeAntigo As String  Dim NomeNovo As String        On Error Resume Next      linha = 1      ultima_linha = Sheets("teste").Cells(Rows.Count, 1).End(xlUp).Row                  With Application.FileDialog(msoFileDialogFolderPicker)             .Title = "Buscar pasta"             .InitialFileName = ThisWorkbook.Path             .Show             .AllowMultiSelect = False             Pasta = .SelectedItems(1)         End With         TextBox1 = box          arquivos = ListaArquivos(Pasta)     Sleep 1000     For lCtr = 0 To UBound(arquivos)       Debug.Print arquivos(lCtr)         'Inserir código aqui'                  'Cells(linha, 1).Value = arquivos(lCtr)         'linha = (linha + 1)         'Sleep 500                                 pdf = arquivos(lCtr)                    AdobeApp = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"                      Sleep 2000                                          For Each pdf In Pasta                                 Adobefile = Pasta & "\" & pdf                    StartAdobe = Shell("" & AdobeApp & " " & """" & Adobefile & """" & "", 1)                              Sleep 2000                                         Application.SendKeys ("^a")             Application.SendKeys ("^c")              Sleep 2000                                    Dim KillPdf As String            KillPdf = "TASKKILL /F /IM AcroRd32.exe"            Shell KillPdf, vbHide                                               AppActivate Application.Caption                                            Sheets("teste").Range("A1").Activate             SendKeys ("^v")                                   DoEvents                                                                     Dim Razao As String             Razao = Sheets("teste").Range("A17").Value             pontos = InStr(1, Razao, ":")             qtdeLetras = Len(Razao)             Nome = Right(Razao, qtdeLetras - pontos)             Sheets("teste").Range("C1").Value = Nome                                                                   Do While Not IsEmpty(Range("C1"))                                              NomeAntigo = Pasta & "\" & pdf                                      NomeNovo = Pasta & "\" & Sheets("teste").Range("C1").Value & ".pdf"                                  Sheets("teste").Range("C2").Value = Adobefile                                      Sheets("teste").Range("C3").Value = Pasta & "\" & Sheets("teste").Range("C1").Value & ".pdf"                                                       Name NomeAntigo As NomeNovo                                                                  ' DoEvents                                         Loop                       ' MsgBox "Nomes dos arquivos alterados!", vbOKOnly, "Processo Concluído"                                                Next                       Next           ' MsgBox ("Arquivos Encontrados = ") & (linha - 1)                    End Sub Já tentei de tudo, e não consegui resolver esse problema, se eu remover o Do while, ele executa normalmente, porem não renomeia os arquivos. Seu eu faço esse laço, ele renomeia só o primeiro e trava geral.
       
      Qualquer esclarecimento, agradeço.

       
    • By buganti
      Olá!
       
      Estou me familiarizando com o codeigniter e desenvolvendo um site, a estrutura dele montei usando o conceito de uma página só, então eu tenho algumas section que ao clicar nos botões do menu a página vai até a section referenciada, porém, me surgiu uma questão, uma dessas section terá referências a outras páginas separadas, por exemplo, terei alguns cards com produtos, ao clicar em algum desses cards abrirá uma nova página com mais detalhes sobre esse produto, aí nessa página o meu será o mesmo, via template, só que ao clicar no botões ele busca as referências das section da página principal (única) e aí não funciona para voltar para lá, como eu deveria fazer essa referência de forma que funciona-se para ambas as situações?
       
      Não sei se fui clara na minha dúvida, se caso for necessário posso tentar me explicar melhor.
       
      Desde já agradeço.
    • By tncardoso
      Fala Pessoal... estou tendo algumas dificuldades num projeto pessoal que estou desenvolvendo com o PHP CodeIgniter.
      Estou tentando mudar o caminho da pagina inicial, para um template que eu baixei e configurei dentro deste projeto.

      Ao fazer isso.. me deparei com o seguinte erro...
      A PHP Error was encountered
      Severity: Notice
      Message: Undefined property: Home::$template
      Filename: controllers/Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line: 9
      Function: _error_handler
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
      An uncaught Exception was encountered
      Type: Error
      Message: Call to a member function show() on null
      Filename: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
       
      Em caso de Dúvida, segue aqui também um pouco do arquivo Home.php que estou trabalhando.
      <?php defined('BASEPATH') OR exit('No direct script access allowed');   class Home extends CI_Controller {          public function index()     {         // $this->load->view('home');         $this->template->show('home');     } }  
       
      Aguardo Resposta.
      Obrigado...
       
      Thiago Cardoso
    • By clovis.sardinha
      Pessoal,
      Estou fazendo um relatório no codeigniter, mas não consigo recuperar o retorno da model para a view.  Dou o foreach para utilizar um conjunto de id's que preciso achar em uma tabela, mas o array só recupera o último.
      Controller:
      $destinoterc=$this->triangulomodel->getDestinoterc($origemuser);         $dados['destinoterc']=$destinoterc;         foreach ($destinoterc as &$i){             $origemterc = $i['id'];             $origemtercfinal=$this->triangulomodel->getOrigemterc($origemterc);                                   }         $dados['origterc']= $origemtercfinal;        Model
      public function getOrigemterc($origemterc){ $query =$this->db->query("SELECT * FROM cadastro join tb_cidades on tb_cidades.cid_id=cadastro.cidade_origem where id =$origemterc"); foreach ($query->result_array() as $row) { } return $query->result_array(); }  
      Resultado , só está pegando o último ponteiro da array de origem. Teria que aparecer uns 30 registros.!
      [origterc] => Array ( [0] => Array ( [id_] => 21302 [cidade] => 3233 [cid_nome] => Januaria )  
×

Important Information

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