Foros del Web » Programando para Internet » PHP »

PHP y RTF

Estas en el tema de PHP y RTF en el foro de PHP en Foros del Web. Hola, tengo un problema con un RTF que creo y saco por PHP. El tema es el siguiente, en una página, voy creando el fichero ...
  #1 (permalink)  
Antiguo 23/10/2003, 07:48
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta PHP y RTF

Hola,

tengo un problema con un RTF que creo y saco por PHP.
El tema es el siguiente, en una página, voy creando el fichero RTF:

Código PHP:
$filename "C:\\Sugrec\\PHP\\PLANTILLA.rtf";
$fp fopen ($filename"w+");
fputs($fp,"{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang3082\\deflangfe3082{\\fonttbl{\\f0\\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\f1\\fswiss\\fcharset0\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n");
fputs($fp,"{\\f2\\fmodern\\fcharset0\\fprq1{\\*\\panose 02070309020205020404}Courier New;}{\\f3\\froman\\fcharset2\\fprq2{\\*\\panose 05050102010706020507}Symbol;}{\\f14\\fnil\\fcharset2\\fprq2{\\*\\panose 05000000000000000000}Wingdings;}\n");
fputs($fp,"{\\f172\\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\f173\\froman\\fcharset204\\fprq2 Times New Roman Cyr;}{\\f175\\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\f176\\froman\\fcharset162\\fprq2 Times New Roman Tur;}\n");
etc...
etc...
etc... 
Tras haber acabado de meter todo el código del RTF, cierro el fichero:
Código PHP:
fclose($fp); 
y a continuación saco el fichero RTF:
Código PHP:
Header("Content-type: application/msword");
Header("Content-Disposition; inline, filename=PLANTILLA.rtf");
readfile('PLANTILLA.rtf'); 
El caso es que el fichero ocupa como un mega o así, pero lo curioso es que me sale en blanco, como si fuera un fichero nuevo.

¿A alguien le ha pasado esto alguna vez?¿Será a lo mejor que las cabeceras las indico mal, y por eso me sale en blanco?
Sería de mucha ayuda vuestras respuestas/consejos.

Muchas gracias de antemano,
saludos, Ay0.
  #2 (permalink)  
Antiguo 23/10/2003, 08:07
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

¿Has visto que ha creado el fichero en el servidor? Y pon la ruta completa tambien en el readfile():
Código PHP:
readfile("C:\\Sugrec\\PHP\\PLANTILLA.rtf"); 
Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 23/10/2003, 08:13
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Si, por eso no tengo problema, incluso lo abro yo mismo bajo un explorador, en este caso el de windows y me lo saca en blanco tb.

Es como si el código estuviese escondido... ya que cuando lo abro con el Notepad o similar, veo el código RTF que he metido.

Gracias.
  #4 (permalink)  
Antiguo 23/10/2003, 08:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hombre, es que el navegador no entiende el formato RTF. Mira a ver el codigo fuente de la pagina generada. Hay veras todos el contenido.

¿O quieres que te salga el dialogo de "Guardar o abrir" del navegador? Entonces prueba a cambiar el inline por attachment.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 23/10/2003, 08:40
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
La ventana de Abrir/Guardar y tal ya me sale.
Me expliqué mal, me refiero, a que abro el fichero directamente con el Word desde el explorador de windows, no el IE, y me sale en blanco.
  #6 (permalink)  
Antiguo 23/10/2003, 09:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Vale, entonces es problema que se "corrompe" (suponiendo que lo que mandas en el fputs() es correcto).

Bien, veo que es en un servidor windows. Entonces prueba a abrir el fichero para escritura binaria con "wb+". Por lo que pone el manual en fwrite() (www.php.net/fwrite) en windows es necesario para grabar ficheros binarios. Y los rtf, word, PDF y semejantes son binarios.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 23/10/2003, 09:30
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Bueno, por lo que veo, abrirlo en modo binario, no funciona.

Cuando dices que se "corrompe", tendría algo que ver, que salgan algunos Notice como por ejemplo:

Código PHP:
NoticeUndefined variableFRegistroSal in C:SugrecPHPcomunicacion.php on line 10459 
Gracias.
  #8 (permalink)  
Antiguo 23/10/2003, 09:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Si. Supongo que entonces el fichero generado con contiene exactamente lo que querias escribir.

¿Esa linea es un fputs()? ¿Usas esa variable que dice que no esta definida? Es que ahora me fijo qu epones las cadenas entre comillas dobles ("). Entonces si en esa cadena aparece un $, lo va a tomar como si intentanses poner una variable. Si no pones variables dentro de las cadenas, usa comillas simples ('). Aunque en este caso debes evitar tener ese caracter dentro de la cadena.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 24/10/2003, 03:39
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Si, esas son variables que utilizo, ya el "problema" de los Notice lo arreglé, pero me sigue saliendo en blanco el RTF. No se que hacerle ya
  #10 (permalink)  
Antiguo 27/10/2003, 03:01
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Please, help me
  #11 (permalink)  
Antiguo 27/10/2003, 03:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
A ver, prueba a poner una cabecera que indique la longitud del fichero:
Código PHP:
header("Content-Length: ".filesize("C:\\Sugrec\\PHP\\PLANTILLA.rtf")); 
Segun ponen en el manual a veces esto evita que se corrompan los datos.

Tambien podrias comparar el fichero que te genera la web con el contenido que deberia generar. Si haces una comparacion binaria, veras en que se corrompe.

Como no conozco el formato RTF, no se cuales pueden ser los puntos conflictivos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 28/10/2003, 07:43
Avatar de Ay0
Ay0
 
Fecha de Ingreso: enero-2002
Ubicación: Tenerife
Mensajes: 66
Antigüedad: 15 años, 11 meses
Puntos: 0
Pues eso tampoco me ha funcionado. De todas formas, muchas gracias por todo josemi.

Saludos.
  #13 (permalink)  
Antiguo 28/10/2003, 07:55
Avatar de ProgramacionWeb  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 176
Antigüedad: 14 años, 6 meses
Puntos: 2
Abre el archivo descargado con notepad y examina el código rtf a ver que falla, si no ves el problema postea el codigo generado para que podamos ver el problema.

Si necesitas ayuda sobre creacion de archivos rtf con php visita este enlace
__________________
Foros en los que participo:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:09.