Creación de un archivo .doc con PHP

Published on : 18 febrero, 2013
19 comments

Llega tu cliente y no quiere que le generes un PDF, sino un archivo DOC para abrirlo cómodamente con su Word o herramienta similar. ¿Cómo se hace eso? Muy fácil, este código os genera un archivo con texto dentro y lo descarga a tu equipo.

<?php
header(«Content-type: application/vnd.ms-word»);
header(«Content-Disposition: attachment;Filename=documento.doc»);

echo «<html>»;
echo «<meta http-equiv=\»Content-Type\» content=\»text/html; charset=Windows-1252\»>»;
echo «<body>»;
echo «<b>Mi primer documento</b><br />»;
echo «Aqu&iacute; va todo el texto que querais, en formato HTML</body>»;
echo «</html>»;
?>

 

** El conjunto de caracteres o charset puede ser también UTF-8, si esa es nuestra codificación en la web, claro

19 comments

  1. Silvia Suria Torres
    Roberto Ovalle

    Funciona muy bien, pero tengo una duda, estoy haciendo una carta tipo y necesito forzar un salto de página, ¿se puede hacer?


    1. Silvia Suria Torres

      Buena pregunta. En principio sería muy difícil calcular el salto, a no ser que siempre se usara la misma impresora, y el mismo texto exáctamente, lo que nos permitiría calcular el salto más fácilmente, ya que podríamos hacer algunas pruebas y contar las líneas a insertar para hacer el salto.

      Otra solución podría consistir en generar varios documentos .doc para la carta.

      Espero que esto te sirva.


      1. Silvia Suria Torres
        José Luis

        Buenas,

        Intenta poner un chr(12) = Salto de línia (FF) en código ASCII que lo interpreta a la perfección.

        ­Un saludo


  2. Silvia Suria Torres

    Como Hago para escribir en el Encabezado del documento de Word y también en el pie de Pagina, aunque me es mas Urgente lo del encabezado para poder meter ahí la imagen del membrete de la hoja, Agradezco su colaboración.


    1. Silvia Suria Torres

      Dado que se puede definir estilos, yo probaría a utilizar un «style=’text-align: justify;'» en la etiqueta o incluso en el body.


  3. Silvia Suria Torres

    tengo una tabla y necesito k la misma se repita varias veces, es decir una por cada pagina con diferendes datos, como puedo hacerlo.


    1. Silvia Suria Torres

      Como ya comenté a Roberto Ovalle, habría que calcular las líneas que entran en una página e ir contándolas para hacer el salto de línea al cabo de esas líneas. Date cuenta que lo que construyes es una página HTML, con lo que tienes que controlar tú el salto de página.


  4. Silvia Suria Torres

    hola gente, que tal, muy bueno y funciono espectacular
    podrian decirme como hago para apaisar o, que es lo mismo, poner en horizontal la pagina
    gracias y saludos


    1. Silvia Suria Torres

      Realmente no hay que hacer nada en el código en PHP, simplemente tienes que poner en Word la configuración de página en apaisado.


    1. Silvia Suria Torres

      No Ángel, este artículo es para crear un .doc, porque el formato que tú dices, el .docx es distinto y no se explica en este artículo cómo se genera. El .docx se basa en Open XML, nada que ver con .doc


  5. Silvia Suria Torres
    Wilfer Daniel Ciro Maya

    Se pueden definir los estilos css perfectamente? necesito el tamaño de mi imágen, que se reduzca, gracias


    1. Silvia Suria Torres

      Si el CSS lo embebes dentro del HTML, sí, se puede. Yo probaría antes con el height y width de la propia etiqueta . Espero que te sirva la solución.


XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.