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. ...
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.

 
  1. <?php
 
  1. <?php
  2. class ConhecimentoImprimirFrente extends TPage
  3. {
  4. private $html;
  5. public function __construct( )
  6. {
  7. parent::__construct();
  8. // Carregar dados da tabela
  9. $crt_id = TSession::getValue('id_crt');
  10. TTransaction::open('crtmic');
  11. $conn = TTransaction::get();
  12. $registro_crt = ViewConhecimentoGeral::where( 'co_id', '=', $crt_id )->load();
  13. foreach ($registro_crt as $reg_crt)
  14. {
  15. $crt = new stdClass;
  16. $crt->co_numero = $reg_crt->co_numero;
  17. // Remetente
  18. $crt->reme_nm_comple = $reg_crt->reme_nm_comple;
  19. $crt->reme_endere1 = $reg_crt->reme_endere1;
  20. if ($reg_crt->reme_pais == 'BRASIL' )
  21. {
  22. $crt->reme_endere2 = trim($reg_crt->reme_cep) . ' - ' . trim($reg_crt->reme_cidade) . ' - ' . trim($reg_crt->reme_estado) . ' - ' . trim($reg_crt->reme_pais) ;
  23. $crt->reme_endere3 = $reg_crt->reme_endere2;
  24. $crt->reme_endere4 = $reg_crt->reme_endere3;
  25. }
  26. else
  27. {
  28. $crt->reme_endere2 = trim($reg_crt->reme_cidade) . ' - ' . trim($reg_crt->reme_pais) ;
  29. $crt->reme_endere3 = $reg_crt->reme_endere2;
  30. $crt->reme_endere4 = $reg_crt->reme_endere3;
  31. }
  32. $crt->reme_documento = $reg_crt->reme_documento;
  33. // Destinatario
  34. $crt->dest_nm_comple = $reg_crt->dest_nm_comple;
  35. $crt->dest_endere1 = $reg_crt->dest_endere1;
  36. if ($reg_crt->dest_pais == 'BRASIL' )
  37. {
  38. $crt->dest_endere2 = trim($reg_crt->dest_cep) . ' - ' . trim($reg_crt->dest_cidade) . ' - ' . trim($reg_crt->dest_estado) . ' - ' . trim($reg_crt->dest_pais) ;
  39. $crt->dest_endere3 = $reg_crt->dest_endere2;
  40. $crt->dest_endere4 = $reg_crt->dest_endere3;
  41. }
  42. else
  43. {
  44. $crt->dest_endere2 = trim($reg_crt->dest_cidade) . ' - ' . trim($reg_crt->dest_pais) ;
  45. $crt->dest_endere3 = $reg_crt->dest_endere2;
  46. $crt->dest_endere4 = $reg_crt->dest_endere3;
  47. }
  48. $crt->dest_documento = $reg_crt->dest_documento;
  49. // Consignatário
  50. $crt->cons_nm_comple = $reg_crt->cons_nm_comple;
  51. $crt->cons_endere1 = $reg_crt->cons_endere1;
  52. if ($reg_crt->cons_pais == 'BRASIL' )
  53. {
  54. $crt->cons_endere2 = trim($reg_crt->cons_cep) . ' - ' . trim($reg_crt->cons_cidade) . ' - ' . trim($reg_crt->cons_estado) . ' - ' . trim($reg_crt->cons_pais) ;
  55. $crt->cons_endere3 = $reg_crt->cons_endere2;
  56. $crt->cons_endere4 = $reg_crt->cons_endere3;
  57. }
  58. else
  59. {
  60. $crt->cons_endere2 = trim($reg_crt->cons_cidade) . ' - ' . trim($reg_crt->cons_pais) ;
  61. $crt->cons_endere3 = $reg_crt->cons_endere2;
  62. $crt->cons_endere4 = $reg_crt->cons_endere3;
  63. }
  64. $crt->cons_documento = $reg_crt->cons_documento;
  65. // A Notificar
  66. $crt->noti_nm_comple = $reg_crt->noti_nm_comple;
  67. $crt->noti_endere1 = $reg_crt->noti_endere1;
  68. if ($reg_crt->noti_pais == 'BRASIL' )
  69. {
  70. $crt->noti_endere2 = trim($reg_crt->noti_cep) . ' - ' . trim($reg_crt->noti_cidade) . ' - ' . trim($reg_crt->noti_estado) . ' - ' . trim($reg_crt->noti_pais) ;
  71. $crt->noti_endere3 = $reg_crt->noti_endere2;
  72. $crt->noti_endere4 = $reg_crt->noti_endere3;
  73. }
  74. else
  75. {
  76. $crt->noti_endere2 = trim($reg_crt->noti_cidade) . ' - ' . trim($reg_crt->noti_pais) ;
  77. $crt->noti_endere3 = $reg_crt->noti_endere2;
  78. $crt->noti_endere4 = $reg_crt->noti_endere3;
  79. }
  80. $crt->noti_documento = $reg_crt->noti_documento;
  81. // Transportador
  82. $crt->transp1 = $reg_crt->transp1;
  83. $crt->transp2 = $reg_crt->transp2;
  84. $crt->transp3 = $reg_crt->transp3;
  85. // Cidades
  86. if ($reg_crt->lpe5_pais=='BRASIL')
  87. {
  88. $crt->lpe5_cida = trim($reg_crt->lpe5_cida) . ' - '. $reg_crt->lpe5_esta . ' - ' . trim($reg_crt->lpe5_pais);
  89. }
  90. else
  91. {
  92. $crt->lpe5_cida = trim($reg_crt->lpe5_cida) . ' - '. trim($reg_crt->lpe5_pais);
  93. }
  94. if ($reg_crt->lpp7_pais=='BRASIL')
  95. {
  96. $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;
  97. }
  98. else
  99. {
  100. $crt->lpp7_cida = trim($reg_crt->lpp7_cida) . ' - ' . trim($reg_crt->lpp7_pais) . ' - ' . $reg_crt->co_cd_local_pais_data_data;
  101. }
  102. if ($reg_crt->lppe8_pais=='BRASIL')
  103. {
  104. $crt->lppe8_cida = trim($reg_crt->lppe8_cida) . ' - ' . $reg_crt->lppe8_esta . ' - ' . trim($reg_crt->lppe8_pais);
  105. }
  106. else
  107. {
  108. $crt->lppe8_cida = trim($reg_crt->lppe8_cida) . ' - ' . trim($reg_crt->lppe8_pais);
  109. }
  110. // Transportes sucessivos
  111. $crt->co_transp_sucess = $reg_crt->co_transp_sucess;
  112. //new TMessage('info', $reg_crt->co_numero);
  113. }
  114. $this->html = new THtmlRenderer('app/resources/crt_print_frente.html');
  115. $replaces = [];
  116. $replaces['crt'] = $crt;
  117. $this->html->enableSection('main', $replaces);
  118. $panel = new TPanelGroup('crt');
  119. $panel->add($this->html);
  120. $panel->addHeaderActionLink('Salvar PDF', new TAction([$this, 'onSalva_PDF'], ['static'=>'1']), 'fa:save');
  121. $panel->addHeaderActionLink('Voltar', new TAction([$this, 'onFechar'], ['static'=>'1']), 'fa:exit');
  122. parent::add($panel);
  123. }
  124. public static function onFechar()
  125. {
  126. TApplication::loadPage('ConhecimentoForm', 'onReload');
  127. }
  128. public function onSalva_PDF( $param )
  129. {
  130. try
  131. {
  132. $html = clone $this->html;
  133. $contents = file_get_contents('app/resources/styles-print.html') . $html->getContents();
  134. $dompdf = new \Dompdf\Dompdf();
  135. $dompdf->loadhtml($contents);
  136. $dompdf->setPaper('A4', 'portrait');
  137. $dompdf->render();
  138. $file = 'app/output/crt_' . trim($param['co_numero']) . '.pdf';
  139. file_put_contents($file, $dompdf->output());
  140. $window = TWindow::create('Crt', 0.8, 0.8);
  141. $object = new TElement('object');
  142. $object->data = $file;
  143. $object->type = 'application/pdf';
  144. $object->style = 'width: 100%; height:calc(100% - 10px)';
  145. $window->add($object);
  146. $window->show();
  147. }
  148. catch (Exception $e)
  149. {
  150. new TMessage('error', $e->getMessage());
  151. }
  152. }
  153. }
  154. ?>






