Exportar a RTF con PHP e incluir Imagenes

Hace unos días estuve viendo como exportar una pagina HTML al formato WORD, por lo que al buscar informacion al respecto la mayoria indicaba que era mejor exportarlo al formato RTF por lo cual, empeze a ver como exportarlo a este formato, en esta busqueda me encontre con dos post bastante interesantes al respecto.

  1. Exportar a RTF
    En este post se hace mencion a como exportar al formato mencionado
  2. Exportar con tablas RTF
    En este post se hace menciona como exportar incluyendo tablas en nuestro documento

Finalmente lo exporte correctamente, pero me abria el documento en «Vista Diseño Web» al abrirlo con Microsoft Word, al estar exportando un Curriculum no es muy «bonito» que se abra en esta vista, por lo cual tuve que buscar otra alternativa, aqui fue donde me encontre con este post

Crear word rtf con php

Asi que ocupe la misma idea, cree un documento RTF que me serviria de plantilla, posteriormente hice que mi aplicacion leyera este documento, y reemplazara los valores por los que yo le pasaba, lo unico que debo recalcar en este punto es que los tags que se estan creando en nuestra plantilla deben ser en mayuscula

EJ: #*CIUDAD*#

De lo contrario no los reemplazara.

Una vez finalizado esto mi documento efectivamente se exportaba a RTF y se mostraba en «vista normal», lo cual ya era mucho mas bonito visiblemente… pero como siempre, faltaba un pequeño detalle… claro… nuestro curriculum tiene una imagen y aqui fue donde empezo otra odisea… ¿como exportamos una imagen en formato RTF? en primera instancia funcionaba porque nuestro documento era un HTML, pero al estar ocupando una plantilla no podemos insertarle un «img» o ponerle un link con la imagen, ya que WORD convierte las imagenes para reconocerlas, asi que luego de buscar y buscar encontre una funcion (que no recuerdo la pagina por eso no la coloco), asi que la limpie y la adapte a mis necesidades, la funcion es

//Imagen, la convertimos para RTF
private function imageRTF($link, $alto = 120, $ancho = 120)
{
   $fp = fopen($link,"rb");
   $out = "";

   while (!feof($fp))
   {
      $out .= bin2hex(fread($fp, 64)) . "\n";
   }
   fclose($fp);

   //Verificamos la extension que posee
   switch(substr($link, (strlen($link) - 3), 3))
   {
      case "png";
      case "gif":
         $tipo = "pngblip";
         break;

      case "bmp":
         $tipo = "dibitmap0";
         break;

      default:
         $tipo = "jpegblip";
         break;
   }

   $link = "{\\*\\shppict\n{\\pict\\".$tipo."\\picw".$alto."\\pich".$ancho."\\picwgoal".($alto * 15)."\\pichgoal".($ancho * 15);
   $link .= "\\bliptag112233{\\*\\blipuid" . sprintf("%032x", "112233") . "}\n";
   $link .= $out;
   $link .= "}\n}";

   return $link;
}

En mi caso le pasaba los valores de altura y anchura ya que tenia varias imagenes, tambien dejar en claro que el valor «112233»

$link .= "\\bliptag112233{\\*

Es un valor cualquiera.

Y con esto, ya esta funcionando nuestra imagen convertida al formato que entiende Word.

Atte, Ariel