Tema: COM y PHP
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2005, 21:46
ray_rockus
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 20 años, 6 meses
Puntos: 0
COM y PHP

Antes que nada un saludo.
Sucede que necesito generar un docuemnto de Word partiendo de una plantilla, y de ahi solo debo rellenar algunos campos.
Estoy usando objetos COM para tal efecto ya que mi aplicacion trabaja sobre plataforma Windows XP, usando un código que obtuve de PHPBuilder.com:
http://www.phpbuilder.com/columns/yunus20031124.php3

Este es mi código:

$word = new COM("word.application") or die("Unable to instanciate Word");
$template_file = "C:\word_template.doc";
$word->Documents->Open($template_file);
$bookmarkname = "\"ciudadano\"";
if ($word->ActiveDocument->Bookmarks->Exists($bookmarkname)){
$word->ActiveDocument->Bookmarks->Item[$bookmarkname]->Range->Text="Arturo Lara";
}
$new_file = "C:/php_word.doc";
$word->ActiveDocument->SaveAs($new_file);
$word->Quit();
$word->Release();
$word = null;
header('Content-Type: application/msword');

mi código es similar pero no me funciona y tengo motivos para pensar que ha de ser porke no tengo configurado bien algo de PHP o de Apache, ya que probe ese código en Delphi y en Visual Basic y exceptuando las diferencias propias de cada lenguaje, si obtengo el resultado ke deseo.

Este es mi código en Delphi:

procedure TForm1.Button1Click(Sender: TObject);
var
Word,bookmark,range :Variant;
begin
template:='C:\word_template.doc';
Word:=CreateOleObject('Word.Application');
screen.Cursor:=crHourGlass;
try
Word.Documents.Open(template);
Word.visible:=true;
if ( (Word.ActiveDocument.Bookmarks.Exists('ciudadano') = true))then
begin
Word.ActiveDocument.Bookmarks.Item('ciudadano').Ra nge.Text:='Arturo Lara';
end
else
begin
Word.Selection.Typetext('Hola');
end;
Word.ActiveDocument.SaveAs('C:\delphito_word_job.d oc');
Word.ActiveDocument.Printpreview;
Word.Quit;
finally
Word.Quit;
end;
screen.Cursor:=crdefault;
end;

Ahora bien antes de que mencionen ke tal vez el probelam del script de PHP es ke le doy una ruta bya intenté probar poniendo la plantilla en el mismo lugar donde esta el script y PHp me marca ke no lo puede abrir, y si le pongo una ruta si lo abre pero de ahi no pasa el script se queda cargando y no termina, como si se estuviera ciclando o algo asi.

Ahora bien por el momento Delphi me saca de este apuro pero me gustaría mejor hacerlo desde PHP ya que tengo un futuro proyecto de una palicación para una Intranet que requerira que reportee en formatos propietarios de Microsoft (ya ven que hay gente que no quiere usar PDF que son más prácticos que los DOC).

Ahora bien si encontraron el error les agradecería también me orientasen sobre como podria guardarlo en la BD (de MySQL) directamente en formato binario, no se si sea del mismo proceso que para una imagen.

De antemano gracias por la ayuda y por el tiempo que invirteiron en leer todo el rollo... muchas gracias..