Aqui o HTML:
 
  1. <?php
  2. <!--[main]-->
  3. <!DOCTYPE html>
  4. <html>
  5. <link href="app/resources/styles.css" rel="stylesheet" type="text/css" media="screen" />
  6. <head>
  7. <style type="text/css">
  8. @page{
  9. margin-top: 3cm;
  10. margin-left: 3cm;
  11. margin-bottom: 2cm;
  12. margin-left: 2cm;
  13. font-family: FreeSans,Verdana,Comic Sans MS;
  14. }
  15. .campo_titulo{
  16. text-align: left;
  17. font-size: 10px;
  18. font-family:FreeSans,Verdana,Comic Sans MS;
  19. font-weight: bold;
  20. margin-top: 5px;
  21. margin-left: 5px
  22. }
  23. .campo_titulo_nro{
  24. text-align: left;
  25. font-size: 16px;
  26. font-family:FreeSans,Verdana,Comic Sans MS;
  27. margin-top: 5px;
  28. margin-right: 5px
  29. }
  30. .campo_conteudo{
  31. text-align: left;
  32. font-size: 10px;
  33. font-family:FreeSans,Verdana,Comic Sans MS;
  34. margin-top: 5px;
  35. margin-left: 5px
  36. }
  37. .campo_conteudo_direita{
  38. text-align: right;
  39. font-size: 10px;
  40. font-family:FreeSans,Verdana,Comic Sans MS;
  41. margin-top: 5px;
  42. margin-right: 5px
  43. }
  44. .campo_conteudo_centro{
  45. text-align: center;
  46. font-size: 14px;
  47. font-family:FreeSans,Verdana,Comic Sans MS;
  48. margin-top: 5px;
  49. margin-right: 5px
  50. }
  51. .campo_titulo_nro{
  52. text-align: left;
  53. font-size: 16px;
  54. font-family:FreeSans,Verdana,Comic Sans MS;
  55. margin-top: 5px;
  56. margin-right: 5px
  57. }
  58. .campo_titulo_rodape{
  59. text-align: left;
  60. font-size: 16px;
  61. font-family:FreeSans,Verdana,Comic Sans MS;
  62. margin-top: 5px;
  63. margin-right: 5px
  64. }
  65. .td_padrao{
  66. text-align: left;
  67. font-size: 10px;
  68. font-family:FreeSans,Verdana,Comic Sans MS;
  69. margin-top: 5px;
  70. margin-right: 5px
  71. padding-top: 0px;
  72. padding-bottom: 12px;
  73. }
  74. </style>
  75. </head>
  76. <body>
  77. <table BORDER CELLPADDING=2 CELLSPACING=0>
  78. <tr width="100%" height="30">
  79. <td colspan="3">
  80. <table CELLPADDING=0 CELLSPACING=0>
  81. <tr>
  82. <td width="10%" height="100%"><img src="crt_logo.png" alt="Girl in a jacket" width="100%" height="100%"></td>
  83. <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>
  84. <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
  85. Transporte e a Responsabilidade Civil do Transportador no Transporte Terrestre Internacional de Mercadorias, as quais anulam toda estipulação
  86. 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
  87. Responsabilidad Civil del Porteador en el Transporte Terrestre Internacional de Mercancias, las cuales anulan toda estipulación que se aparte de ellas
  88. en perjuicio del remitente o del consignatario<br>
  89. </p></td>
  90. </tr>
  91. </table>
  92. </td>
  93. </tr>
  94. <tr>
  95. <td rowspan="2" valign="top">
  96. <P class="campo_titulo">1 - Nome e endereço do remetente / Nombre y domicilio de remitente</P>
  97. <P class="campo_conteudo">{{crt->reme_nm_comple}}<br>
  98. {{crt->reme_endere1}}<br>
  99. {{crt->reme_endere2}}<br>
  100. {{crt->reme_endere3}}<br>
  101. {{crt->reme_endere4}}</p>
  102. <p class="campo_conteudo_direita">{{crt->reme_documento}}</p>
  103. </td>
  104. <td valign="top">
  105. <P class="campo_titulo">2 - Número / Número</P>
  106. <P class="campo_conteudo_centro">{{crt->co_numero}}</P>
  107. </td>
  108. </tr>
  109. <tr>
  110. <td valign="top">
  111. <P class="campo_titulo">3 - Nome e endereço do transportador / Nombre y domicilio del porteador</P>
  112. <P class="campo_conteudo">{{crt->transp1}}<br>
  113. {{crt->transp2}}<br>
  114. {{crt->transp3}}</P>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td rowspan="2" valign="top">
  119. <P class="campo_titulo">4 - Nome e endereço do destinatário / Nombre y domicilio del destinatário</P>
  120. <P class="campo_conteudo">{{crt->dest_nm_comple}}<br>
  121. {{crt->dest_endere1}}<br>
  122. {{crt->dest_endere2}}<br>
  123. {{crt->dest_endere3}}<br>
  124. {{crt->dest_endere4}}</P>
  125. <p class="campo_conteudo_direita">{{crt->dest_documento}}</p>
  126. </td>
  127. <td width="50%" height="50px" valign="top">
  128. <P class="campo_titulo">5 - Localidade e país de emissão / Lugar y país de emisión</P>
  129. <P class="campo_conteudo">{{crt->lpe5_cida}}<br>
  130. </td>
  131. </tr>
  132. <tr>
  133. <td width="50%" height="50px" valign="top">
  134. <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>
  135. <P class="campo_conteudo">{{crt->lpp7_cida}}</P>
  136. </td>
  137. </tr>
  138. <tr>
  139. <td width="50%" height="50px" valign="top">
  140. <P class="campo_titulo">6 - Nome e endereço do consignatário / Nombre y domicilio del consignatário</P>
  141. <P class="campo_conteudo">{{crt->cons_nm_comple}}<br>
  142. {{crt->cons_endere1}}<br>
  143. {{crt->cons_endere2}}<br>
  144. {{crt->cons_endere3}}<br>
  145. {{crt->cons_endere4}}</P>
  146. <p class="campo_conteudo_direita">{{crt->cons_documento}}</p>
  147. </td>
  148. <td width="50%" height="50px" valign="top">
  149. <P class="campo_titulo">8 - Localidade, país e prazo de entrega
  150. / Lugar, país y plazo de entrega</P>
  151. <P class="campo_conteudo">{{crt->lppe8_cida}}</P>
  152. </td>
  153. </tr>
  154. <tr>
  155. <td width="50%" height="50px" valign="top">
  156. <P class="campo_titulo">9 - Notificar a / Notificar a</P>
  157. <P class="campo_conteudo">{{crt->noti_nm_comple}}<br>
  158. {{crt->noti_endere1}}<br>
  159. {{crt->noti_endere2}}<br>
  160. {{crt->noti_endere3}}<br>
  161. {{crt->noti_endere4}}</P>
  162. <p class="campo_conteudo_direita">{{crt->noti_documento}}</p>
  163. </td>
  164. <td width="50%" height="50px" valign="top">
  165. <P class="campo_titulo">10 - Transportadores sucessivos / Porteadores sucesivos</P>
  166. <P class="campo_conteudo">{{crt->co_transp_sucess}}</P>
  167. </td>
  168. </tr>
  169. </table>
  170. <table BORDER CELLPADDING=2 CELLSPACING=0>
  171. <tr>
  172. <td class="td_padrao" rowspan="3" width="70%" valign="top">
  173. <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>
  174. <P class="campo_conteudo">(4200,000) SACOS AVEIA PARA RAÇÃO ANIMAL</p>
  175. </td>
  176. <td valign="top">
  177. <P class="campo_titulo">12 - Peso bruto em Kg / Peso bruto em Kg</P>
  178. <P class="campo_conteudo_direita">168.420,000<br>
  179. <P class="campo_conteudo_direita">168.000,000<br>
  180. </td>
  181. </tr>
  182. <tr>
  183. <td valign="top">
  184. <P class="campo_titulo">13 - Volumen em m.cu. / Volume em m.cu.</P>
  185. <P class="campo_conteudo_direita"><br>
  186. </td>
  187. </tr>
  188. <tr>
  189. <td valign="top">
  190. <P class="campo_titulo">14 - Valor / Valor</P>
  191. <P class="campo_conteudo_direita">FCA<br>
  192. <P class="campo_conteudo_direita">21.336,00<br>
  193. <P class="campo_conteudo_direita">US$<br>
  194. </td>
  195. </tr>
  196. </table>
  197. <table BORDER CELLPADDING=2 CELLSPACING=0 width="100%">
  198. <tr>
  199. <td class="td_padrao" width="50%" valign="top" rowspan="2">
  200. <table BORDER RULES=cols width="100%" height="100%">
  201. <tr>
  202. <td class="td_padrao" width="40%" valign="top">
  203. <P class="campo_titulo">15 - Gastos a pagar / Gastos a pagar</P>
  204. <P class="campo_titulo">Frete / Flete</P>
  205. <p class="campo_conteudo">A.GRANDE/JAGUARÃO</p><br>
  206. <p class="campo_conteudo">JAGUARÃO/MELO</p><br>
  207. <P class="campo_titulo">Outros / /otros</P>
  208. </td>
  209. <td valign="top" width="20%">
  210. <P class="campo_titulo">Valor remetente</P>
  211. <P class="campo_titulo">Monto remitente</P>
  212. </td>
  213. <td valign="top" width="10%">
  214. <P class="campo_titulo">Moeda</P>
  215. <P class="campo_titulo">Moneda</P>
  216. </td>
  217. <td valign="top" width="20%">
  218. <P class="campo_titulo">Valor Destinatário</P>
  219. <P class="campo_titulo">Monto Destinatário</P>
  220. <p class="campo_conteudo_direita">540,00</p><br>
  221. <p class="campo_conteudo_direita">2.160,00</p>
  222. </td>
  223. <td valign="top" width="10%">
  224. <P class="campo_titulo">Moeda</P>
  225. <P class="campo_titulo">Moneda</P>
  226. <p class="campo_conteudo_direita">US$</p><br>
  227. <p class="campo_conteudo_direita">US$</p>
  228. </td>
  229. </tr>
  230. </table>
  231. <table width="100%" height="100%">
  232. <tr>
  233. <td class="td_padrao" width="50%" valign="top">
  234. Dois Mil e Setecentos Dolares
  235. </td>
  236. </tr>
  237. </table>
  238. <table width="100%" height="100%">
  239. <tr>
  240. <td class="campo_titulo" width="40%" valign="top">TOTAL</td>
  241. <td class="campo_conteudo_direita" width="20%" valign="top"><b>0,00</b></td>
  242. <td class="campo_conteudo_direita" width="10%" valign="top"><b></b></td>
  243. <td class="campo_conteudo_direita" width="20%" valign="top"><b>2.740,00</b></td>
  244. <td class="campo_conteudo_direita" width="10%" valign="top"><b>US$</b></td>
  245. </tr>
  246. </table>
  247. </td>
  248. <td valign="top" width="40%">
  249. <P class="campo_titulo">16 - Declaração do valor das mercadorias / Declaración del valor de las mercancias</P>
  250. <P class="campo_conteudo">FCA<br>
  251. US$ 15.000,00<br>
  252. Quinze mil dolares</p>
  253. </td>
  254. </tr>
  255. <tr>
  256. <td valign="top" width="50%">
  257. <P class="campo_titulo">17 - Documentos anexos / Documentos anexos</P>
  258. <P class="campo_conteudo">FACTURA COMERCIAL NRO: 165/2020<br>
  259. DUE NRO:</p>
  260. </td>
  261. </tr>
  262. </table>
  263. <table <table BORDER CELLPADDING=2 CELLSPACING=0 width="100%">
  264. <tr>
  265. <td valign="top" width="50%">
  266. <P class="campo_titulo">19 - Valor do frete externo / Monto del flete externo</P>
  267. <P class="campo_conteudo">0,00</p>
  268. </td>
  269. <td valign="top" width="50%">
  270. <P class="campo_titulo">18 - Instrução sobre formalidades de alfândega / Instrucciones sobre formalidades de aduana</P>
  271. <P class="campo_conteudo">DESDE JAGUARÃO - RS - BRASIL / MELO URUGUAY</p>
  272. </td>
  273. </tr>
  274. <tr>
  275. <td valign="top" width="50%">
  276. <P class="campo_titulo">20 - Valor de reembolso contra entrega / Monto de reembolso contra entrega</P>
  277. <P class="campo_conteudo">0,00</p>
  278. </td>
  279. <td rowspan="2" valign="top" width="50%">
  280. <P class="campo_titulo">22 - Declaraçôes e observações / Declaraciones y observaciones</P>
  281. <P class="campo_conteudo">ORIGEM BRASIL / DESTINO: URUGUAY</p>
  282. </td>
  283. </tr>
  284. <tr>
  285. <td valign="top" width="50%">
  286. <P class="campo_titulo">21 - Nome e assinatura do remetente ou seu representante / Nombre y firma del remitente o su representante</P>
  287. <P class="campo_conteudo">--- x ---</p><br>
  288. <p class="campo_titulo" valign="bottom">Data / Fecha</p>
  289. </td>
  290. </tr>
  291. <tr>
  292. <td valign="top">
  293. <p class="campo_titulo">As mercadorias consignadas neste Conhecimento de Transporte foram recebidas pelo transportador
  294. aparentemente em bom estado, sob as condições gerais que figuram no verso<br>
  295. Las mercancías consignadas en esta Carta de Porte fueron recebidas por el porteador aparentemente
  296. en buen estado, bajo las condiciones generales que fuguran al dorso.</p>
  297. <P class="campo_titulo">23 - Nome, assinatura e carimbo do transportador ou seu representante / Nombre, firma y sello del porteador o su representante</P>
  298. <p class="campo_conteudo_centro">COOPERATIVA DE TRANSP. AUTÔNOMO DO SUL</p>
  299. <p class="campo_conteudo_centro">22/04/2020</p>
  300. <p class="campo_titulo">Data / Fecha</p>
  301. </td>
  302. <td valign="top" width="50%">
  303. <P class="campo_titulo">24 - Nome e assinatura do destinatário ou seu representante / Nombre y firma del destinatario o su representante</P>
  304. <P class="campo_conteudo">--- x ---</p>
  305. <p class="campo_titulo" valign="bottom">Data / Fecha</p>
  306. </td>
  307. </tr>
  308. </table>
  309. <p class="campo_conteudo">1º Original - Aduana Partida -- Primera via alfandega de partida.</p>
  310. </body>
  311. </html>
  312. <!--[/main]-->
  313. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


JP

Estou enfrentando o mesmo problema. O HTML está perfeito, porém o PDF ficar totalmente desconfigurado.