NM
Relatório de html para pdf
Hola a todos
Tenho que imprimir um formulario de conhecimento de cargas, montei um html formatado, carrego os dados e mando abrir o html, mostra em tela beleza, mas quando mando salvar em pdf sai todo sem formatação.
onde estou errando.
Tenho que imprimir um formulario de conhecimento de cargas, montei um html formatado, carrego os dados e mando abrir o html, mostra em tela beleza, mas quando mando salvar em pdf sai todo sem formatação.
onde estou errando.
<?php
<?phpclass ConhecimentoImprimirFrente extends TPage{ private $html; public function __construct( ) { parent::__construct(); // Carregar dados da tabela $crt_id = TSession::getValue('id_crt'); TTransaction::open('crtmic'); $conn = TTransaction::get(); $registro_crt = ViewConhecimentoGeral::where( 'co_id', '=', $crt_id )->load(); foreach ($registro_crt as $reg_crt) { $crt = new stdClass; $crt->co_numero = $reg_crt->co_numero; // Remetente $crt->reme_nm_comple = $reg_crt->reme_nm_comple; $crt->reme_endere1 = $reg_crt->reme_endere1; if ($reg_crt->reme_pais == 'BRASIL' ) { $crt->reme_endere2 = trim($reg_crt->reme_cep) . ' - ' . trim($reg_crt->reme_cidade) . ' - ' . trim($reg_crt->reme_estado) . ' - ' . trim($reg_crt->reme_pais) ; $crt->reme_endere3 = $reg_crt->reme_endere2; $crt->reme_endere4 = $reg_crt->reme_endere3; } else { $crt->reme_endere2 = trim($reg_crt->reme_cidade) . ' - ' . trim($reg_crt->reme_pais) ; $crt->reme_endere3 = $reg_crt->reme_endere2; $crt->reme_endere4 = $reg_crt->reme_endere3; } $crt->reme_documento = $reg_crt->reme_documento; // Destinatario $crt->dest_nm_comple = $reg_crt->dest_nm_comple; $crt->dest_endere1 = $reg_crt->dest_endere1; if ($reg_crt->dest_pais == 'BRASIL' ) { $crt->dest_endere2 = trim($reg_crt->dest_cep) . ' - ' . trim($reg_crt->dest_cidade) . ' - ' . trim($reg_crt->dest_estado) . ' - ' . trim($reg_crt->dest_pais) ; $crt->dest_endere3 = $reg_crt->dest_endere2; $crt->dest_endere4 = $reg_crt->dest_endere3; } else { $crt->dest_endere2 = trim($reg_crt->dest_cidade) . ' - ' . trim($reg_crt->dest_pais) ; $crt->dest_endere3 = $reg_crt->dest_endere2; $crt->dest_endere4 = $reg_crt->dest_endere3; } $crt->dest_documento = $reg_crt->dest_documento; // Consignatário $crt->cons_nm_comple = $reg_crt->cons_nm_comple; $crt->cons_endere1 = $reg_crt->cons_endere1; if ($reg_crt->cons_pais == 'BRASIL' ) { $crt->cons_endere2 = trim($reg_crt->cons_cep) . ' - ' . trim($reg_crt->cons_cidade) . ' - ' . trim($reg_crt->cons_estado) . ' - ' . trim($reg_crt->cons_pais) ; $crt->cons_endere3 = $reg_crt->cons_endere2; $crt->cons_endere4 = $reg_crt->cons_endere3; } else { $crt->cons_endere2 = trim($reg_crt->cons_cidade) . ' - ' . trim($reg_crt->cons_pais) ; $crt->cons_endere3 = $reg_crt->cons_endere2; $crt->cons_endere4 = $reg_crt->cons_endere3; } $crt->cons_documento = $reg_crt->cons_documento; // A Notificar $crt->noti_nm_comple = $reg_crt->noti_nm_comple; $crt->noti_endere1 = $reg_crt->noti_endere1; if ($reg_crt->noti_pais == 'BRASIL' ) { $crt->noti_endere2 = trim($reg_crt->noti_cep) . ' - ' . trim($reg_crt->noti_cidade) . ' - ' . trim($reg_crt->noti_estado) . ' - ' . trim($reg_crt->noti_pais) ; $crt->noti_endere3 = $reg_crt->noti_endere2; $crt->noti_endere4 = $reg_crt->noti_endere3; } else { $crt->noti_endere2 = trim($reg_crt->noti_cidade) . ' - ' . trim($reg_crt->noti_pais) ; $crt->noti_endere3 = $reg_crt->noti_endere2; $crt->noti_endere4 = $reg_crt->noti_endere3; } $crt->noti_documento = $reg_crt->noti_documento; // Transportador $crt->transp1 = $reg_crt->transp1; $crt->transp2 = $reg_crt->transp2; $crt->transp3 = $reg_crt->transp3; // Cidades if ($reg_crt->lpe5_pais=='BRASIL') { $crt->lpe5_cida = trim($reg_crt->lpe5_cida) . ' - '. $reg_crt->lpe5_esta . ' - ' . trim($reg_crt->lpe5_pais); } else { $crt->lpe5_cida = trim($reg_crt->lpe5_cida) . ' - '. trim($reg_crt->lpe5_pais); } if ($reg_crt->lpp7_pais=='BRASIL') { $crt->lpp7_cida = trim($reg_crt->lpp7_cida) . ' - ' . $reg_crt->lpp7_esta . ' - ' . trim($reg_crt->lpp7_pais) . ' - ' . $reg_crt->co_cd_local_pais_data_data; } else { $crt->lpp7_cida = trim($reg_crt->lpp7_cida) . ' - ' . trim($reg_crt->lpp7_pais) . ' - ' . $reg_crt->co_cd_local_pais_data_data; } if ($reg_crt->lppe8_pais=='BRASIL') { $crt->lppe8_cida = trim($reg_crt->lppe8_cida) . ' - ' . $reg_crt->lppe8_esta . ' - ' . trim($reg_crt->lppe8_pais); } else { $crt->lppe8_cida = trim($reg_crt->lppe8_cida) . ' - ' . trim($reg_crt->lppe8_pais); } // Transportes sucessivos $crt->co_transp_sucess = $reg_crt->co_transp_sucess; //new TMessage('info', $reg_crt->co_numero); } $this->html = new THtmlRenderer('app/resources/crt_print_frente.html'); $replaces = []; $replaces['crt'] = $crt; $this->html->enableSection('main', $replaces); $panel = new TPanelGroup('crt'); $panel->add($this->html); $panel->addHeaderActionLink('Salvar PDF', new TAction([$this, 'onSalva_PDF'], ['static'=>'1']), 'fa:save'); $panel->addHeaderActionLink('Voltar', new TAction([$this, 'onFechar'], ['static'=>'1']), 'fa:exit'); parent::add($panel); } public static function onFechar() { TApplication::loadPage('ConhecimentoForm', 'onReload'); } public function onSalva_PDF( $param ) { try { $html = clone $this->html; $contents = file_get_contents('app/resources/styles-print.html') . $html->getContents(); $dompdf = new \Dompdf\Dompdf(); $dompdf->loadhtml($contents); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $file = 'app/output/crt_' . trim($param['co_numero']) . '.pdf'; file_put_contents($file, $dompdf->output()); $window = TWindow::create('Crt', 0.8, 0.8); $object = new TElement('object'); $object->data = $file; $object->type = 'application/pdf'; $object->style = 'width: 100%; height:calc(100% - 10px)'; $window->add($object); $window->show(); } catch (Exception $e) { new TMessage('error', $e->getMessage()); } }}?>
Aqui o HTML:
<?php<!--[main]--><!DOCTYPE html><html> <link href="app/resources/styles.css" rel="stylesheet" type="text/css" media="screen" /> <head> <style type="text/css"> @page{ margin-top: 3cm; margin-left: 3cm; margin-bottom: 2cm; margin-left: 2cm; font-family: FreeSans,Verdana,Comic Sans MS; } .campo_titulo{ text-align: left; font-size: 10px; font-family:FreeSans,Verdana,Comic Sans MS; font-weight: bold; margin-top: 5px; margin-left: 5px } .campo_titulo_nro{ text-align: left; font-size: 16px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px } .campo_conteudo{ text-align: left; font-size: 10px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-left: 5px } .campo_conteudo_direita{ text-align: right; font-size: 10px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px } .campo_conteudo_centro{ text-align: center; font-size: 14px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px } .campo_titulo_nro{ text-align: left; font-size: 16px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px } .campo_titulo_rodape{ text-align: left; font-size: 16px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px } .td_padrao{ text-align: left; font-size: 10px; font-family:FreeSans,Verdana,Comic Sans MS; margin-top: 5px; margin-right: 5px padding-top: 0px; padding-bottom: 12px; } </style> </head> <body> <table BORDER CELLPADDING=2 CELLSPACING=0> <tr width="100%" height="30"> <td colspan="3"> <table CELLPADDING=0 CELLSPACING=0> <tr> <td width="10%" height="100%"><img src="crt_logo.png" alt="Girl in a jacket" width="100%" height="100%"></td> <td width="30%" height="30"><P STYLE="font-size:20px;font-family:Comic Sans MS,Verdana;margin-right: 2px;margin-left: 2px;"><b>Conhecimento de Transporte Internacional por Rodovia<br>Carta de Porte Internacional por Carretera</b></p></td> <td width="60%" height="30"><P STYLE="font-size:12px;font-family:Comic Sans MS,Verdana;margin-right: 3px;margin-left: 3px;text-align: justify;">O transporte realizado ao amparo deste Conhecimento de Transporte Internacional está sujeito as disposições do Convenio sobre o Contrato de Transporte e a Responsabilidade Civil do Transportador no Transporte Terrestre Internacional de Mercadorias, as quais anulam toda estipulação contraria as mesmas em prejuicio do remetente ou do consignatário<br>El transporte realizado bajo esta Carta de Porte Internacional está sujeto a las disposiciones del Convenio sobre el Contrato de Transporte y la Responsabilidad Civil del Porteador en el Transporte Terrestre Internacional de Mercancias, las cuales anulan toda estipulación que se aparte de ellas en perjuicio del remitente o del consignatario<br> </p></td> </tr> </table> </td> </tr> <tr> <td rowspan="2" valign="top"> <P class="campo_titulo">1 - Nome e endereço do remetente / Nombre y domicilio de remitente</P> <P class="campo_conteudo">{{crt->reme_nm_comple}}<br> {{crt->reme_endere1}}<br> {{crt->reme_endere2}}<br> {{crt->reme_endere3}}<br> {{crt->reme_endere4}}</p> <p class="campo_conteudo_direita">{{crt->reme_documento}}</p> </td> <td valign="top"> <P class="campo_titulo">2 - Número / Número</P> <P class="campo_conteudo_centro">{{crt->co_numero}}</P> </td> </tr> <tr> <td valign="top"> <P class="campo_titulo">3 - Nome e endereço do transportador / Nombre y domicilio del porteador</P> <P class="campo_conteudo">{{crt->transp1}}<br> {{crt->transp2}}<br> {{crt->transp3}}</P> </td> </tr> <tr> <td rowspan="2" valign="top"> <P class="campo_titulo">4 - Nome e endereço do destinatário / Nombre y domicilio del destinatário</P> <P class="campo_conteudo">{{crt->dest_nm_comple}}<br> {{crt->dest_endere1}}<br> {{crt->dest_endere2}}<br> {{crt->dest_endere3}}<br> {{crt->dest_endere4}}</P> <p class="campo_conteudo_direita">{{crt->dest_documento}}</p> </td> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">5 - Localidade e país de emissão / Lugar y país de emisión</P> <P class="campo_conteudo">{{crt->lpe5_cida}}<br> </td> </tr> <tr> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">7 - Localidade, país e data em que o transportador se responsabiliza pela mercadoria / Lugar, país y fecha en que el porteador se hace cargo de las mercancias</P> <P class="campo_conteudo">{{crt->lpp7_cida}}</P> </td> </tr> <tr> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">6 - Nome e endereço do consignatário / Nombre y domicilio del consignatário</P> <P class="campo_conteudo">{{crt->cons_nm_comple}}<br> {{crt->cons_endere1}}<br> {{crt->cons_endere2}}<br> {{crt->cons_endere3}}<br> {{crt->cons_endere4}}</P> <p class="campo_conteudo_direita">{{crt->cons_documento}}</p> </td> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">8 - Localidade, país e prazo de entrega/ Lugar, país y plazo de entrega</P> <P class="campo_conteudo">{{crt->lppe8_cida}}</P> </td> </tr> <tr> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">9 - Notificar a / Notificar a</P> <P class="campo_conteudo">{{crt->noti_nm_comple}}<br> {{crt->noti_endere1}}<br> {{crt->noti_endere2}}<br> {{crt->noti_endere3}}<br> {{crt->noti_endere4}}</P> <p class="campo_conteudo_direita">{{crt->noti_documento}}</p> </td> <td width="50%" height="50px" valign="top"> <P class="campo_titulo">10 - Transportadores sucessivos / Porteadores sucesivos</P> <P class="campo_conteudo">{{crt->co_transp_sucess}}</P> </td> </tr> </table> <table BORDER CELLPADDING=2 CELLSPACING=0> <tr> <td class="td_padrao" rowspan="3" width="70%" valign="top"> <P class="campo_titulo">11 - Cantidad y clase de bultos, marca y números, tipo de mercancías, contenedores y accesorios / Quantidade e categoria de volumes, marcas e números, tipo de mercadorias, conteineres e peças</P> <P class="campo_conteudo">(4200,000) SACOS AVEIA PARA RAÇÃO ANIMAL</p> </td> <td valign="top"> <P class="campo_titulo">12 - Peso bruto em Kg / Peso bruto em Kg</P> <P class="campo_conteudo_direita">168.420,000<br> <P class="campo_conteudo_direita">168.000,000<br> </td> </tr> <tr> <td valign="top"> <P class="campo_titulo">13 - Volumen em m.cu. / Volume em m.cu.</P> <P class="campo_conteudo_direita"><br> </td> </tr> <tr> <td valign="top"> <P class="campo_titulo">14 - Valor / Valor</P> <P class="campo_conteudo_direita">FCA<br> <P class="campo_conteudo_direita">21.336,00<br> <P class="campo_conteudo_direita">US$<br> </td> </tr> </table> <table BORDER CELLPADDING=2 CELLSPACING=0 width="100%"> <tr> <td class="td_padrao" width="50%" valign="top" rowspan="2"> <table BORDER RULES=cols width="100%" height="100%"> <tr> <td class="td_padrao" width="40%" valign="top"> <P class="campo_titulo">15 - Gastos a pagar / Gastos a pagar</P> <P class="campo_titulo">Frete / Flete</P> <p class="campo_conteudo">A.GRANDE/JAGUARÃO</p><br> <p class="campo_conteudo">JAGUARÃO/MELO</p><br> <P class="campo_titulo">Outros / /otros</P> </td> <td valign="top" width="20%"> <P class="campo_titulo">Valor remetente</P> <P class="campo_titulo">Monto remitente</P> </td> <td valign="top" width="10%"> <P class="campo_titulo">Moeda</P> <P class="campo_titulo">Moneda</P> </td> <td valign="top" width="20%"> <P class="campo_titulo">Valor Destinatário</P> <P class="campo_titulo">Monto Destinatário</P> <p class="campo_conteudo_direita">540,00</p><br> <p class="campo_conteudo_direita">2.160,00</p> </td> <td valign="top" width="10%"> <P class="campo_titulo">Moeda</P> <P class="campo_titulo">Moneda</P> <p class="campo_conteudo_direita">US$</p><br> <p class="campo_conteudo_direita">US$</p> </td> </tr> </table> <table width="100%" height="100%"> <tr> <td class="td_padrao" width="50%" valign="top"> Dois Mil e Setecentos Dolares </td> </tr> </table> <table width="100%" height="100%"> <tr> <td class="campo_titulo" width="40%" valign="top">TOTAL</td> <td class="campo_conteudo_direita" width="20%" valign="top"><b>0,00</b></td> <td class="campo_conteudo_direita" width="10%" valign="top"><b></b></td> <td class="campo_conteudo_direita" width="20%" valign="top"><b>2.740,00</b></td> <td class="campo_conteudo_direita" width="10%" valign="top"><b>US$</b></td> </tr> </table> </td> <td valign="top" width="40%"> <P class="campo_titulo">16 - Declaração do valor das mercadorias / Declaración del valor de las mercancias</P> <P class="campo_conteudo">FCA<br> US$ 15.000,00<br> Quinze mil dolares</p> </td> </tr> <tr> <td valign="top" width="50%"> <P class="campo_titulo">17 - Documentos anexos / Documentos anexos</P> <P class="campo_conteudo">FACTURA COMERCIAL NRO: 165/2020<br> DUE NRO:</p> </td> </tr> </table> <table <table BORDER CELLPADDING=2 CELLSPACING=0 width="100%"> <tr> <td valign="top" width="50%"> <P class="campo_titulo">19 - Valor do frete externo / Monto del flete externo</P> <P class="campo_conteudo">0,00</p> </td> <td valign="top" width="50%"> <P class="campo_titulo">18 - Instrução sobre formalidades de alfândega / Instrucciones sobre formalidades de aduana</P> <P class="campo_conteudo">DESDE JAGUARÃO - RS - BRASIL / MELO URUGUAY</p> </td> </tr> <tr> <td valign="top" width="50%"> <P class="campo_titulo">20 - Valor de reembolso contra entrega / Monto de reembolso contra entrega</P> <P class="campo_conteudo">0,00</p> </td> <td rowspan="2" valign="top" width="50%"> <P class="campo_titulo">22 - Declaraçôes e observações / Declaraciones y observaciones</P> <P class="campo_conteudo">ORIGEM BRASIL / DESTINO: URUGUAY</p> </td> </tr> <tr> <td valign="top" width="50%"> <P class="campo_titulo">21 - Nome e assinatura do remetente ou seu representante / Nombre y firma del remitente o su representante</P> <P class="campo_conteudo">--- x ---</p><br> <p class="campo_titulo" valign="bottom">Data / Fecha</p> </td> </tr> <tr> <td valign="top"> <p class="campo_titulo">As mercadorias consignadas neste Conhecimento de Transporte foram recebidas pelo transportadoraparentemente em bom estado, sob as condições gerais que figuram no verso<br>Las mercancías consignadas en esta Carta de Porte fueron recebidas por el porteador aparentementeen buen estado, bajo las condiciones generales que fuguran al dorso.</p> <P class="campo_titulo">23 - Nome, assinatura e carimbo do transportador ou seu representante / Nombre, firma y sello del porteador o su representante</P> <p class="campo_conteudo_centro">COOPERATIVA DE TRANSP. AUTÔNOMO DO SUL</p> <p class="campo_conteudo_centro">22/04/2020</p> <p class="campo_titulo">Data / Fecha</p> </td> <td valign="top" width="50%"> <P class="campo_titulo">24 - Nome e assinatura do destinatário ou seu representante / Nombre y firma del destinatario o su representante</P> <P class="campo_conteudo">--- x ---</p> <p class="campo_titulo" valign="bottom">Data / Fecha</p> </td> </tr> </table> <p class="campo_conteudo">1º Original - Aduana Partida -- Primera via alfandega de partida.</p> </body></html><!--[/main]-->?>
Estou enfrentando o mesmo problema. O HTML está perfeito, porém o PDF ficar totalmente desconfigurado.