Convertendo os caracteres especiais para o seu respectivo código ASCII

Boa tarde a todos,

Estava usando a biblioteca TCPDF para gerar relatórios em PDF pelo PHP e percebi que diversos caracteres estavam sendo perdidos ou truncados na geração do arquivo PDF. Procurando entender um pouco, percebi que a biblioteca era um pouco ‘sensível’ aos caracteres informados uma vez porque a mesma geralmente foi testada com conteúdos no idioma inglês.

Para resolver isso me bati um tempo até achar uma solução pelo próprio PHP para ajustar o conteúdo String que eu passava para a biblioteca renderizar em um formato em que todos os caracteres fossem mantidos, assim eu fiz a função abaixo:

Conclusão

Como o conteúdo final que eu quero seja em HTML o retorno da função será em um HTML normal, apenas os caracteres especiais estarão codificados, mas estes serão convertidos pelo browser ou pela biblioteca PDF que estou utilizando.

Em alguns testes que eu realizei e também como eu apliquei esta solução em um sistema que eu desenvolvi, me lembro de alguns casos em que era gerada uma ficha para comprovação do cadastro e ao negritar o nome do usuário com as tags B ou STRONG, a biblioteca simplesmente cortava o conteúdo nesse ponto, sem motivo algum e também nenhum erro da conversão da minha função, nunca entendi o porque, era somente em alguns casos mas não consegui sacar o real motivo disso.

Funções de referência

htmlspecialchars_decode

get_html_translation_table

Bom, é isso, um abraço a todos e até a próxima.

Blog PHP
  • Estou com o mesmo problema, poderia, por favor me falar onde você aplicou essa função? Muito obrigado.

    • Boa tarde,
      Não estou mais trabalhando com PHP e pelo que me lembro, na biblioteca FPDF tinha um método ‘setHTML’ ou ‘setContent’ alguma coisa assim, ou seja, onde você for passar o conteúdo HTML você usa pela função que eu postei no artigo.

      $string = "

      Olá mundo, este é um teste.

      ";
      //...
      $fpdf->setHtml( convert_html_content($string) );
      //...