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.
Aqui o HTML:
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
- <?php
- class 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 transportador
- aparentemente 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 aparentemente
- en 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.