Crear documento de Word usando PHP en Linux [closed]

6 minutos de lectura

¿Cuáles son las soluciones disponibles para que PHP cree documentos de Word en un entorno Linux?

Crear documento de Word usando PHP en Linux closed
serguéi kornílov

documentos de Word reales

Si necesita producir documentos de Word “reales”, necesita un servidor web basado en Windows y automatización COM. te lo recomiendo mucho articulo de joel en esta asignatura.

falso Encabezados HTTP para engañar a Word para que abra HTML sin procesar

Una alternativa bastante común (pero poco confiable) es:

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment; filename=document_name.doc");

echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";
echo "<b>Fake word document</b>";
echo "</body>";
echo "</html>"

Asegúrese de no utilizar hojas de estilo externas. Todo debe estar en el mismo archivo.

Tenga en cuenta que esto hace no enviar un documento de Word real. Simplemente engaña a los navegadores para que lo ofrezcan como descarga y por defecto a un .doc extensión de archivo. Las versiones anteriores de Word a menudo pueden abrir esto sin ningún mensaje de advertencia/seguridad, y solo importan el HTML sin formato a Word. PHP enviando enviando eso engañoso Content-Type El encabezado no constituye una conversión de formato de archivo real.

  • El problema con este enfoque es que no puedo incrustar un gráfico en mi documento.

    aprendiz de tecnología

    24 de septiembre de 2008 a las 5:46

  • Si necesita producir documentos de Word “reales”, necesita un servidor web basado en Windows. Recomiendo encarecidamente el artículo de Joel sobre este tema: joelonsoftware.com/items/2008/02/19.html

    – Serguéi Kornílov

    24 de septiembre de 2008 a las 12:38

  • Para una explicación más elaborada de la técnica mencionada anteriormente, consulte este artículo: codeproject.com/kb/office/Wordyna.aspx

    – mvark

    1 de febrero de 2011 a las 2:30


  • Si desea usar lo anterior y tiene algunos divs difíciles de manejar (para mí era un gráfico de barras basado en CSS), puede usar este código para generar una captura de pantalla del div, subirlo al servidor y modificar su html para incluir esa imagen – kubilayerdogan.net/?p=304

    – Dave Hilditch

    14 de julio de 2013 a las 14:17

  • esto supera a los creadores de documentos o tener que usar una función interna para formatear páginas.

    – unixmiah

    18 de diciembre de 2014 a las 18:24

Crear documento de Word usando PHP en Linux closed
Altamente Irregular

Palabra PHP puede generar documentos de Word en formato docx. También puede usar un archivo .docx existente como plantilla: las variables de plantilla se pueden agregar al documento en el formato ${varname}

Tiene una licencia LGPL y los ejemplos que vienen con el código me funcionaron muy bien.

  • Esta es la respuesta 🙂 El mismo lugar tiene bibliotecas para generar documentos de Excel y PowerPoint.

    – Chris Baker

    10/10/2012 a las 14:37


  • De acuerdo – esta es la respuesta correcta.

    – Félix Eva

    2 de diciembre de 2013 a las 12:24

  • Encontré un enlace actualizado de Palabra PHP y PHPOficina en GitHub.

    – j2gl

    10 de agosto de 2015 a las 3:14


Plantillas de OpenOffice + interfaz de línea de comandos OOo.

  1. Cree manualmente una plantilla ODT con marcadores de posición, como [%value-to-replace%]
  2. Al instanciar la plantilla con datos reales en PHP, descomprima la ODT de la plantilla (es un XML comprimido) y ejecute contra el XML el reemplazo textual de los marcadores de posición con los valores reales.
  3. Cierra el ODT hacia atrás
  4. Ejecute la conversión ODT -> DOC a través de la interfaz de línea de comandos de OpenOffice.

Hay herramientas y bibliotecas disponibles para facilitar cada uno de esos pasos.

Puede ser que eso ayude.

Con mucho, la forma más fácil de crear archivos DOC en Linux usando PHP es con el componente Zend Framework phpLiveDocx.

Del sitio web del proyecto:

“phpLiveDocx permite a los desarrolladores generar documentos mediante la combinación de datos estructurados de PHP con una plantilla, creada en un procesador de textos. El documento resultante se puede guardar como un archivo PDF, DOCX, DOC o RTF. El concepto es el mismo que con la combinación de correspondencia .”

Crear documento de Word usando PHP en Linux closed
Skrol29

OpenTBS Puede crear documentos dinámicos DOCX en PHP utilizando la técnica de plantillas.

No se necesitan archivos temporales, ni líneas de comando, todo en PHP.

Puede agregar o eliminar imágenes. El documento creado se puede producir como una descarga HTML, un archivo guardado en el servidor o como contenido binario en PHP.

También puede fusionar archivos OpenDocument (ODT, ODS, ODF, …)

http://www.tinybutstrong.com/opentbs.php

Siguiendo la respuesta de Ivan Krechetov, aquí hay una función que combina correspondencia (en realidad, solo reemplaza texto simple) para docx y odt, sin la necesidad de una biblioteca adicional.

function mailMerge($templateFile, $newFile, $row)
{
  if (!copy($templateFile, $newFile))  // make a duplicate so we dont overwrite the template
    return false; // could not duplicate template
  $zip = new ZipArchive();
  if ($zip->open($newFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
    return false; // probably not a docx file
  $file = substr($templateFile, -4) == '.odt' ? 'content.xml' : 'word/document.xml';
  $data = $zip->getFromName($file);
  foreach ($row as $key => $value)
    $data = str_replace($key, $value, $data);
  $zip->deleteName($file);
  $zip->addFromString($file, $data);
  $zip->close();
  return true;
}

Esto reemplazará
[Person Name] con Mina y [Person Last Name] con Mooo:

$replacements = array('[Person Name]' => 'Mina', '[Person Last Name]' => 'Mooo');
$newFile = tempnam_sfx(sys_get_temp_dir(), '.dat');
$templateName="personinfo.docx";
if (mailMerge($templateName, $newFile, $replacements))
{
  header('Content-type: application/msword');
  header('Content-Disposition: attachment; filename=" . $templateName);
  header("Accept-Ranges: bytes');
  header('Content-Length: '. filesize($file));
  readfile($newFile);
  unlink($newFile);
}

Tenga en cuenta que esta función puede corromper el documento si la cadena a reemplazar es demasiado general. Intente usar cadenas de reemplazo detalladas como [Person Name].

1646960891 639 Crear documento de Word usando PHP en Linux closed
Mr. Shiny and New 安宇

El proyecto Apache tiene una biblioteca llamada punto de interés que se puede utilizar para generar archivos de MS Office. Es una biblioteca de Java, pero la ventaja es que puede ejecutarse en Linux sin problemas. Esta biblioteca tiene sus limitaciones, pero puede hacer el trabajo por usted y probablemente sea más fácil de usar que intentar ejecutar Word.

Otra opción sería OpenOffice pero no puedo recomendarlo exactamente ya que nunca lo he usado.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad